首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求大师解决一下解决方案

2012-05-04 
求大师解决一下ALTER PROCEDURE [dbo].[insertboss]@a nvarchar(100),@b nvarchar(100),@c nvarchar(100)a

求大师解决一下
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 

热点排行
Bad Request.