CALLDBPROC (SQL)

CALLDBPROC dbproc ddm-name

 

 

 

M

[USING] parameter AD= O
      A
  [RESULT SETS result-set]
  [GIVING sqlcode]
 

CALLMODE=

NONE

           
  NATURAL            

Dieses Dokument Dokument behandelt folgende Themen:

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

Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen

Siehe auch CALLDBPROC - SQL im Teil Natural for DB2 in der Datenbankmanagementsystem-Schnittstellen-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 zurückzugeben, 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.

Einschränkung

Dieses Statement steht nur bei Natural for DB2 zur Verfügung.

Syntax-Beschreibung

Syntax-Element 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, mit Apostrophen ('), als Konstante 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 (DDM):

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

[USING] parameter
Zu übergebende(r) Parameter:

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

Als parameter können Sie Folgendes angeben:

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

  • eine Konstante oder

  • das Schlüsselwort NULL.

Siehe weitere Informationen zu host-variable.

AD=
Attribut-Definition:

Wenn es sich beim parameter um eine host-variable handelt, können Sie sie mit einem der folgenden Attribute versehen:

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 parameter eine Konstante ist, kann AD nicht explizit angegeben werden. Für Konstanten gilt immer AD=O.
RESULT SETS 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 entsprechende Result-Set-Variable den Wert Null (0).

Es können mehrere Result Sets angegeben werden.

Siehe auch Result Sets (im Teil Natural for DB2 in der Datenbankmanagementsystem-Schnittstellen-Dokumentation).

GIVING sqlcode
GIVING sqlcode-Option:

Diese Option können Sie benutzen, um den SQLCODE des SQL CALL-Statements zu erhalten, das die Stored Procedure aufruft.

Wenn Sie diese Option angeben und der SQLCODE der Stored Procedure ist ungleich Null (0), wird keine Natural-Fehlermeldung ausgegeben. In diesem Fall muss die als Reaktion auf den SQLCODE-Wert auszuführende Maßnahme 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 SQLCODE der Stored Procedure ungleich Null (0) ist.

CALLMODE=
CALLMODE-Parameter:

Mögliche Angaben:

CALLMODE=NATURAL Diese Angabe gilt, wenn die Stored Procedure ein Natural-Subprogramm ist, das mit PARAMETER STYLE GENERAL oder PARAMETER STYLE GENERAL WITH NULL definiert ist, sonst geben Sie NONE (Standardwert) an.

Diese Angabe 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).

CALLMODE=NONE Dies ist die Standardeinstellung.

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 abzurufen.

Drei Parameter-Felder werden an DEMO_PROC übergeben: der erste und zweite Parameter übergeben jeweils Start- und Endewerte 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 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 in der Natural for DB2-Dokumentation.