0
如果包含AND HostApplication子句,则此查询不起作用。我的动态SQL查询有什么问题?使用char数据类型
参数:
ALTER PROCEDURE [dbo].[updateNumbers_ArchiveDB]
(
@accountNumber varchar(50),
@accountType char(4),
@padding varchar(50),
@proc_dateStart datetime,
@proc_dateEnd datetime
)
这里是动态SQL:
set @q = 'Update ' + @cTableName +
' SET LogicalAccount = '+ @padding + @accountNumber +
' WHERE ProcessDate BETWEEN CAST('''+CONVERT(VARCHAR(20),@proc_dateStart)+''' AS DATE) AND CAST('''+CONVERT(VARCHAR(20),@proc_dateEnd)+''' AS DATE)' +
' AND HostApplication =' + '''+ @accountType +'''
这里是我的exec语句:
exec updateNumbers_ArchiveDB @accountNumber = N'1020',
@accountType = N'd',
@padding = N'123',
@proc_dateStart = '2014-01-30',
@proc_dateEnd = '2014-01-31'
如果我周围@accounttype
删除单引号:(''[email protected] +'')
我得到这个错误:
Msg 207, Level 16, State 1, Line 1
Invalid column name 'd'.
使用3个引号时,它的运行没有错误,但没有更新。
随着1报价(('[email protected] +'))
我得到:
Msg 137, Level 15, State 2, Line 1
Must declare the scalar variable "@accountType".
我知道有是一种艺术使用动态SQL报价,但我还没有发现使用动态SQL CHAR数据类型的任何资源。
大声笑,当然这只是需要另一个单引号。我不擅长动态SQL,谢谢! – user1729696 2014-08-29 22:14:50
不是问题,不要忘记标记为已回答。谢谢 – mxix 2014-08-29 22:21:44
Stackoverflow让我等待标记答案。 :( – user1729696 2014-08-29 22:22:48