Start · Sprachen · PHP · Referenz · odbc_procedures

odbc_procedures

Funktion

Gibt eine Liste der in einer ODBC-Datenquelle verfügbaren gespeicherten Prozeduren als Ergebnis-Ressource zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

odbc_procedures(resource $odbc, ?string $catalog = null, ?string $schema = null, ?string $procedure = null): resource|false

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

Typ
resource|false
Beschreibung
Gibt eine ODBC-Ergebnis-Ressource zurück, die mit 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);
Gespeicherte Prozeduren: Schema: dbo, Name: usp_GetUser, Typ: 2 Schema: dbo, Name: usp_UpdateOrder, Typ: 1

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);
usp_GetUser usp_GetOrders Gefundene Prozeduren: 2

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