假設有存儲過程: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))
