C/C++封裝庫ocicpplib呼叫Oracle儲存過程的方法
工作這麼多年,一直使用Mysql, Oracle資料庫沒有接觸過, 這次要使用C/C++語言來呼叫Oracle的儲存過程, 懶得自己去看OCI的API了, 直接上網找別人封裝的庫, 最後發現了這個ocicpplib, 下載了看了一下, 還不錯, 使用起來比較簡單。下面就對我使用這個庫來呼叫儲存過程的例子說明一下, 對應呼叫其他的sql語句就不說了, 自己看demo, 很簡單的。
ocicpplib庫的下載地址為 :
http://ocicpplib.sourceforge.net/ 以前是這個地址可以下載,現在不行了。
用下面這個:
http://nchc.dl.sourceforge.net/project/ocicpplib/ocicpplib/0.5.6/ocicpplib-0.5.6.tar.gz
下面使用這個簡單的儲存過程來進行測試, 有兩個輸出引數, 一個為字串型別, 一個為整數型別。
CREATE OR REPLACE PROCEDURE P_TEST
(
ID IN int,
Name OUT varchar2,
Result OUT int
)
IS
tmpVar NUMBER;
/******************************************************************************
******************************************************************************/
BEGIN
tmpVar := 0;
Name := 'www.csdn.net';
Result := 123456;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END P_TEST;
下面的程式碼為呼叫程式碼
#include <ocicpp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <sys/time.h>
#include <map>
#include <iostream.h>
using namespace OCICPP;
Connection g_OracleCon;
int main (int argc, char** argv)
{
db::init();
connect(g_OracleCon, "192.168.2.221/qatest", "root", "123456");
Cursor cur;
cur.drop();
char Name[128]={0};
int Result = 0;
short isNull = 0;
//g_OracleCon.prepare ("BEGIN P_CDN_GETTEST(1000, :resOut); END;", cur);
//cur.bind(param, val, &isNull);
std::string param1 = "Name";
std::string param2 = "Result";
g_OracleCon.prepare ("BEGIN P_TEST(1000, :Name, :Result); END;", cur);
cur.bind(param1, Name, sizeof(Name), &isNull);
cur.bind(param2, Result, &isNull);
cur.execute ();
printf ("Name=%s, Result=%d\n", Name, Result);
return 0;
}
就是如此簡單。。。。。
相關文章
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- ibatis呼叫oracle儲存過程(極簡版)BATOracle儲存過程
- 呼叫儲存過程儲存過程
- C++庫封裝JNI介面——實現java呼叫c++C++封裝Java
- 使用C++/CLI呼叫C#封裝類庫C++C#封裝
- oracle的儲存過程Oracle儲存過程
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- Oracle儲存過程Oracle儲存過程
- linux呼叫儲存過程Linux儲存過程
- Winform呼叫儲存過程ORM儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- Oracle儲存過程-1Oracle儲存過程
- jsp中呼叫儲存過程JS儲存過程
- mysql如何呼叫儲存過程MySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- 使用JPA和Hibernate呼叫儲存過程的最佳方法 - Vlad Mihalcea儲存過程
- mysql多次呼叫儲存過程的問題MySql儲存過程
- 通過EFCore呼叫GBase8s資料庫儲存過程資料庫儲存過程
- oracle儲存過程書寫格式Oracle儲存過程
- LightDB/PostgreSQL 相容Oracle儲存過程SQLOracle儲存過程
- MySQL儲存過程語句及呼叫MySql儲存過程
- 資料庫儲存過程資料庫儲存過程
- 使用JavaScript和Python實現Oracle資料庫的儲存過程?JavaScriptPythonOracle資料庫儲存過程
- jdbc使用call呼叫儲存過程報錯JDBC儲存過程
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- MySql資料庫——儲存過程MySql資料庫儲存過程
- c# 三步遞交模式呼叫同一個儲存過程C#模式儲存過程
- C/C++ Zlib庫封裝MyZip壓縮類C++封裝
- 關於SQL Server中儲存過程在C#中呼叫的簡單示例SQLServer儲存過程C#
- Oracle儲存過程中跳出迴圈的寫法Oracle儲存過程
- 通過JNI對C++進行封裝C++封裝
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- MySQL儲存過程的異常處理方法MySql儲存過程
- go 如何呼叫 sqlserver 帶傳出引數的儲存過程GoSQLServer儲存過程