2017-10-20 75 views
0

一時無法插入記錄作爲統計SQL Server存儲過程的動態EXEC插入

if @counts=1 
begin 
declare @sql1 as nvarchar(50); 
select @sql1='update '[email protected]_name+' set quantity='+cast(@tab_q as varchar)+'  where id='+cast(@tab_id as varchar)+';' 
exec sp_executesql @sql1 
end 
else 
begin 
declare @sql2 as nvarchar(50); 
set @sql2='insert into '[email protected]_name+' (id,name,quantity) values ('+CAST(@tab_id as varchar)+','''[email protected]_n+'''' 
set @sql2+=','+CAST(@tab_q as varchar)+');' 
select @sql2 
exec sp_executesql @sql2 
end 
End 

command: exec dbo.test @tab_name='inventory',@tab_id=4,@tab_n='chiku',@tab_q=123 

記錄在刪除列名時被插入,但在插入過程中不能與列名一起使用。

請幫忙。

感謝

+0

聲明@ SQL1爲NVARCHAR(50) 是DAT足夠長的動態查詢? –

+0

感謝frederik-de-clercq我把它做成了max,並且它的工作..錯誤顯示在exec命令的第1行。真的讓我很沮喪。非常感謝 – Santhosh

回答

1

這是更好地使用一種帶參數的動態查詢爲nvarchar(最大)。 因爲你永遠不知道字符串可以多久。除非你知道字符串的最大長度。

dba還告訴我在字符串之前使用N'作爲前綴來表示Unicode字符串文字。

0

增加@sql變量大小象下面這樣:

declare @sql as nvarchar(max); 
.... 

declare @sql1 as nvarchar(max); 
... 

declare @sql2 as nvarchar(max);