繁体   English   中英

如何使用存储过程将datetime插入SQL Server数据库表中?

[英]How to insert datetime into a SQL Server database table with a stored procedure?

我创建了以下存储过程:

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

当我执行该存储过程时

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

我收到此错误:

Msg 102,第15级,状态1,第1行
'10'附近的语法不正确。

在此先感谢您的帮助。

您需要在日期值两边加上引号。 否则,它将被解释为数字和其他内容:

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

编写此类代码时,最好将变量替换与exec()分开。 这样,您可以轻松地打印出字符串:

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

如果您已打印出正在执行的内容,则可能会立即发现该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM