Signatur
Beschreibung
db2_procedures() ist Teil der IBM DB2-Erweiterung (ibm_db2) und gibt ein Resultset zurück, das Metadaten über gespeicherte Prozeduren enthält, die in der angegebenen Datenbank vorhanden sind. Die Funktion ist nützlich, um Datenbankschemas zu inspizieren, etwa bei Dokumentationsaufgaben, automatischer Code-Generierung oder beim Aufbau von Datenbankwerkzeugen.
Das zurückgegebene Resultset enthält unter anderem Spalten wie PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME, NUM_INPUT_PARAMS, NUM_OUTPUT_PARAMS, NUM_RESULT_SETS und REMARKS, die detaillierte Informationen über die jeweilige Prozedur liefern.
Die Parameter qualifier, schema und procedure unterstützen Suchmuster mit den Wildcard-Zeichen % (beliebig viele Zeichen) und _ (genau ein Zeichen), sodass sich Ergebnisse gezielt filtern lassen. Nicht benötigte Filterparameter können als null oder leerer String übergeben werden.
Das Resultset wird mit den üblichen DB2-Fetch-Funktionen wie db2_fetch_assoc() oder db2_fetch_array() ausgewertet.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection Pflicht | resource | Eine aktive DB2-Datenbankverbindung, die mit db2_connect() oder db2_pconnect() erzeugt wurde. |
|
| $qualifier Pflicht | string|null | Der Qualifier (Katalogname) für Datenbanken auf OS/390- oder z/OS-Systemen. Für andere Systeme null oder einen leeren String übergeben. |
|
| $schema Pflicht | string | Der Name des Datenbankschemas, in dem nach gespeicherten Prozeduren gesucht wird. Unterstützt Suchmuster mit % und _. Ein leerer String oder % durchsucht alle Schemata. |
|
| $procedure Pflicht | string | Der Name der gespeicherten Prozedur, nach der gesucht werden soll. Unterstützt Suchmuster mit % und _. Ein % liefert alle Prozeduren im angegebenen Schema. |
Rückgabewert
false zurückgegeben.Beispiele
Alle gespeicherten Prozeduren in einem Schema auflisten
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheim');
if ($conn) {
$stmt = db2_procedures($conn, null, 'MYSCHEMA', '%');
if ($stmt) {
while ($row = db2_fetch_assoc($stmt)) {
echo 'Prozedur: ' . $row['PROCEDURE_NAME'] . PHP_EOL;
echo ' Schema: ' . $row['PROCEDURE_SCHEM'] . PHP_EOL;
echo ' Input-Parameter: ' . $row['NUM_INPUT_PARAMS'] . PHP_EOL;
echo ' Output-Parameter:' . $row['NUM_OUTPUT_PARAMS'] . PHP_EOL;
echo ' Resultsets: ' . $row['NUM_RESULT_SETS'] . PHP_EOL;
echo ' Bemerkung: ' . $row['REMARKS'] . PHP_EOL;
echo '---' . PHP_EOL;
}
} else {
echo 'Fehler beim Abrufen der Prozeduren: ' . db2_stmt_errormsg();
}
db2_close($conn);
} else {
echo 'Verbindungsfehler: ' . db2_conn_errormsg();
}
Gespeicherte Prozeduren nach Namensmuster filtern
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheim');
if ($conn) {
// Nur Prozeduren, deren Name mit 'GET_' beginnt
$stmt = db2_procedures($conn, null, '%', 'GET\_%');
if ($stmt) {
echo 'Gefundene GET_*-Prozeduren:' . PHP_EOL;
while ($row = db2_fetch_assoc($stmt)) {
printf(
" [%s] %s.%s (Inputs: %d, Outputs: %d)\n",
$row['PROCEDURE_CAT'] ?? '-',
$row['PROCEDURE_SCHEM'],
$row['PROCEDURE_NAME'],
$row['NUM_INPUT_PARAMS'],
$row['NUM_OUTPUT_PARAMS']
);
}
}
db2_close($conn);
}
// Wichtig · Fallstricke
Verfügbarkeit: db2_procedures() ist Teil der ibm_db2-Erweiterung, die separat installiert werden muss (PECL). Sie steht nur zur Verfügung, wenn PHP mit dieser Erweiterung kompiliert oder sie als dynamisches Modul geladen wurde.
Wildcard-Behandlung: Das Suchzeichen % steht für beliebig viele Zeichen, _ für genau ein Zeichen. Soll nach einem Literal-Unterstrich gesucht werden, muss er entsprechend maskiert werden (datenbankabhängig).
Portabilität: Diese Funktion ist speziell für IBM DB2, Cloudscape und Apache Derby ausgelegt und nicht auf andere Datenbanksysteme übertragbar. Für ähnliche Metadaten-Abfragen in anderen DBMS existieren vergleichbare Funktionen in PDO oder den jeweiligen nativen Erweiterungen.