declare @sql varchar(8000)
set @sql='insert into [table] values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+@ddd+''',1)'exec(@sql)
set @sql='insert into [table] values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+@ddd+''',1)'exec(@sql)
set @sql='insert into [table] values('''+@aaa+''','''+@bbb+''','''+@ccc+''','''+cast(@ddd as varchar(10))+''',1)'
1 你用了5个字段
2 你用了系统的保留字table,用[]才行。
set @sql='insert into [table] select '''+@aaa+''','''+@bbb+''','''+@ccc+''',1'
exec(@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
按道理是不是应该这样就可以了呀?
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等,就不能插入记录了呢?检查语法也是通过的。
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)
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 table1go
drop table table1---------你执行看一下!!把结果贴出!