簡體   English   中英

如何在 OPENQUERY 中使用 Declare 變量

[英]How can I use a Declare variable inside OPENQUERY

我在 SQL Server 2019 中有以下 SQL 查詢

DECLARE @CoustomerCode nvarchar(255)

set @CoustomerCode = 1165

select * from tblCustomer CC 
outer apply(SELECT * FROM OPENQUERY ([132.20.28.36], 'SELECT * FROM RepServiceDB.dbo.Info('+ @CoustomerCode +')' ) as SR ) HH
where CC.fldCustomerCode = @CustomerCode

SQL 錯誤:

'+' 附近的語法不正確。

如果必須使用OPENQUERY ,則必須使用動態 SQL ,因為調用中的查詢必須是文字:

DECLARE @SQL nvarchar(MAX),
        @CRLF nchar(2) = NCHAR(13) + NCHAR(10);

DECLARE @CoustomerCode nvarchar(255);
SET @CoustomerCode = N'1165'; --This is an nvarchar, so you should define it as one.

SET @SQL = N'SELECT *' + @CRLF +
           N'FROM dbo.tblCustomer CC ' + @CRLF +
           N'     OUTER APPLY(SELECT * FROM OPENQUERY ([132.20.28.36], ''SELECT * FROM RepServiceDB.dbo.Info('''''+ REPLACE(@CoustomerCode,'''','''''''''') +''''')'' ) as SR ) HH' + @CRLF +
           N'WHERE CC.fldCustomerCode = @CoustomerCode;';

EXEC sys.sp_executesql @SQL, N'@CoustomerCode nvarchar(255)',@CoustomerCode;

而且,是的,我確實在語句中用四個單引號 ( ' ) 替換了單引號 ( ' )。 這是因為它是文字字符串,在文字字符串中,在文字字符串中,所以需要雙 escaping。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM