对,你把你的代码贴出来;
参数过长是一个原因,再者你的input  output都要设好

解决方案 »

  1.   

    if exists(select name from sysobjects where name='p_sfdj2' and type='p')
       drop procedure p_sfdj2
    go
    create procedure p_Sfdj2
      @vRQ     nvarchar(10),
      @vBlh    nvarchar(8),
      @vSFKS   nvarchar(10),
      @vKSBM   nvarchar(8),
      @vID     nvarchar(4),
      @vMC     nvarchar(40),
      @vGG     nvarchar(20),
      @vDW     nvarchar(8),
      @vDJ     money,
      @vSL     decimal(10,2),
      @vFy     money,
      @vSfdm   nvarchar(6),
      @vCZYBM  nvarchar(8),
      @vCZYXM  nvarchar(10)
    as
      begin transaction
    --更新ZYYL
      UPDATE ZYYL SET FY=FY+@vFy,JSSY=JSSY-@vFy WHERE BLH=@vBlh
    --更新住院费用
      --1、先得到费用名称
      declare 
        @vSfmc as nvarchar(10)
      declare Get_Sfmc cursor
      for 
         select hym from sfxm where sfdm=@vSfdm     
      open Get_Sfmc
      fetch next from Get_Sfmc into @vSfmc
      close Get_Sfmc
      deallocate Get_Sfmc
      --2、记入数据
      if exists(SELECT FYMC FROM ZYFY WHERE BLH=@vBlh AND FYMC=@vSfmc)
         begin--进行累加
            UPDATE ZYFY SET FYJE=FYJE+@vFy WHERE BLH=@vBlh AND FYMC=@vSfmc
         end
      else --新增记录
         begin
            INSERT ZYFY(BLH,FYMC,FYJE)VALUES(@vBlh,@vSfmc,@vFy)
         end
    --记医嘱流水帐
      insert yzlsz(  RQ,  BLH,ZYCS,  SFKS,  KSBM,  FYLB,FYID,  MC,  GG,  DW,  DJ,  SL,  JE,YSKS,YSBM,YSXM,  CZYBM,  CZYXM)
            values(@vRQ,@vBLH,null,@vSFKS,@vKSBM,@vSfmc,@vID,@vMC,@vGG,@vDW,@vDJ,@vSL,@vFy,Null,Null,Null,@vCZYBM,@vCZYXM) 
      if @@error!=0
       begin
         rollback transaction
         return
       end
    --完成
      commit transaction