2014-02-15 94 views
0

我創建了以下存儲過程:如何使用存儲過程將datetime插入到SQL Server數據庫表中?

create proc sp 
    @Tablename nvarchar(max), @Dt datetime 
as 
begin 
    exec('insert '[email protected]+' values('[email protected]+')') 
end 

當我執行該存儲過程

exec sp 'TbName','2012-12-10 13:38:00.000' 

我得到這個錯誤:

消息102,級別15,狀態1 ,第1行
「10」附近語法不正確。

在此先感謝您的幫助。

+0

哪個「SQL數據庫」? –

+0

sql server 2008 – user3313278

+1

當創建sql字符串時,exec將'@ Dt'轉換爲'varchar'並放在'''之間,所以字符串應該是'insert into tbl values('yyyymmdd')' –

回答

0

您需要在日期值周圍加上引號。否則,它被解釋爲數字和其他的東西:

create proc sp 
    @Tablename nvarchar(max), @Dt datetime 
as 
begin 
    exec('insert '[email protected]+' values(''[email protected]+'')') 
end; 

當寫這樣的代碼,這是很好的做法,把獨立的變量替換從exec()。這樣,你可以輕鬆打印出字符串:

create proc sp 
    @Tablename nvarchar(max), @Dt datetime 
as 
begin 
    declare @sql nvarchar(max); 
    set @sql = 'insert '[email protected]+' values(''[email protected]+'')'; 
    exec(@sql); 
end; 

如果你已經打印出來,你在執行什麼,你可能已經發現這個問題的時候了。

相關問題