Heim  >  Artikel  >  Datenbank  >  c ruft die gespeicherte Oracle-Prozedur auf

c ruft die gespeicherte Oracle-Prozedur auf

王林
王林Original
2023-05-13 15:27:07536Durchsuche

In der Softwareentwicklung ist der Aufruf gespeicherter Prozeduren eine der häufigsten Datenbankoperationen. Oracle ist ein häufig verwendetes relationales Datenbankverwaltungssystem. Wenn Sie also eine gespeicherte Prozedur aufrufen, müssen Sie die von ihr bereitgestellte Schnittstelle verwenden, um den Vorgang abzuschließen. In diesem Artikel wird erläutert, wie Sie mithilfe der C-Sprache gespeicherte Oracle-Prozeduren aufrufen.

1. Einführung in gespeicherte Oracle-Prozeduren

Oracle-gespeicherte Prozeduren sind vordefinierte Codeblöcke, die zum Ausführen bestimmter Aufgaben oder Vorgänge verwendet werden. Nachdem Sie eine gespeicherte Prozedur in der Datenbank erstellt haben, können Sie sie in Ihrem Programm aufrufen und Parameter und Rückgabewerte übergeben. Dies hat den Vorteil, dass gespeicherte Prozeduren wiederverwendet werden können und gleichzeitig die Effizienz und Sicherheit des Programms verbessert werden.

2. Verwenden Sie die Sprache C, um gespeicherte Oracle-Prozeduren aufzurufen.

Bevor Sie die Sprache C verwenden, um gespeicherte Oracle-Prozeduren aufzurufen, müssen Sie sicherstellen, dass der Oracle ODBC-Treiber für die Kommunikation mit der Oracle-Datenbank installiert ist. Als Nächstes demonstrieren wir anhand der folgenden Schritte, wie gespeicherte Oracle-Prozeduren mithilfe der C-Sprache aufgerufen werden:

1 Verbindung zur Oracle-Datenbank herstellen

Bevor wir den Oracle ODBC-Treiber verwenden, müssen wir eine ODBC-Datenquelle für das Programm erstellen. ODBC-Datenquellen können über „Datenquellen (ODBC)“ in der „Systemsteuerung“ des Windows-Betriebssystems erstellt werden. Sie können den Datenquellennamen auch im Programm angeben, wie unten gezeigt:

SQLRETURN rc;
SQLHDBC hdbc;
SQLAllocHandle(SQL_HANDLE_DBC, SQL_NULL_HANDLE, &hdbc);
rc = SQLConnect(hdbc, (SQLCHAR*)datasource_name, SQL_NTS, (SQLCHAR*)uid, SQL_NTS, (SQLCHAR*)pwd, SQL_NTS);
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
    printf("connect to oracle failed
");
    return;
}

2. SQL-Anweisungen vorbereiten

Bevor Sie die gespeicherte Prozedur aufrufen, müssen Sie die SQL-Anweisung vorbereiten, damit sie zur Ausführung an die Datenbank übergeben werden kann . Das folgende Beispiel zeigt, wie eine einfache SQL-Anweisung vorbereitet wird, die eine gespeicherte Prozedur namens „get_employee“ ausführt:

SQLHSTMT hstmt;
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
SQLCHAR* sql = (SQLCHAR*)"{call get_employee(?, ?, ?, ?)}";
SQLINTEGER param1 = 10, param2 = 3;
SQLDOUBLE param3 = 0.0;
SQLCHAR param4[20];
rc = SQLPrepare(hstmt, sql, SQL_NTS);
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
    printf("prepare sql failed
");
    return;
}
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &param1, 0, NULL);
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &param2, 0, NULL);
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_OUTPUT, SQL_C_DOUBLE, SQL_DOUBLE, 0, 0, &param3, 0, NULL);
rc = SQLBindParameter(hstmt, 4, SQL_PARAM_OUTPUT, SQL_C_CHAR, SQL_VARCHAR, 20, 0, param4, sizeof(param4), NULL);

Im obigen Beispiel wird eine SQL-Anweisung mithilfe der Funktion „SQLPrepare“ vorbereitet und die Funktion „SQLBindParameter“ bindet Parameter an Der „?“-Platzhalter der Anweisung. Der erste und zweite Parameter der gespeicherten Prozedur sind jeweils Eingabeparameter und der dritte und vierte Parameter sind Ausgabeparameter.

3. Führen Sie die SQL-Anweisung aus

Nachdem die SQL-Anweisung vorbereitet und die Parameter gebunden sind, können wir die Funktion „SQLExecute“ verwenden, um die Anweisung auszuführen. Wenn eine gespeicherte Prozedur ausgeführt wird, erstellt sie automatisch einen Cursor, in dem der Wert des Ausgabeparameters abgerufen werden kann. Das Folgende ist ein Beispiel für die Ausführung einer SQL-Anweisung:

rc = SQLExecute(hstmt);
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
    printf("execute sql failed
");
    return;
}
rc = SQLFetch(hstmt);
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO && rc != SQL_NO_DATA) {
    printf("fetch data failed
");
    return;
}

Im obigen Beispiel wird die SQL-Anweisung über die Funktion „SQLExecute“ ausgeführt und der Wert des Ausgabeparameters wird in der Funktion „SQLFetch“ abgerufen.

4. Verbindung zur Oracle-Datenbank trennen

Nach Abschluss des Aufrufs der gespeicherten Prozedur müssen Sie die Funktion „SQLDisconnect“ verwenden, um die Verbindung zur Oracle-Datenbank zu trennen, um die zugewiesenen Ressourcen freizugeben. Das folgende Beispiel zeigt, wie die Verbindung zur Oracle-Datenbank getrennt wird:

SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

Durch die obigen Schritte können wir die Sprache C verwenden, um gespeicherte Oracle-Prozeduren aufzurufen.

3. Zusammenfassung

In diesem Artikel wird erläutert, wie Sie mit der Sprache C gespeicherte Oracle-Prozeduren aufrufen. Dies umfasst hauptsächlich die Schritte zum Herstellen einer Verbindung zur Oracle-Datenbank, zum Vorbereiten von SQL-Anweisungen, zum Ausführen von SQL-Anweisungen und zum Trennen der Verbindung zur Oracle-Datenbank. In der tatsächlichen Entwicklung können Änderungen und Anpassungen entsprechend den spezifischen Anforderungen vorgenommen werden. Ich glaube, dass Sie durch die Einleitung dieses Artikels ein gewisses Verständnis und Verständnis für die Verwendung der C-Sprache zum Aufrufen gespeicherter Oracle-Prozeduren erworben haben.

Das obige ist der detaillierte Inhalt vonc ruft die gespeicherte Oracle-Prozedur auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn