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