OTL呼叫儲存過程和函式

2021-05-02 00:37:53 字數 1388 閱讀 8941

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使用起來更簡單,更簡潔...