假如表A中有10个字段 我现在想去取出5个字段的内容放入表B中(假设 表B中有7个字段)
一下是我写的存储过程,会报错 错误是列数不一致,
我想问的是 必须A表中的字段个数和B表中的一样度才可以插入吗?要是不一样多,这个业务该怎么实现?求大神指点!!谢谢 在线等!!!谢谢各位了!!
create procedure mysp7 @trantype varchar(20)
AS 
DECLARE @error  varchar(20)
DECLARE @TranName VARCHAR(20) 
SELECT @TranName = 'MyTransaction'
BEGIN TRANSACTION @TranName
if @trantype =  ''   
set @error = '1'
if @trantype = 'begin' begin 
select a.ename,a.age,a.password,a.username into #temp2 from 表A as a
insert 表B
select * from #temp2
set @error = '0'
endif @error = '0' 
COMMIT TRANSACTION MyTransaction
if @error = '1'
rollback transaction 

解决方案 »

  1.   

    如果列数本来不一致,就不能用select * 要用类似的写法:
    insert into b(id,name,value)
    select id,name,value from a
      

  2.   

     insert 表B
        select * from #temp2 insert into 表B (字段1,字段2,..字段N)
        select (字段1、字段2...字段N) from #temp2
        
    这样最稳妥
      

  3.   

    insert into 表B(ename,age,password,username)
    select ename,age,password,username from 表A
      

  4.   

    insert into B(1,2,3,4,5) select 1,2,3,4,5 from # temp2
    1,2,3,4,5代表字段
    這樣應該ok