Version 4.2.6
 —  Statements  —

CALLDBPROC - SQL

CALLDBPROC dbproc ddm-name
   

 

 

M

 
  [USING] parameter AD= O  
        A

  [RESULT SETS] result-set]
  [GIVING sqlcode]
 

CALLMODE=

NONE

           
  NATURAL            

Dieses Dokument behandelt folgende Themen:

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Siehe auch CALLDBPROC im Teil Natural for DB2 der Database Management System Interfaces-Dokumentation.


Funktion

Das Statement CALLDBPROC dient dazu, eine Stored Procedure des SQL-Datenbanksystems, mit dem Natural verbunden ist, aufzurufen.

Die Stored Procedure kann entweder ein Natural-Subprogramm oder ein in einer anderen Programmiersprache geschriebenes Programm sein. Neben der Möglichkeit, Parameter zwischen dem aufrufenden Objekt und der Stored Procedure zu übergeben, unterstützt CALLDBPROC sogenannte Result Sets; mit diesen ist es möglich, größere Datenmengen von der Stored Procedure an das aufrufende Objekt zu übergeben, als dies mittels Parametern möglich wäre.

Die Result Sets sind von der Stored Procedure erzeugte temporäre Ergebnistabellen, die das aufrufende Objekt mittels eines READ RESULT SET-Statements lesen und verarbeiten können.

Anmerkung:
Im Prinzip ist der Aufruf einer Stored Procedure mit dem Aufruf eines Natural-Subprogramms vergleichbar: wenn das CALLDBPROC-Statement ausgeführt wird, wird die Kontrolle an die Stored Procedure übergeben; nach Verarbeitung der Stored Procedure wird die Kontrolle wieder an das aufrufende Objekt zurückgegeben, und die Verarbeitung wird mit dem nächsten Statement nach dem CALLDBPROC-Statement fortgesetzt.

Seitenanfang

Einschränkung

Dieses Statement steht nicht bei Natural for SQL zur Verfügung.

Seitenanfang

Syntax-Beschreibung

dbproc
Aufzurufende Stored Procedure:

Als dbproc geben Sie den Namen der Stored Procedure an, die aufgerufen werden soll. Der Name kann entweder als alphanumerische Variable oder als Konstante in Apostrophen (') angegeben werden.

Der Name muss den Regeln für Stored-Procedure-Namen des Ziel-Datenbanksystems entsprechen.

Falls die Stored Procedure ein Natural-Subprogramm ist, darf der eigentliche Procedure-Name nicht länger als 8 Stellen sein.

ddm-name
Name eines Natural-Datendefinitionsmoduls:

Der Name eines DDMs muss angegeben werden, um die "Adresse" der Datenbank, die die Stored Procedure ausführt, bereitzustellen. Weitere Informationen siehe ddm-name.

[USING] parameter
Zu übergebende Parameter:

Hier können Sie Parameter angeben, die vom aufrufenden Objekt an die Stored Procedure übergeben werden sollen.

Als parameter können Sie Folgendes angeben:

  • host-variable (optional mit INDICATOR- und LINDICATOR-Klauseln)

  • eine Konstante oder

  • das Schlüsselwort NULL.

Weitere Informationen siehe host-variable.

AD=
Attribut-Definition:
Wenn es sich bei dem parameter um eine host-variable handelt, können Sie ihn wie folgt markieren:
AD=O

Nicht änderbar, siehe Session-Parameter AD=O.

(Entsprechende Prozedur-Notation in DB2 for z/OS: IN.)

AD=M

Änderbar, siehe Session-Parameter AD=M.

(Entsprechende Prozedur-Notation in DB2 for z/OS: INOUT.)

AD=A

Nur zur Eingabe, siehe Session-Parameter AD=A.

(Entsprechende Prozedur-Notation in DB2 for z/OS: OUT.)

Wenn der parameter eine constant ist, kann AD nicht explizit angegeben werden. Für Konstanten gilt immer AD=O.
result-set
Feld für Result-Set-Locator-Variable:

Als result-set geben Sie ein Feld an, in das der Result-Set-Locator zurückgegeben werden soll.

Ein result-set muss eine Variable mit Format/Länge I4 sein.

Der Wert einer result-set-Variablen ist lediglich eine Zahl, die den Result Set identifiziert und die in einem nachfolgenden READ RESULT SET-Statement referenziert werden kann.

Die Reihenfolge der result-set-Werte entspricht der Reihenfolge der von der Stored Procedure zurückgegebenen Result Sets.

Der Inhalt der Result Sets kann von einem nachfolgenden READ RESULT SET-Statement verarbeitet werden. Wenn kein Result Set zurückgegeben wird, enthält die betreffende result-set-Variable Null (0).

Es können mehrere Result Sets angegeben werden. Siehe auch Result Sets (im Teil Natural for DB2 der Database Management System Interfaces-Dokumentation).

GIVING sqlcode
GIVING sqlcode-Option:

Mit dieser Option können Sie den SQL-Code des SQL CALL-Statements erhalten, das die Stored Procedure aufruft.

Wenn Sie diese Option angeben und der SQL-Code der Stored Procedure ist nicht Null (0), wird keine Natural-Fehlermeldung ausgegeben. In diesem Fall muss die als Reaktion auf den SQL-Codewert auszuführende Handlung im aufrufenden Natural-Objekt programmiert werden.

Das sqlcode-Feld muss eine Variable von Format/Länge I4 sein.

Wenn Sie die Option GIVING sqlcode nicht verwenden, gibt Natural eine Fehlermeldung aus, falls der SQL-Code der Stored Procedure nicht Null (0) ist.

CALLMODE
CALLMODE-Parameter:

Ist die Stored Procedure ein Natural-Subprogramm, das mit PARAMETER STYLE GENERAL oder PARAMETER STYLE GENERAL WITH NULL definiert ist, muss CALLMODE=NATURAL angegeben werden, sonst geben Sie NONE an.

Anmerkung:
CALLMODE=NATURAL wirkt sich auch auf interne Parameter aus, die an die bzw. von der Stored Procedure übergeben werden; siehe CALLMODE=NATURAL (im Abschnitt CALLDBPROC der Natural for DB2-Dokumentation).

Seitenanfang

Beispiel

Das folgende Beispiel zeigt ein Natural-Programm, das die Stored Procedure DEMO_PROC aufruft, um alle zu einem gegebenen Bereich gehörenden Namen der Tabelle PERSON einzulesen.

Drei Parameter-Felder werden an DEMO_PROC übergeben: der erste und zweite Parameter übergeben jeweils Start- und Endwerte des Bereichs von Namen an die Stored Procedure, und der dritte Parameter nimmt einen Namen auf, der das Kriterium erfüllt.

In diesem Beispiel werden die Namen in einem Result Set zurückgegeben, der mit dem READ RESULT SET-Statement verarbeitet wird.

DEFINE DATA LOCAL
1 PERSON VIEW OF DEMO-PERSON
  2 PERSON_ID
  2 LAST_NAME
1 #BEGIN    (A2) INIT <'AB'>
1 #END      (A2) INIT <'DE'>
1 #RESPONSE (I4) 
1 #RESULT   (I4) 
1 #NAME (A20)
END-DEFINE

...

CALLDBPROC 'DEMO_PROC' DEMO-PERSON #BEGIN (AD=O) #END (AD=O) #NAME (AD=A)
    RESULT SETS #RESULT
    GIVING #RESPONSE
  
READ RESULT SET #RESULT INTO #NAME FROM DEMO-PERSON
    GIVING #RESPONSE
  DISPLAY #NAME
END-RESULT

...

END

Weitere Beispiele siehe Example of CALLDBPROC/READ RESULT SET (im Abschnitt CALLDBPROC der Database Management System Interfaces-Dokumentation).

Seitenanfang