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

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

共4个字段,前3个都是varchar,第4个是int,我估计是单引号的问题,但试了许多排列都没用,应该怎样写呀?
...全文
34 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
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,用[]才行。
愉快的登山者 2003-05-19
  • 打赏
  • 举报
回复
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

34,589

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧