一张表,里面只有两列,分别是Id,name.id自动增长。我想通过储存过程把表名和和属性都用参数传递。但是执行报了
Msg 214, Level 16, State 2, Procedure sp_executesql, Line 10
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
希望哪位大哥帮忙解决。小弟感激万分!
主要遇到就是不能把表名当参数传递。
以下是小弟测试的代码
create procedure tests
@name varchar(20),
@tableName varchar(50) --表名--
as
begin
declare @ta varchar(25);
declare @Sql varchar(150);
set @ta=@name;
set @Sql='insert into '+@tableName+'(name)values('+(@ta)+')'
exec sp_executesql @Sql
end
Msg 214, Level 16, State 2, Procedure sp_executesql, Line 10
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
希望哪位大哥帮忙解决。小弟感激万分!
主要遇到就是不能把表名当参数传递。
以下是小弟测试的代码
create procedure tests
@name varchar(20),
@tableName varchar(50) --表名--
as
begin
declare @ta varchar(25);
declare @Sql varchar(150);
set @ta=@name;
set @Sql='insert into '+@tableName+'(name)values('+(@ta)+')'
exec sp_executesql @Sql
end
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
@statement在哪
create procedure tests
@name varchar(20),
@tableName varchar(50) --表名--
as
begin
declare @Sql nvarchar(150);
print '@name='+@name
print '@tableName='+@tableName
set @Sql='insert into '+@tableName+'(name) values('''+@name+''')'
print @sql
exec sp_executesql @Sql
endexec tests 'aaa','tba'
刚试 了下,
表只能了两个字段一个ID自增长一个NAME VARCHAR(50)
没问题.