0

我正在尝试创建一个使用 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

并且 get 不能在此上下文中使用带有返回值的 RETURN 语句。

4

1 回答 1

1

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

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

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

这是一篇具有UDF 其他限制的文章

您必须在使用它之前进行该调用:

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)
于 2012-08-16T22:06:04.687 回答