Rumah  >  Artikel  >  pangkalan data  >  c memanggil prosedur tersimpan oracle

c memanggil prosedur tersimpan oracle

王林
王林asal
2023-05-13 15:27:07536semak imbas

Dalam pembangunan perisian, memanggil prosedur tersimpan adalah salah satu operasi pangkalan data biasa. Oracle ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan, jadi apabila memanggil prosedur tersimpan, anda perlu menggunakan antara muka yang disediakan untuk menyelesaikan proses tersebut. Artikel ini akan memperkenalkan cara menggunakan bahasa C untuk memanggil prosedur tersimpan Oracle.

1. Pengenalan kepada prosedur tersimpan Oracle

Prosedur tersimpan Oracle ialah blok kod pratakrif yang digunakan untuk melaksanakan tugas atau operasi tertentu. Selepas anda membuat prosedur tersimpan dalam pangkalan data, anda boleh memanggilnya dalam program anda dan lulus parameter dan nilai pulangan. Kelebihan ini ialah prosedur tersimpan boleh digunakan semula, di samping meningkatkan kecekapan dan keselamatan program.

2. Gunakan bahasa C untuk memanggil prosedur tersimpan Oracle

Sebelum menggunakan bahasa C untuk memanggil prosedur tersimpan Oracle, kita perlu memastikan pemacu Oracle ODBC dipasang untuk berkomunikasi dengan pangkalan data Oracle. Seterusnya, kami akan menunjukkan cara memanggil prosedur tersimpan Oracle menggunakan bahasa C melalui langkah berikut:

1 Sambung ke pangkalan data Oracle

Sebelum menggunakan pemacu Oracle ODBC, kita perlu mencipta satu. Sumber data ODBC. Sumber data ODBC boleh dibuat melalui "Sumber Data (ODBC)" dalam "Panel Kawalan" sistem pengendalian Windows. Anda juga boleh menentukan nama sumber data dalam program, seperti berikut:

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. Sediakan pernyataan SQL

Sebelum memanggil prosedur tersimpan, anda perlu menyediakan pernyataan SQL supaya ia boleh diserahkan kepada pelaksanaan Pangkalan Data. Contoh berikut menunjukkan cara menyediakan pernyataan SQL mudah yang melaksanakan prosedur tersimpan bernama "get_employee":

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

Dalam contoh di atas, pernyataan SQL disediakan menggunakan fungsi "SQLPrepare", Dan gunakan "SQLBindParameter " berfungsi untuk mengikat parameter kepada pemegang tempat "?" bagi pernyataan. Parameter pertama dan kedua bagi prosedur tersimpan masing-masing ialah parameter input, dan parameter ketiga dan keempat ialah parameter keluaran masing-masing.

3 Jalankan pernyataan SQL

Selepas pernyataan SQL disediakan dan parameter terikat, kita boleh menggunakan fungsi "SQLEexecute" untuk melaksanakan pernyataan. Apabila prosedur tersimpan dilaksanakan, ia secara automatik mencipta kursor di mana nilai parameter output boleh diambil. Berikut ialah contoh melaksanakan pernyataan 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;
}

Dalam contoh di atas, pernyataan SQL dilaksanakan melalui fungsi "SQLEexecute" dan nilai parameter output diperoleh dalam fungsi "SQLFetch".

4. Putuskan sambungan daripada pangkalan data Oracle

Selepas melengkapkan panggilan ke prosedur tersimpan, anda perlu menggunakan fungsi "SQLDisconnect" untuk memutuskan sambungan daripada pangkalan data Oracle untuk melepaskan sumber yang diperuntukkan. Contoh berikut menunjukkan cara memutuskan sambungan daripada pangkalan data Oracle:

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

Melalui langkah di atas, kita boleh menggunakan bahasa C untuk memanggil prosedur tersimpan Oracle.

3. Ringkasan

Artikel ini memperkenalkan cara menggunakan bahasa C untuk memanggil prosedur tersimpan Oracle, yang terutamanya termasuk menyambung ke pangkalan data Oracle, menyediakan pernyataan SQL, melaksanakan pernyataan SQL dan memutuskan sambungan daripada pangkalan data Oracle, dan lain-lain langkah. Dalam pembangunan sebenar, pengubahsuaian dan pelarasan boleh dibuat mengikut keperluan tertentu. Melalui pengenalan artikel ini, saya percaya bahawa anda mempunyai pemahaman dan pemahaman tertentu tentang menggunakan bahasa C untuk memanggil prosedur tersimpan Oracle.

Atas ialah kandungan terperinci c memanggil prosedur tersimpan oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn