Sql ';字符串';动态查询中的错误

Sql ';字符串';动态查询中的错误,sql,sql-server,Sql,Sql Server,下面的脚本给出了一个错误: 味精102,第15级,状态1,第6行 “000000”附近的语法不正确 味精105,第15级,状态1,第26行 字符串“和M.ACTIVE_FLAG=1”后的未关闭引号 我的代码: DECLARE @Command NVARCHAR(MAX); SET @Command = 'SELECT S.VOUCHER, '+ ''''+'1'+''''+ ' UPLOAD_TYPE, '+ ''''+'UP0000001'+

下面的脚本给出了一个错误:

味精102,第15级,状态1,第6行
“000000”附近的语法不正确

味精105,第15级,状态1,第26行
字符串“和M.ACTIVE_FLAG=1”后的未关闭引号

我的代码:

DECLARE @Command NVARCHAR(MAX);

SET @Command = 'SELECT 
        S.VOUCHER, '+
        ''''+'1'+''''+ ' UPLOAD_TYPE, '+
        ''''+'UP0000001'+''''+ ' UPLOAD_ID,
        S.BRANCH BRANCH,
        --HARDCODE SEGMENT 
        CASE WHEN S.SEGMENT= ''
        THEN '+''''+'000000'+''''+'
        ELSE S.SEGMENT 
        END SEGMENT,
        M.SMART_TOC TOC,
        1 VERSION,
        S.ACCOUNT, 
        S.TYPE,
        M.SMART_ACCOUNT_ID ACCOUNT_ID,
        M.SMART_ACCOUNT_DESCRIPTIONS,
        S.YEAR YEAR,
        S.MONTH MONTH, 
        S.DEBIT *-1 DEBIT_AMOUNT,
        S.CREDIT CREDIT_AMOUNT,'+
        ''''+'DIRECT.UPLOAD'+''''+ ' UPLOADED_BY,
        GETDATE() LAST_UPDATE
    FROM #JM_DATA S,AAD_MASTER.DBO.MASTER_COA M
    WHERE 
        S.ACCOUNT = M.ACCOUNT_ID
        AND S.TYPE = M.TYPE
        AND M.IS_PARENT='+''''+'0'+''''+' AND M.ACTIVE_FLAG=1'

EXEC sp_executesql @Command; 
试试这个-

CASE当S.SEGMENT=''
不正确时,应为
CASE当S.SEGMENT=
''”
。 识别问题的最佳方法是使用
print@Command
并运行打印的查询以了解问题


PRINT@Command
并检查输出。某个地方有一些额外的
'
或缺少
'
当S.SEGMENT='
看起来不正确时,最好打印输出并检查它,而不是在这里发布问题。Evolve-不应该通过where子句使用旧式联接。这里似乎没有理由使用动态sql,因为查询没有任何动态性。
Declare @Command nvarchar(max)
 SET @Command = 'SELECT 
        S.VOUCHER, '+
        ''''+'1'+''''+ ' UPLOAD_TYPE, '+
        ''''+'UP0000001'+''''+ ' UPLOAD_ID,
        S.BRANCH BRANCH,
        --HARDCODE SEGMENT 
        CASE WHEN S.SEGMENT= ''''
        THEN '+''''+'000000'+''''+'
        ELSE S.SEGMENT 
        END SEGMENT,
        M.SMART_TOC TOC,
        1 VERSION,
        S.ACCOUNT, 
        S.TYPE,
        M.SMART_ACCOUNT_ID ACCOUNT_ID,
        M.SMART_ACCOUNT_DESCRIPTIONS,
        S.YEAR YEAR,
        S.MONTH MONTH, 
        S.DEBIT *-1 DEBIT_AMOUNT,
        S.CREDIT CREDIT_AMOUNT,'+
        ''''+'DIRECT.UPLOAD'+''''+ ' UPLOADED_BY,
        GETDATE() LAST_UPDATE
    FROM #JM_DATA S,AAD_MASTER.DBO.MASTER_COA M
    WHERE 
        S.ACCOUNT = M.ACCOUNT_ID
        AND S.TYPE = M.TYPE
        AND M.IS_PARENT='+''''+'0'+''''+' AND M.ACTIVE_FLAG=1'

EXEC sp_executesql @Command