【发布时间】:2020-03-18 04:59:16
【问题描述】:
我下面的脚本出错了:
消息 102,第 15 级,状态 1,第 6 行
'000000' 附近的语法不正确。消息 105,第 15 级,状态 1,第 26 行
字符串'AND 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;
【问题讨论】:
-
PRINT @Command并检查输出。在某处有一些额外的'或缺少'。 -
CASE WHEN S.SEGMENT= ''看起来不正确 -
您最好花时间打印输出并检查它,而不是在这里发布问题。
-
进化 - 没有人应该通过 where 子句使用旧式连接。而且似乎没有理由在这里使用动态 sql,因为查询没有任何动态。
标签: sql sql-server