Tsql Openquery中带参数的函数
我正在尝试创建一个函数,该函数在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 + ' '')'
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)
使用存储过程而不是函数。