otl簡單介紹:
oracle 儲存函式 func_test **:
create or replace function func_test(
a in integer, b in out integer, c out integer)
return integer
isd integer;
begin
c := 10 * b;
d := a + b;
b := a;
return d;
end;
/說明:此函式有3個引數,a 是入參,b 是輸出引數,c 是輸入輸出引數;此函式的返回值是 integer 型別的,在儲存函式執行完之後,倒數第二句返回 d 的值。
oracle 儲存過程 proc_test **:
create or replace procedure proc_test
(a in varchar2,b out varchar2)
istmpvar number;
begin
tmpvar := 0;
b := a;
exception
when no_data_found then
null;
when others then
-- consider logging the error and then re-raise
raise;
end proc_test;
/說明:此過程有2個引數,a 是varchar2型別的入參, b 是varchar2型別的輸出引數;此過程中加入了異常處理塊(不過這個過程太簡單,似乎沒有太大用處)。
c++呼叫以上兩個過程和函式的**:
#include
#include
#define otl_ora9i // 使用這個巨集就表示使用oracle9i的api,而不是odbc api;我這裡就先用oci來演示
//#define otl_odbc // 使用這個巨集就表示使用通用的odbc api
#include "otlv4.h"
using namespace std;
void main( void )
catch( otl_exception& p )
}執行結果:
p_b = 192.168.1.1
f_b = 1, f_c = 20, f_d = 21
備註:
更多例子請到 http://otl.sourceforge.net/otl3_examples.htm
OTL呼叫Oracle儲存過程
otl很早前用過,今天寫東西要調儲存過程,程式寫完了,除錯死活通不過,折騰了一早晨。最後才發現錯誤,這裡總結一下 1 寫的不規範。有個引數後邊少寫了個 以至於總是抱錯。而單獨寫的測試例子就沒問題,後來一步一步跟蹤了後才發現。2 呼叫格式 a 如果 define otl ora9i compile o...
OTL呼叫Oracle儲存過程
otl很早前用過,今天寫東西要調儲存過程,程式寫完了,除錯死活通不過,折騰了一早晨。最後才發現錯誤,這裡總結一下 1 寫的不規範。有個引數後邊少寫了個 以至於總是抱錯。而單獨寫的測試例子就沒問題,後來一步一步跟蹤了後才發現。2 呼叫格式 a 如果 define otl ora9i compile o...
使用OTL呼叫Oracle的儲存函式
otl介紹 otl 是 oracle,odbc and db2 cli template library 的縮寫,是乙個c 操控關聯式資料庫的模板庫,最新版本4.0.104,參見 優點 a.跨平台 b.執行效率高,與c語言直接呼叫api相當 c.開發效率高,起碼比ado.net使用起來更簡單,更簡潔...