SQL Server:使用双openquery

时间:2019-07-09 06:47:03

标签: sql-server parameters openquery

我编辑一个包含双openquery的查询。但是在此查询中,我需要添加一个参数。因为我从未使用过SQL Server,所以不知道如何在查询中添加此参数。

查询如下:

SELECT * 
FROM openquery([1STCONNECTOR],'
    SELECT * 
    FROM openquery([2NDCONNECTOR],''
        SELECT *
        FROM table
        WHERE field = ''''PARAM'''''
    )'
)

首先,我尝试过:

SELECT * 
FROM openquery([1STCONNECTOR],'
    SELECT * 
    FROM openquery([2NDCONNECTOR],''
        SELECT *
        FROM table
        WHERE field = ''''' + @PARAM + '''''
    )'
)

但是它不起作用。

然后,我尝试将查询分开:

SET @query = 'SELECT *
FROM table
WHERE field = ' + @PARAM + ')'

SELECT * 
FROM openquery([1STCONNECTOR],'
    SELECT * 
    FROM openquery([2NDCONNECTOR],'''+ @VAR +''')')

但是它也不起作用。

返回的错误与以下语法有关:

Unexpected "+", expected ")"

另一种尝试,类似于先前的尝试:

SET @query1 = 'SELECT * FROM openquery([2NDCONNECTOR],' + @query2 + ')' 

SET @query2 = 'SELECT * from BPCS61F.ITH WHERE field = ' + @PARAM + ')'

SELECT * FROM openquery([1STCONNECTOR], @query1)

在这里,错误出现在第三个查询上,然后说:

Syntax error close of "@query1". Expected STRING, or TEXT_LEX

@query1@query2均为varchar(max)

很抱歉,如果语法不符合SQL Server语言的约定,我正在学习。

谢谢你, 扫罗

0 个答案:

没有答案