【问题标题】:Function with parameter in OpenqueryOpenquery中带参数的函数
【发布时间】:2012-08-16 21:56:15
【问题描述】:

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

【问题讨论】:

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

标签: tsql function parameters return openquery


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多