ABAPEXEC_PROCEDURE - EXEC PROCEDURE

CPI1466 during Backup   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.

EXEC SQL - EXECUTE

Syntax

EXEC SQL.
  EXECUTE PROCEDURE proc ( IN    p_in1    IN    p_in2 ...,
                          OUT   p_out1   OUT   p_out2 ...,
                          INOUT p_inout1 INOUT p_inout2 ... )
ENDEXEC.

Wirkung

In Datenbanksystemen können Prozeduren als so genannte Stored Procedures definiert werden. Dadie Syntax für den Aufruf solcher Prozeduren und die zugehörige Parameterübergabe für verschiedene Datenbanksysteme sehr unterschiedlich sein können, gibt es inNative SQL einen vereinheitlichten Befehl.

Die Anweisung EXECUTE PROCEDURE ruft eine im Datenbanksystem gespeicherte Prozedur procauf. Für sämtliche Formalparameter der Prozedur müssen durch Kommata getrennteAktualparameter angegeben werden. Vor jedem Aktualparameter muss mit IN, OUT oder INOUTangegeben werden, ob es sich um einen Eingabe-, Ausgabe- oder Ein-/Ausgabeparameter handelt. Für die Aktualparameter können Literale oder durch Doppelpunkt (:) gekennzeichneteHostvariablen verwendetwerden, die in diesem Fall auch interne Tabellen sein können. Wenn es sich um interne Tabellen handelt, müssen es Standardtabellen ohnesekundäre Tabellenschlüssel sein.

Beispiel

Definition einer Prozedur incprice über datenbankspezifische SQL-Anweisungen (Oracle)und Aufruf der Prozedur mit der SAP-spezifischen Native-SQL-Anweisung EXECUTE PROCEDURE. DieAusführung des Programmabschnitts erhöht jeden Flugpreis für den Mandanten "000" in der Tabelle SFLIGHT um einen bestimmten Betrag.

PARAMETERS incprice TYPE sflight-price.

EXEC SQL.
  CREATE OR REPLACE PROCEDURE increase_price (x IN NUMBER) IS
  BEGIN
    UPDATE sflight SET price = price + x
           WHERE mandt = '000';
  END;
ENDEXEC.

EXEC SQL.
  EXECUTE PROCEDURE increase_price ( IN :incprice )
ENDEXEC.

Beispiel

Definition einer Prozedur selfunc über datenbankspezifische SQL-Anweisungen (Informix),Aufruf der Prozedur mit der SAP-spezifischen Native-SQL-Anweisung EXECUTE PROCEDURE in einer LOOP-Schleife über eineSelektionstabelleund Löschen der Prozedur über eine SQL-Anweisung. Im hier gezeigten Fall ist die Prozedureine Funktion, deren Rückgabewert output in EXECUTE PROCEDURE in die Hostvariable name übernommen wird.

DATA scarr_carrid TYPE scarr-carrid.
SELECT-OPTIONS s_carrid FOR scarr_carrid NO INTERVALS.
DATA s_carrid_wa LIKE LINE OF s_carrid.

DATA name TYPE c LENGTH 20.

TRY.
    EXEC SQL.
      CREATE FUNCTION selfunc( input CHAR(3) )
        RETURNING char(20);
        DEFINE output char(20);
        SELECT carrname
               INTO output
               FROM scarr
               WHERE mandt  = '000' AND
                     carrid = input;
        RETURN output;
        END FUNCTION;
    ENDEXEC.
    LOOP AT s_carrid INTO s_carrid_wa
                    WHERE sign = 'I' AND option = 'EQ'.
      TRY.
         EXEC SQL.
            EXECUTE PROCEDURE selfunc( IN  :s_carrid_wa-low,
                                      OUT :name )
          ENDEXEC.
          WRITE: / s_carrid_wa-low, name.
        CATCH cx_sy_native_sql_error.
          MESSAGE `Error in procedure execution` TYPE 'I'.
      ENDTRY.
    ENDLOOP.
    EXEC SQL.
      DROP FUNCTION selfunc;
    ENDEXEC.
  CATCH cx_sy_native_sql_error.
    MESSAGE `Error in procedure handling` TYPE 'I'.
ENDTRY.




Vendor Master (General Section)   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.


Length: 6463 Date: 20120526 Time: 195954     triton ( 132 ms )