sql 在將 nvarchar 值 轉換成資料型別 int 時失敗。

赤砂之蠍我愛羅發表於2012-11-20

假設有儲存過程:proc_test2

create proc proc_test2

@Id int

begin 

as

declare @sql varchar(max)

@sql = 'select * from test2 where 1=1'

if @Id <> 0

set @sql += ' and Id = ' +@Id

exec (@sql)

end


儲存過程需要的引數是int型別,按道理直接傳值(+@Id)是沒有問題的,但是在執行儲存過程的時候,卻彈出

“sql 在將 nvarchar 值 轉換成資料型別 int 時失敗。”

這時候你需要轉換一下就ok了!


正解是:set @sql += ' and Id = ' +Cast(@Id as nvarchar(50))


相關文章