读书人

求大师解决一下解决方案

发布时间: 2012-05-04 12:36:09 作者: rapoo

求大师解决一下
ALTER PROCEDURE [dbo].[insertboss]
@a nvarchar(100),
@b nvarchar(100),
@c nvarchar(100)
as
declare @d nvarchar(2000)
begin
set @d='INSERT INTO'+'i_'+@c+'VALUES ('+@a+','+@b+')'
execute sp_executesql @d
end
为什么我运行的时候会提醒
必须声明标量变量 "@a"

[解决办法]
因为你不清楚 sp_executesql 这个存储过程该怎么用
这个存储过程有两个固定的参数,按顺序第一个是要动态执行的sql语句
也就是楼主的@d,第二参数是这个动态sql语句中用到的变量声明字符串,其余的就是每个变量的值
execute后的语句想在单独的批处理里执行,外部声明的变量是不能传递进去的,所以楼主的语句不如不要使用sp_executesql,而直接execute

SQL code
alter procedure [dbo].[insertboss]@a nvarchar(100),@b nvarchar(100),@c nvarchar(100)asbegin    declare @d nvarchar(2000);    set @d = 'insert into' + +'i_' + @c + ' VALUES(' + @a + ',' + @b + ')';    exec(@d);end;go 

读书人网 >SQL Server

热点推荐