【问题标题】:How to use openquery in stored procedure?如何在存储过程中使用 openquery?
【发布时间】:2020-10-10 07:25:39
【问题描述】:

我必须将参数传递给链接服务器,我必须使用开放式查询,我的代码如下:

DECLARE @TSQL varchar(8000), @VAR char(2)

SELECT @VAR = 'CA'

SELECT @TSQL = 'SELECT * INTO newtable FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')'
EXEC (@TSQL)

现在我需要在存储过程中使用它,但我得到一个模棱两可的语法错误。如何在存储过程中使用它?

【问题讨论】:

  • 为什么要使用动态 SQL?为什么不只是SELECT * INTO NewTable FROM OPENQUERY(MyLinkedServer, 'SELECT * FROM pubs.dbo.authors WHERE state = '+ QUOTENAME(@Var, '''') + '');
  • 因为我没有使用 pubs.dbo.authors,而是使用了一个函数,例如: authors ( null , ''''' + @ToDate + ''''' , null, null,null,null ,null, null ,null,null,null,null,null,3, null )
  • 发布完整的错误消息 - 全部。而且您无法在不查看代码创建的内容的情况下调试代码创建的动态 sql,对吗?所以把@TSQL的内容贴出来自己查吧。

标签: sql-server stored-procedures openquery


【解决方案1】:

试试这个:

CREATE PROCEDURE [Name]

AS

DECLARE @TSQL varchar(8000), @VAR char(2)
SET @VAR = 'CA'

SET @TSQL = 'SELECT * INTO newtable FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ' + @VAR + ' '')'

EXEC (@TSQL)

【讨论】:

    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多