我不确定如何解决此错误:
过程或函数“sp_executesql”需要参数“@statement”,但未提供该参数。
对于此查询:
DECLARE @a INT
DECLARE @b VARCHAR
SET @a = 1
WHILE @a < 30
BEGIN
set @b = @a
exec sp_executesql update source_temp set pmt_90_day = pmt_90_day + convert(money,'trans_total_'+@b)+N'
N'where convert(datetime,'effective_date_'+@b)+N' <= dateadd(day,90,ORSA_CHARGE_OFF_DATE)
and DRC_FLAG_'+@b = 'C'''
SET @a = @a + 1
END
另外,您能否帮助我理解 N' 的正确用法以及它在该语句中是否正确完成。
感谢你的协助。
“sp_executesql”存储过程需要执行单个字符串参数@statement。
你的字符串在这里完全不正常......你需要在任何“固定”字符串部分前面加上 N'......' 来使它们成为 Unicode 字符串,但这绝对不是正确的情况。
我想你可能想尝试这个:
DECLARE @a INT
DECLARE @b VARCHAR(2)
SET @a = 1
DECLARE @statement NVARCHAR(500)
WHILE @a < 30
BEGIN
SET @b = CAST(@a AS VARCHAR(2))
SET @statement =
N'update source_temp set pmt_90_day = pmt_90_day + ' +
'convert(money, ''trans_total_' + @b + ''') ' +
'where convert(datetime, ''effective_date_' + @b + ''')' +
' <= DATEADD(DAY, 90, ORSA_CHARGE_OFF_DATE) ' +
'and DRC_FLAG_' + @b + ' = ''C'''
exec sp_executesql @statement
SET @a = @a + 1
END
这是否有效并达到您期望的效果?
说明: N'...........' 分隔包含 SQL 语句的整个字符串。其中的任何撇号都必须重复(“转义”)。我希望我正确理解了你的逻辑。
Marc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)