2 sql-server stored-procedures
我在SQL Server 2014中创建了这个存储过程
create procedure ProcAddDate
@tableName varchar(10),
@inpDate date
as
declare @sqlInsString varchar(max)
set @sqlInsString = 'insert into '+ @tableName + ' values('
set @sqlInsString = @sqlInsString + @inpDate + ')'
execute(@sqlInsString)
go
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试执行此语句时,SQL Server会引发错误
消息402,级别16,状态1,过程ProcAddDate,第7行
数据类型varchar(max)和日期在add运算符中不兼容.
如何创建一个存储过程,让我通过输入'date'类型的值来为表添加日期?
如果你必须这样做(如果你正在参数化表名,它通常是一个破碎的数据模型的标志),使用sp_executesql这样你就可以使用正确的类型传递数据,而不是强制进入然后返回超出一个字符串):
create procedure ProcAddDate
@tableName sysname,
@inpDate date
as
declare @sqlInsString nvarchar(max);
set @sqlInsString = N'insert into '+ @tableName + ' values(@inpDate)';
declare @parms nvarchar(max);
set @parms = N'@inpDate date';
execute sp_executesql @sqlInsString,@parms,@inpDate;
go
Run Code Online (Sandbox Code Playgroud)
(我还对上面做了一些其他的风格修改)
| 归档时间: |
|
| 查看次数: |
747 次 |
| 最近记录: |