Openquery中带参数的函数

时间:2012-08-16 21:56:15

标签: tsql function parameters return openquery

我正在尝试创建一个在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语句。

1 个答案:

答案 0 :(得分:0)

我认为你不能在函数中使用这种类型的调用(openquery)。

用户定义的函数不允许使用动态SQL,这被认为是动态SQL。

所以我相信你唯一的选择是创建一个存储过程来返回该值。或者在内联创建临时表并在使用它之前在存储过程中使用它。

以下是other limitations of UDFs

的文章

您必须在使用之前拨打电话:

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)