ホームページ  >  記事  >  データベース  >  cはOracleストアドプロシージャを呼び出します

cはOracleストアドプロシージャを呼び出します

王林
王林オリジナル
2023-05-13 15:27:07577ブラウズ

ソフトウェア開発では、ストアド プロシージャの呼び出しは一般的なデータベース操作の 1 つです。 Oracle は一般的に使用されるリレーショナル データベース管理システムであるため、ストアド プロシージャを呼び出すときは、Oracle が提供するインターフェイスを使用してプロセスを完了する必要があります。この記事では、C 言語を使用して Oracle ストアド プロシージャを呼び出す方法を紹介します。

1. Oracle ストアド プロシージャの概要

Oracle ストアド プロシージャは、特定のタスクまたは操作を実行するために使用される事前定義されたコード ブロックです。データベースにストアド プロシージャを作成した後、プログラム内でストアド プロシージャを呼び出し、パラメータと戻り値を渡すことができます。この利点は、ストアド プロシージャを再利用できると同時に、プログラムの効率とセキュリティも向上できることです。

2. C 言語を使用して Oracle ストアド プロシージャを呼び出す

C 言語を使用して Oracle ストアド プロシージャを呼び出す前に、Oracle データベースと通信するために Oracle ODBC ドライバーがインストールされていることを確認する必要があります。次に、次の手順に従って、C 言語を使用して Oracle ストアド プロシージャを呼び出す方法を示します:

1. Oracle データベースに接続します

Oracle ODBC ドライバーを使用する前に、 ODBC データソース。 ODBC データ ソースは、Windows オペレーティング システムの「コントロール パネル」の「データ ソース (ODBC)」から作成できます。次のように、プログラム内でデータ ソース名を指定することもできます:

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 ステートメントの準備

ストアド プロシージャを呼び出す前に、SQL ステートメントを準備して、データベース実行に渡されます。次の例は、「get_employee」という名前のストアド プロシージャを実行する単純な SQL ステートメントを準備する方法を示しています。

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);

上の例では、SQLPrepare 関数を使用して SQL ステートメントを準備し、「SQLBindParameter」を使用します。 " 関数を使用して、パラメーターをステートメントの "?" プレースホルダーにバインドします。ストアド プロシージャの 1 番目と 2 番目のパラメータはそれぞれ入力パラメータであり、3 番目と 4 番目のパラメータはそれぞれ出力パラメータです。

3. SQL ステートメントを実行する

SQL ステートメントが準備され、パラメーターがバインドされたら、「SQLExecute」関数を使用してステートメントを実行できます。ストアド プロシージャが実行されると、出力パラメータの値を取得できるカーソルが自動的に作成されます。 SQL ステートメントの実行例を次に示します。

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;
}

上記の例では、SQL ステートメントは「SQLExecute」関数によって実行され、出力パラメーターの値は「SQLFetch」関数で取得されます。

4. Oracle データベースからの切断

ストアド プロシージャの呼び出しが完了したら、「SQLDisconnect」関数を使用して Oracle データベースから切断し、割り当てられたリソースを解放する必要があります。次の例は、Oracle データベースから切断する方法を示しています。

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

上記の手順により、C 言語を使用して Oracle ストアド プロシージャを呼び出すことができます。

3. 概要

この記事では、C 言語を使用して Oracle ストアド プロシージャを呼び出す方法を紹介します。これには主に、Oracle データベースへの接続、SQL ステートメントの準備、SQL ステートメントの実行、Oracle データベースからの切断が含まれます。などのステップ。実際の開発では、特定のニーズに応じて修正や調整を行うことができます。この記事の導入により、C 言語を使用して Oracle ストアド プロシージャを呼び出すことについて、ある程度の理解と理解が得られたと思います。

以上がcはOracleストアドプロシージャを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。