CREATE PROCEDURE pro_test  (@lc int,@bm char(20),@fid int)
AS
declare @getlc int
declare @num  intIF @bm = 'sb_aa'
BEGIN
  SELECT @getlc = lc FROM sb_aa WHERE fid=@fid    IF @getlc <= 0
     begin
     SELECT @num = count(fid) FROM sb_aa WHERE fid=-@fid    IF @num = 1
      DELETE FROM sb_aa WHERE fid=-@fid
    ELSE IF @num = 0
begin
declare @sqll varchar(600)
select @sqll='insert sb_aa (fid,...lch,...) select -fid,...lch,... from sb_aa where fid='+CONVERT(varchar(20),@fid)
exec(@sqll)
end
     endEND
ELSE IF @bm = 'sb_bb'
BEGIN
  SELECT @getlc = lc FROM sb_bb WHERE fid=@fid    IF @getlc <= 0
    begin     SELECT @num = count(fid) FROM sb_bb WHERE fid=-@fid    IF @num = 1
      DELETE FROM sb_bb WHERE fid=-@fid
    ELSE IF @num = 0
begin
declare @sql varchar(600)
select @sql='insert sb_bb (fid,...lch,...) select -fid...lch,... from sb_bb where fid='+CONVERT(varchar(20),@fid)
exec(@sql)
end
    end
END

解决方案 »

  1.   

    CREATE PROCEDURE pro_test  (@lc int,@bm char(20),@fid int)
    AS
    declare @getlc int
    declare @num  intIF @bm = 'sb_aa'
    BEGIN
      SELECT @getlc = lc FROM sb_aa WHERE fid=@fid
      BEGIN
        IF @getlc > 0
          RETURN
      END
      SELECT @num = count(fid) FROM sb_aa WHERE fid=-@fid
      BEGIN
        IF @num = 1
          DELETE FROM sb_aa WHERE fid=-@fid
        ELSE 
          begin        -------here
          IF @num = 0
    begin
    declare @sqll varchar(600)
    select @sqll='insert sb_aa (fid,...lch,...) select -fid,...lch,... from sb_aa where fid='+CONVERT(varchar(20),@fid)
    exec(@sqll)
    end
          end        -------here
      END
    END
    ELSE 
     begin        -------here
    IF @bm = 'sb_bb'
    BEGIN
      SELECT @getlc = lc FROM sb_bb WHERE fid=@fid
      BEGIN
        IF @getlc > 0
          RETURN
      END
      SELECT @num = count(fid) FROM sb_bb WHERE fid=-@fid
      BEGIN
        IF @num = 1
          DELETE FROM sb_bb WHERE fid=-@fid
        ELSE 
          begin        -------here
          IF @num = 0
    begin
    declare @sql varchar(600)
    select @sql='insert sb_bb (fid,...lch,...) select -fid...lch,... from sb_bb where fid='+CONVERT(varchar(20),@fid)
    exec(@sql)
    end
          end        -------here
      END
     end        -------here
    END