CALLDBPROC (SQL)

#### Search Results

Search

# 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:

- Funktion

- Einschränkung

- Syntax-Beschreibung

- Beispiel

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 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 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 Database Management System Interfaces-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.

### On this page

- Funktion
- Einschränkung
- Syntax-Beschreibung
- Beispiel