Все не правильно
Пример: наверное дальше сам сообразишь.

CREATE OR ALTER PROCEDURE COPYORDER (
    fromcdorder integer,
    tocdorder integer,
    flags integer = 0)
as
declare variable cdthing integer;
declare variable cdmsh integer;
declare variable comment varchar(255);
declare variable price double precision;
declare variable nds double precision;
declare variable nds_p double precision;
declare variable pricesumm double precision;
declare variable cdasklist integer;
declare variable cellcount integer;
declare variable fromcdmainal integer;
declare variable tocdmainal integer;
declare variable addhand integer;
declare variable c integer;
declare variable cdmain integer;
declare variable oldcode char(6);
declare variable tarif_p double precision;
declare variable tarif_summ double precision;
declare variable fromcdspecver integer;
declare variable tocdspecver integer;
declare variable cdmain2 integer;
declare variable howmany double precision;
declare variable numcell varchar(100);
declare variable cdmaincell integer;
declare variable fromcdspecref integer;
declare variable tocdspecref integer;
declare variable fromcdspecvercell integer;
declare variable tocdspecvercell integer;
declare variable options integer;
declare variable fromvalue0 varchar(255);
declare variable tovalue0 varchar(255);
declare variable cdmain1 integer;
declare variable cdchk integer;
declare variable value1 varchar(255);
declare variable value2 varchar(255);
declare variable from_annotate blob sub_type 1 segment size 80;
declare variable obozncell varchar(100);
declare variable dogorder varchar(100);
declare variable cdasklistfield integer;
declare variable cell integer;
declare variable cdspecver integer;
declare variable cdspecvernew integer;
declare variable cdnmclparam integer;
declare variable cdspecref integer;
begin
  select cdThing, cdMsh, HowMany, Comment, Price, NDS, NDS_P, cdMainAL,
         PriceSumm, cdAskList, CellCount, Options, Annotate
    from OrderRef
   where cdOrder = :FromcdOrder
    into :cdThing, :cdMsh, :HowMany, :Comment, :Price, :NDS, :NDS_P,
:FromcdMainAL,
        :PriceSumm, :cdAskList, :CellCount, :Options, :From_Annotate;

  delete from OrderTarifList where cdOrder = :TocdOrder;

  for select cdMain, Tarif_P, Tarif_Summ
        from OrderTarifList
       where cdOrder = :FromcdOrder
        into :cdMain, :Tarif_P, :Tarif_Summ
  do
    insert into OrderTarifList (cdOrder, cdMain, Tarif_P, Tarif_Summ)
      values (:TocdOrder, :cdMain, :Tarif_P, :Tarif_Summ);

  update OrderRef
     set cdThing = :cdThing,
         cdMsh = :cdMsh,
         HowMany = :HowMany,
         Comment = :Comment,
         Price = :Price,
         NDS = :NDS,
         NDS_P = :NDS_P,
         PriceSumm = :PriceSumm,
         cdAskList = :cdAskList,
         CellCount = :CellCount,
         Options = :Options,
         Annotate = :From_Annotate
   where cdOrder = :TocdOrder;

  Delete from AskListMainFields where cdOrder = :TocdOrder;

end


Ответить