动态SQL语句的insert into语法

execsp_executesqlN'insertintoA(col1,col2,col3,col4)values(@a,@b,@c,@d)',N'@aint,@bvar... exec sp_executesql N'insert into A (col1,col2,col3,col4 ) values (@a,@b,@c,@d) ',
N' @a int ,@b varchar(80) ,@c int,@d varchar(80)' ,0,'测试',0,'测试',像这样就可以用,如果写成
exec sp_executesql N'insert into A (col1,col2,col3,col4 ) values (@a,@b,@c,@d) ',
N' @a int ,@b varchar(80) ,@c int,@d varchar(80)' select 0,'测试',0,newid() ,在SQL不报语法错误,但是执行的话会提示@a 没赋值,现在因为需要用到NEWID()函数给一列唯一码赋值,所以赋值语句一定要用SELECT,请问第二条语句怎样改才能正确执行
展开
 我来答
sz0831chb
2013-02-04 · TA获得超过1万个赞
知道大有可为答主
回答量:1.1万
采纳率:94%
帮助的人:1345万
展开全部
你原来错误是
消息 8178,级别 16,状态 1,第 1 行
参数化查询 '( @a int ,@b varchar(80) ,@c int,@d varchar(80))insert into A (c' 需要参数 '@a',但未提供该参数。

declare @newid nvarchar(50)
select @newid=NEWID()
exec sp_executesql N'insert into A (col1,col2,col3,col4) values (@a,@b,@c,@d) ',N' @a int ,@b varchar(80) ,@c int,@d varchar(80)',0,'测试',0,@newid

在Sql Server 2008 R2已经成功插入.
szm341
2013-02-04 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5163万
展开全部
你可以写成
exec sp_executesql N'insert into A (col1,col2,col3,col4 ) values (@a,@b,@c,newid()) ',
N' @a int ,@b varchar(80) ,@c int,@d varchar(80)',0,'测试',0
追问
newid()函数必须select才能用
追答
你是什么版本啊?我05、08测试都没问题,都可以

create table #a(id varchar(64))
exec sp_executesql N'insert into #a (id) values (newid())'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式