我正在尝试创建一个在OpenQuery中使用该参数的函数,如下所示:
CREATE FUNCTION fnMyFunction (@myVar INT) RETURNS TABLE AS
DECLARE @Query VARCHAR(2000)
SET @Query = 'SELECT * FROM OPENQUERY(myLinkedServer, ''SELECT num FROM tblMyTable WHERE
myTableNum = '+ @myVar + ' '')'
RETURN EXEC(@Query)
Openquery应该只返回一个整数。我试过了
...RETURNS INT AS
...OPENQUERY...
DECLARE @num INT
SET @num = 0
@num = EXEC(@Query)
RETURN @num
并且在此上下文中不能使用带有返回值的A RETURN语句。
答案 0 :(得分:0)
我认为你不能在函数中使用这种类型的调用(openquery
)。
用户定义的函数不允许使用动态SQL,这被认为是动态SQL。
所以我相信你唯一的选择是创建一个存储过程来返回该值。或者在内联创建临时表并在使用它之前在存储过程中使用它。
的文章您必须在使用之前拨打电话:
DECLARE @Query VARCHAR(2000)
DECLARE @myVar INT
SET @myVar = yourValue
SET @Query = 'SELECT * FROM OPENQUERY(myLinkedServer, ''SELECT num FROM tblMyTable WHERE
myTableNum = '+ @myVar + ' '')'
EXEC(@Query)