我要创建一个存储过程,将表pu_input_w中的值插入到pu_input中,并且取出pu_input中的id,然后将pu_input_w_dtl中的数据插入到pu_input_dtl中,在创建存储过程中,为什么会出错?
其中pu_input和pu_input_w的表结构完全一样
    pu_input_dtl和pu_input_w_dtl的表结构完全一样create proc pu_input_w_To_pu_input
@id int
as
declare @id varchar(10)
set @id=1
declare @sql varchar(300)
declare @sql1 varchar(20)
declare @sql2 varchar (200) 
declare @idnum int
   set @sql='insert into pu_input select 采购订单号,制作人,制作日期 from pu_input_w where id=' +@id  
   exec(@sql)
   set @sql1='select @@identity'
   set @idnum=exec(@sql1)   为什么@idnum取不到值?
   print @idnum
   set @sql2='insert into pu_input_dtl select mainid,设备名称,设备类型,设备编号,材料料号,制作日期 from pu_input_w_dtl where mainid=' +@idnum
   print @sql2
   exec(@sql2)
go请大家帮帮忙!

解决方案 »

  1.   

    http://msdn.microsoft.com/zh-cn/library/ms187342.aspx
      

  2.   

    create proc pu_input_w_To_pu_input 
    @id int 
    as 
    declare @id varchar(10) 
    set @id=1 
    declare @sql varchar(300) 
    declare @sql1 varchar(20) 
    declare @sql2 varchar (200) 
    declare @idnum int 
    BEGIN 
      insert into pu_input 
      select 采购订单号,制作人,制作日期 from pu_input_w 
      where id=@id 
      
      select @idnum=@@identity  print @idnum  insert into pu_input_dtl 
      select mainid,设备名称,设备类型,设备编号,材料料号,制作日期 from pu_input_w_dtl 
      where mainid=@idnum 
    END  
    go set @sql1='select @@identity' 需要跟INSERT语句同时执行才可以取到相应的值!
      

  3.   

    set @sql1=(select @@identity)
    建议LZ好好看看SQL的基本知识吧