WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Gespeicherte Prozeduren aufrufen

Verwenden Sie die ESQL-Anweisung CALL, um eine Prozedur aufzurufen, die in einer Datenbank gespeichert ist. Die gespeicherte Prozedur muss durch eine CREATE PROCEDURE-Anweisung definiert werden, die eine LANGUAGE DATABASE-Klausel und eine EXTERNAL NAME-Klausel, die den Namen der Prozedur in der Datenbank und (optional) das zugehörige Datenbankschema angibt, enthält.

Wenn Sie mit der CALL-Anweisung eine gespeicherte Prozedur aufrufen, vergewissert sich der Broker, dass die ESQL-Definition und die Datenbankdefinition übereinstimmen:

Die folgenden Einschränkungen gelten für die Verwendung gespeicherter Prozeduren:

Eine gespeicherte Prozedur in ESQL erstellen

Wenn Sie eine ESQL-Prozedur definieren, die einer gespeicherten Datenbankprozedur entspricht, können Sie entweder einen qualifizierten Namen (als Qualifikationsmerkmal wird ein Datenbankschema verwendet) oder einen nicht qualifizierten Namen angeben.

Gehen Sie folgendermaßen vor, um eine gespeicherte Prozedur zu erstellen:

  1. Codieren Sie ähnlich wie in folgendem Beispiel eine Anweisung zur Erstellung einer nicht qualifizierten Prozedur:
    CREATE PROCEDURE myProc1(IN p1 CHAR) LANGUAGE DATABASE EXTERNAL NAME "myProc";

    Der angegebene EXTERNAL NAME muss mit der Definition übereinstimmen, die Sie in der Datenbank erstellt haben, aber Sie können jeden Namen angeben, den Sie für die entsprechende ESQL-Prozedur ausgewählt haben.

  2. Codieren Sie ähnlich wie in folgendem Beispiel eine Anweisung zur Erstellung einer qualifizierten Prozedur:
    CREATE PROCEDURE myProc2(IN p1 CHAR) LANGUAGE DATABASE EXTERNAL NAME "Schema1.myProc";
  3. Codieren Sie ähnlich wie in folgendem Beispiel eine Anweisung zur Erstellung einer qualifizierten Prozedur in einem Oracle-Paket:
    CREATE PROCEDURE myProc3(IN p1 CHAR) LANGUAGE DATABASE EXTERNAL 
                     NAME "mySchema.myPackage.myProc";
Beispiele zu gespeicherten Prozedurdefinitionen in der Datenbank finden Sie in der CREATE PROCEDURE-Anweisung.

Gespeicherte Prozedur aufrufen

  1. Codieren Sie ähnlich wie in folgendem Beispiel eine Anweisung zum Aufrufen einer nicht qualifizierten Prozedur:
    CALL myProc1('HelloWorld');

    Da die Prozedur myProc1 nicht explizit als einem Schema zugehörig definiert ist, muss sie im Standardschema (dessen Name dem Benutzernamen für die Herstellung der Verbindung mit der Datenquelle entspricht) vorhanden sein; andernfalls schlägt der Befehl fehl.

  2. Das folgende Beispiel ruft die Prozedur myProc im Schema Schema1 auf.
    CALL myProc2('HelloWorld');
  3. Codieren Sie ähnlich wie in folgendem Beispiel eine Anweisung zum Aufruf einer nicht qualifizierten Prozedur mit einem dynamischen Schema:
    DECLARE Schema2 char 'mySchema2';
    CALL myProc1('HelloWorld') IN Database.{'Schema2'};

    Mit dieser Anweisung wird die Prozedur myProc1 in der Datenbank Schema2 aufgerufen und dabei das Standardschema "Benutzername" überschrieben.

Gespeicherte Prozedur aufrufen, die zwei unterschiedliche Ergebnislisten zurückgibt

Gehen Sie folgendermaßen vor, um eine gespeicherte Prozedur aufzurufen, die einen Eingabeparameter benötigt und einen Ausgabeparameter sowie zwei Ergebnisse zurückgibt:
  1. Definieren Sie die Prozedur mit einer CREATE PROCEDURE-Anweisung, durch die ein Eingabeparameter, ein Ausgabeparameter und zwei Ergebnisse angegeben werden:
    CREATE PROCEDURE myProc1 (IN P1 INT, OUT P2 INT)
      LANGUAGE DATABASE
      DYNAMIC RESULT SETS 2
      EXTERNAL NAME "myschema.myproc1";
  2. Schreiben Sie folgenden Code, um die Prozedur myProc1 mithilfe einer Feldreferenz aufzurufen:
    /* using a field reference */
    CALL myProc1(InVar1, OutVar2, Environment.ResultSet1[], 
                OutputRoot.XMLNS.Test.ResultSet2[]);
  3. Schreiben Sie folgenden Code, um die Prozedur myProc1 mithilfe einer Referenzvariablen aufzurufen:
    /* using a reference variable*/
    DECLARE cursor REFERENCE TO OutputRoot.XMLNS.Test;
    
    CALL myProc1(InVar1, cursor.OutVar2, cursor.ResultSet1[], 
                         cursor.ResultSet2[]);
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:20:00


TaskthemaTaskthema | Version 8.0.0.5 | ac17040_