C++调用TEST的代码:
#include
#include
//#define OTL_ORA9I // 使用这个宏就表示使用Oracle9i的API,而不是ODBC API
#define OTL_ODBC // 使用这个宏就表示使用通用的ODBC API
#include "otlv4.h"
using namespace std;
void main( void )
{
otl_connect::otl_initialize();
try {
otl_connect db;
db.rlogon( "Driver={Microsoft ODBC for Oracle};Server=ZZZ;Uid=XXX;Pwd=YYY;" );
// db.set_max_long_size(?); 如果varchar_long长度非常长,超过默认值的话,你需要这一句
otl_stream o( 1, "{ :E = call TEST( :A,:B,:C,:D o.set_commit(0);
int a = 1;
int b = 0;
int c = 2;
otl_long_string d( "abc", 0, 3 );
otl_long_string e;
o << a << c << d;
o >> e >> b >> c;
cout << "b = " << b << '\n';
cout << "c = " << c << '\n';
cout << "e = " << e.v << '\n';
//db.commit();
db.logoff();
}
catch( otl_exception& p ) {
cerr << p.msg << "\n"
<< p.stm_text << "\n"
<< p.sqlstate << "\n"
<< p.var_info << "\n"
<< endl;
}
}
说明:"{ :E = call TEST( :A,:B,:C,:D"{ call :Name1 := function( Name2 }"
也不是
"{ call :Name1 \\:= function( Name2 }"
而是
"{ :Name1 = call function( Name2 }"
这一点和otl.sourceforge.net上的说明不一样。
--------------------next---------------------
阅读(345) | 评论(0) | 转发(0) |