• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

谁能帮我看看为何这段SQL插入代码不工作?

saveaswu 2003-05-19 11:33:18
set @sql='insert into table values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+@ddd+''',1)'

共4个字段,前3个都是varchar,第4个是int,我估计是单引号的问题,但试了许多排列都没用,应该怎样写呀?
...全文
15 点赞 收藏 20
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yoki 2003-05-19
try:
set @sql='insert into [table] select '''+@aaa+''','''+@bbb+''','''+@ccc+''',1'
exec(@sql)
回复
psxfghost 2003-05-19
set @sql='insert into [table] values('''+@aaa+''','''+@bbb+''','''+@ccc+''','+cast(@ddd as varchar(10))+',1)'
回复
firetoucher 2003-05-19
对阿,
1 你用了5个字段
2 你用了系统的保留字table,用[]才行。
回复
set @sql='insert into [table] values("'+@aaa+'","'+@bbb+'","'+@ccc+'","'+cast(@ddd as varchar(10))+'",1)'

exec(@sql)
回复
psxfghost 2003-05-19
对啊,是不是你的插入数据和表字段不对应呢??
回复
Rewiah 2003-05-19
你写了5个字段!!!!!

set @sql='insert into table values('''+@aaa+''','''+@bbb+''','''+@ccc+''',1)'
回复
pengdali 2003-05-19

set @sql='insert into [table] values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+cast(@ddd as varchar(10))+''',1)'
回复
pengdali 2003-05-19
declare @sql varchar(8000)
set @sql='insert into [table] values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+@ddd+''',1)'

exec(@sql)
回复
saveaswu 2003-05-19
实在对不住大家,因为我的低级错误,浪费了大家的时间。
原来我有一个变量的值根本就没传到存储过程中来,所以记录存不进去。

十分谢谢大力和其他出力的朋友,试过大力最后贴上来的代码,我才想到是不是变量的值丢了,还真如此。抱歉浪费了大家的宝贵时间。
回复
pengdali 2003-05-19
create table table1(a varchar(100),b varchar(100),c varchar(100),d varchar(100),e int)
declare @sql varchar(8000),@aaa varchar(100),@bbb varchar(100),@ccc varchar(100),@ddd varchar(100)

select @aaa='aaa',@bbb='hiasdf',@ccc='rtyrt',@ddd='sgret'


set @sql='begin tran insert table1 values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+@ddd+''',1) commit'
exec(@sql)
select * from table1

go
drop table table1



---------你执行看一下!!把结果贴出!
回复
fyg_02971 2003-05-19
下面这样可以通过:
create table testsql (a varchar(20),b varchar(20),c varchar(20),d int)
declare @sql varchar(8000)
declare @aaa varchar(2000)
declare @bbb varchar(2000)
declare @ccc varchar(2000)
set @aaa = 'aa'
set @bbb = 'bb'
set @ccc = 'cc'

set @sql='insert into testsql values('''+@aaa+''','''+@bbb+''','''+@ccc+''',1)'
exec(@sql)
回复
saveaswu 2003-05-19
up
回复
saveaswu 2003-05-19
百思不得其解,为何把'a'换成了@aaa,就不运行了?
回复
saveaswu 2003-05-19
就是什么记录也没插入呀!
按道理是不是应该这样就可以了呀?
set @sql='insert into table1 values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+@ddd+''',1)'
如果是下面这样,可以正常插入记录,字段值分别为a,b,c,d,1
set @sql='insert into table1 values('''+'a'+''','''+'b'+''','''+'c'+''','''+'d'+''',1)'

可为何把'a'变成@aaa等,就不能插入记录了呢?检查语法也是通过的。
回复
shengyh 2003-05-19
贴出来,报什么错误???大力,I 崇拜 U!
回复
pengdali 2003-05-19
set @sql='insert table1 values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+cast(@ddd as varchar(10))+''',1)'

具体报什么错
回复
pengdali 2003-05-19
set @sql='insert table1 values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+cast(@ddd as varchar(10))+''',1)'

具体报什么错
回复
saveaswu 2003-05-19
up
回复
nik_Amis 2003-05-19
up
回复
saveaswu 2003-05-19
实在不好意思,SQL贴错了,表名是table1,而且也是5个字段,而且有一个类似的SQL是正常的:

不正常的SQL:
set @sql='insert into table1 values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+@ddd+''',1)'

正常的SQL:
set @sql='insert into table1 values('+'''a'','+'''b'','+'''c'','+'''d'',1)'

正常的插入后,字段值分别是a,b,c,d,1
不正常的插入后,字段值分别为+@aaa+,+@bbb+,+@ccc+,+@ddd+,1
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-19 11:33
社区公告
暂无公告