Sql ';字符串';动态查询中的错误
下面的脚本给出了一个错误: 味精102,第15级,状态1,第6行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'+
“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