Signatur
Beschreibung
odbc_procedures() liefert eine Liste aller gespeicherten Prozeduren (Stored Procedures), die in der angegebenen ODBC-Datenquelle vorhanden sind. Die Rückgabe ist eine ODBC-Ergebnis-Ressource, die mit den üblichen ODBC-Fetch-Funktionen wie odbc_fetch_row() oder odbc_result() ausgewertet werden kann.
Die Funktion ist besonders nützlich, wenn zur Laufzeit dynamisch ermittelt werden soll, welche Prozeduren in einer Datenbank existieren – etwa für Administrations-Tools, Datenbank-Browser oder generische Datenbankabstraktionsschichten. Durch Angabe der optionalen Parameter catalog, schema und procedure kann das Suchergebnis gezielt eingeschränkt werden; dabei sind SQL-Wildcards (% und _) erlaubt.
Das Ergebnis enthält standardisierte Spalten gemäß ODBC-Spezifikation, darunter PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME, NUM_INPUT_PARAMS, NUM_OUTPUT_PARAMS, NUM_RESULT_SETS, REMARKS und PROCEDURE_TYPE. Die tatsächlich zurückgelieferten Spalten können je nach ODBC-Treiber variieren.
Im Fehlerfall – z. B. bei ungültiger Verbindung oder nicht unterstützter Funktion des ODBC-Treibers – gibt die Funktion false zurück. Es empfiehlt sich daher, den Rückgabewert stets zu prüfen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $odbc Pflicht | resource | Eine gültige ODBC-Verbindungs-Ressource, die zuvor mit odbc_connect() oder odbc_pconnect() erzeugt wurde. |
|
| $catalog | ?string | null | Der Name des Katalogs (in vielen DBMS der Datenbankname). null bedeutet, dass der Katalog nicht als Filterkriterium verwendet wird. SQL-Wildcards (%) sind erlaubt. |
| $schema | ?string | null | Das Datenbankschema, in dem nach Prozeduren gesucht wird. null deaktiviert den Filter. SQL-Wildcards (%) sind erlaubt. |
| $procedure | ?string | null | Name der gesuchten Prozedur. null oder % liefert alle verfügbaren Prozeduren. SQL-Wildcards (% und _) werden unterstützt. |
Rückgabewert
odbc_fetch_row(), odbc_result() oder ähnlichen Funktionen ausgewertet werden kann. Im Fehlerfall wird false zurückgegeben.Beispiele
Alle gespeicherten Prozeduren einer Datenquelle auflisten
<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = odbc_procedures($conn);
if ($result === false) {
die('Fehler beim Abrufen der Prozeduren');
}
echo "Gespeicherte Prozeduren:\n";
while (odbc_fetch_row($result)) {
$name = odbc_result($result, 'PROCEDURE_NAME');
$schema = odbc_result($result, 'PROCEDURE_SCHEM');
$type = odbc_result($result, 'PROCEDURE_TYPE');
echo " Schema: {$schema}, Name: {$name}, Typ: {$type}\n";
}
odbc_free_result($result);
odbc_close($conn);
Prozeduren nach Namens-Muster filtern
<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
// Nur Prozeduren, deren Name mit 'usp_Get' beginnt
$result = odbc_procedures($conn, null, 'dbo', 'usp_Get%');
if ($result === false) {
die('Fehler beim Abrufen der Prozeduren');
}
$count = 0;
while (odbc_fetch_row($result)) {
$count++;
echo odbc_result($result, 'PROCEDURE_NAME') . "\n";
}
echo "Gefundene Prozeduren: {$count}\n";
odbc_free_result($result);
odbc_close($conn);
// Wichtig · Fallstricke
Treiber-Abhängigkeit: Nicht alle ODBC-Treiber unterstützen odbc_procedures() vollständig. Bei manchen Treibern können einzelne Spalten fehlen oder null zurückliefern. Es empfiehlt sich, die verfügbaren Spalten vorab mit odbc_num_fields() zu prüfen.
Wildcards: Die Parameter catalog, schema und procedure akzeptieren SQL-Suchmuster. Ein einzelnes % steht für beliebig viele Zeichen, _ für genau ein Zeichen. Um nach einem literalen % oder _ zu suchen, muss das Zeichen escapet werden – wie das geht, hängt vom jeweiligen ODBC-Treiber ab.
Ressourcen freigeben: Die zurückgegebene Ergebnis-Ressource sollte nach der Verwendung mit odbc_free_result() freigegeben werden, um Speicher zu sparen.