Tsql Openquery中带参数的函数

Tsql Openquery中带参数的函数,tsql,function,parameters,return,openquery,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 + ' '')'

我正在尝试创建一个函数,该函数在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

在这种情况下,不能使用带有返回值的RETURN语句。

我认为您不能在函数中使用这种类型的调用(
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)

使用存储过程而不是函数。