【发布时间】:2014-02-15 21:49:52
【问题描述】:
我创建了以下存储过程:
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'
我收到了这个错误:
消息 102,第 15 级,状态 1,第 1 行
'10' 附近的语法不正确。
提前感谢您的帮助。
【问题讨论】:
-
哪个“SQL 数据库”?
-
在创建 sql 字符串以执行 exec 时将
@Dt转换为varchar并将其放在''之间,因此该字符串应为insert into tbl values ('yyyymmdd') -
我也应该说,这可以认为是代码异味,容易被sql注入,你应该阅读动态sql的优缺点。
标签: sql sql-server-2008 stored-procedures