如何在存储过程中使用openquery?

问题描述

我必须将参数传递给链接服务器,并且必须使用开放式查询,我的代码如下:

DECLARE @Tsql varchar(8000),@VAR char(2)

SELECT @VAR = 'CA'

SELECT @Tsql = 'SELECT * INTO newtable FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')'
EXEC (@Tsql)

现在,我需要在存储过程中使用它,但是出现了模棱两可的语法错误。如何在存储过程中使用它?

解决方法

尝试一下:

CREATE PROCEDURE [Name]

AS

DECLARE @TSQL varchar(8000),@VAR char(2)
SET @VAR = 'CA'

SET @TSQL = 'SELECT * INTO newtable FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ' + @VAR + ' '')'

EXEC (@TSQL)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...