Quellcode Prozedur p_k_buch

Das DB-Objekt selbst

CREATE PROCEDURE "demoadm".p_k_buch(
  pv_action char(1),
  pv_mandant char(2),
  pv_journr  int,          -- k_buch.journr
  pv_periode  int,          -- k_buch.periode
  pv_kto  char(15),     -- k_buch.kto
  pv_gktr  char(15),     -- k_buch.gktr
  pv_gkst  char(15),     -- k_buch.gkst
  pv_betrag  decimal(13,2), -- k_buch.betrag
  pv_menge  char(15)     -- k_buch.kanzahl
)
  DEFINE dw_oper varchar(50,0);
  DEFINE err_sql int;
  DEFINE err_isam int;
  DEFINE err_txt varchar(150,0);
  DEFINE err_msg varchar(250,0);
  DEFINE i  int;
  DEFINE sv_kst_nr  char(15);
  DEFINE sv_ktr_nr char(15);
  DEFINE sv_kart_nr  char(15);
  DEFINE sv_mandant  char(2);
  DEFINE sv_jahr decimal(4,0);
  DEFINE sv_periode decimal(2,0);
  DEFINE sv_betrag  decimal(13,2);
  DEFINE sv_menge  decimal(22,7);

  LET dw_oper = ' Start';
  BEGIN
    ON EXCEPTION
    SET err_sql, err_isam, err_txt
    LET err_msg = 'ISAM['||err_isam||']:'||err_txt||' #'||dw_oper;

    IF pv_menge = ' ' THEN
      LET sv_menge = 0.0;
    ELSE
      LET sv_menge = pv_menge;
    END IF

    INSERT INTO DWE_k_buch VALUES (0,err_sql,err_msg,0,'sr_saldo_k',
      pv_action,
      pv_mandant,
      pv_journr,
      pv_periode,
      pv_kto,
      pv_gktr,
      pv_gkst,
      pv_betrag,
      sv_menge
    );
    END EXCEPTION;

    SET LOCK MODE TO WAIT 10;

    LET dw_oper = ' Computing variables';

    LET sv_kst_nr = pv_gkst;
    LET sv_ktr_nr = pv_gktr;
    LET sv_kart_nr = pv_kto;
    LET sv_mandant = pv_mandant;
    LET sv_jahr  = 1900 + TRUNC(pv_journr/10000000);
    LET sv_periode = pv_periode;

    LET sv_betrag = pv_betrag;

    IF pv_menge = ' ' THEN
      LET sv_menge = 0.0;
    ELSE
    LET sv_menge = pv_menge;
    END IF

    -- Negate Values --

    IF pv_action = 'D' THEN
    LET sv_betrag = -sv_betrag;
    LET sv_menge = -sv_menge;
    END IF

    LET dw_oper = 'Updating sr_saldo_k';
    UPDATE sr_saldo_k SET
    betrag = betrag + sv_betrag,
    menge = menge + sv_menge
    WHERE (kst_nr = sv_kst_nr)
    AND (ktr_nr = sv_ktr_nr)
    AND (kart_nr = sv_kart_nr)
    AND (mandant = sv_mandant)
    AND (jahr  = sv_jahr)
    AND (periode = sv_periode)
    ;
    IF DBINFO('sqlca.sqlerrd2') < 1 THEN
    INSERT INTO sr_saldo_k (
      kst_nr,
      ktr_nr,
      kart_nr,
      mandant,
      jahr,
      periode,
      betrag,
      menge
    )
    VALUES (
      sv_kst_nr,
      sv_ktr_nr,
      sv_kart_nr,
      sv_mandant,
      sv_jahr,
      sv_periode,
      sv_betrag,
      sv_menge
    );
    END IF
  END
  SET LOCK MODE TO NOT WAIT;
END PROCEDURE

Abhängige Objekte, Rechte

grant  execute on "demoadm".p_k_buch to "public" as "demoadm";

HTML-Autor: Rohloff, Datenbank: demodb, Datenstand: 31.05.00 17:07