使用OTL调用Oracle的存储函数

使用OTL4开发Oracle 以前用proc*c开发Oracle, 觉得麻烦了点。现在在AIX机器上用OTL4开发Oracle, 比较顺手。 [OTL4介绍]OTL介绍:  OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++操控关系数据库的模板库,  最新版本4.0.104,参见http://otl.sourceforge.net/,下载地址ht 阅读详情
OTL介绍:
OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++操控关系数据库的模板库,最新版本4.0.104,参见 http://otl.sourceforge.net/,下载地址 http://otl.sourceforge.net/otlv4_h.zip。
优点:a. 跨平台
      b. 运行效率高,与C语言直接调用API相当
      c. 开发效率高,起码比ADO.net使用起来更简单,更简洁
      d. 部署容易,不需要ADO组件,不需要.net framework 等
缺点:
      a. 只有C++才可以使用她
      b. 说明以及范例不足(暂时性的)


总的说来,对于C++程序员而言,使用OTL操作关系数据库是最好的选择,其网站上有很多的范例,本人在这里对使用OTL调用Oracle的 存储函数(存储函数比存储过程多个返回值)作一个示范,而其他的比如查询、更新、存储过程等就太简单了,直接看 otl.sourceforge.net的范例 。

Oracle 存储函数 TEST 代码:
( a In Integer, b Out Integer, c in out Integer, d In Long ) Return Long
is
begin
    b := a;
    c := 2 * c;
    Return( '<' || d || '>' );
end;
说明:Oracle中的long不是C/C++中的长整型,而是varchar_long,对应着OTL中的otl_long_string,这是一种很复杂的类型,本人就用它来举例。

C++调用TEST的代码:
#include <string>
#include <iostream>
//#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<varchar_long,out> = call TEST(  :A<int,in>,:B<int,out>,:C<int,inout>,:D<varchar_long,in&g t; ) }", db );
        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<varchar_long,out> = call TEST(  :A<int,in>,:B<int,out>,:C<int,inout>,:D<varchar_long,in&g t; ) }"这一句中的A、B、C、D、E就是一个名字,随各人喜欢可写成其他任何名称。但这个格式需要注意,它不是
"{ call :Name1<int,out> := function( Name2<int,in> }"
也不是
"{ call :Name1<int,out> //:= function( Name2<int,in> }"
而是
"{ :Name1<int,out> = call function( Name2<int,in> }"
这一点和otl.sourceforge.net上的说明不一样。
 
OTL学习笔记--OTLHelper的实现 OTL简介OTL是Oracle, ODBC and DB2-CLI Template Library的缩写,目前版本是4.0,是基于C++模板机制的C++库。 OTL 4.0 由一个C++模板框架(C++ template framework)和许多OTL适配器(OTL-adapters)组成。框架是OTL streams的泛型实现,OTL适配器是底层数据库API的包装类,作为对象的类型参 阅读详情

相关推荐

OTL开源文本处理器:强大的定制化文本转换工具

本文还有配套的精品资源,点击获取 简介:OTL(Open Text Processor)是一个开源的文本处理工具,它能够将纯文本转换为多种标记语言,如HTML和Markdown等。用户可以根据需要定制输入输出格式,并利用其高级特性处理复杂文档。OTL支持开放源代码原则,鼓励社区协作和创新,通过查看和修改源代码来满足不断变化的需求。开发者可以利用提供的代码包进行深入研究或二次...

weixin_42103128的博客 1302

OTL:通用数据库连接模板

OTL使用,以及使用中的缓存问题

抱猫人的博客 1956

otl4.h头文件

OTL是Oracle, ODBC and DB2-CLI Template Library的缩写,目前版本是4.0,是基于C++模板机制的C++库。 OTL 4.0 由一个C++模板框架(C++ template framework)和许多OTL适配器(OTL-adapters)组成。框架是OTL streams的泛型实现,OTL适配器是底层数据库API的包装类,作为对象的类型参数传递给模板框架。

OTL 简介

OTL 是 Oracle,Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的通用模板库,它目前几乎支持所有的当前各种主流数据库,例如Oracle,MS SQL Server,Sybase,Informix,MySQL,DB2,Interbase / Firebird,PostgreSQL,SQLite,SAP/DB,TimesTen,MS

混沌的博客 3607

(蓝桥杯)STM32G431RBT6(SysTick timer)

选用最基础的定时器。

2301_81764359的博客 1902

保姆级拆解:HP 1312NF/CM1415打印机进纸离合器清洁与更换全记录(附B站/油管视频指路)

本文详细记录了HP 1312NF打印机进纸离合器故障的诊断与修复全过程,包括故障判断、工具准备、拆解步骤、清洁更换技巧及预防措施。特别针对离合器内部海绵老化粘连问题,提供了电工胶布和硬纸片两种实用替代方案,并附有B站/油管视频指路,帮助用户轻松完成打印机维修。

weixin_31102231的博客 376

OTL资料简单介绍

OTL资料简单介绍 http://blog.youkuaiyun.com/cskerrydn/article/details/4433462 OTL资料简编       1.     序 2.     简介 2.1.    OTL介绍 2.2.    OTL的使用 3.     常用otl类 3.1.    otl_connect类 3.2.    otl_stream

zdy0_2004的专栏 1192

oracle otl,使用OTL调用Oracle的存储函数

OTL介绍:OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++操控关系数据库的模板库,最新版本4.0.104,参见,下载地址otlv4_h.zip。优点:a. 跨平台b. 运行效率高,与C语言直接调用API相当c. 开发效率高,使用起来更简单,更简洁d. 部署容易,不需要ADO组件, framework 等缺点:a. 只有C++才可...

weixin_35073484的博客 401

Excel VBA | 一键批量生成对账单

根据对账单总表一键批量生成N家独立的客户对账单。

Microgoblins的博客 6985

MicroBlaze系列教程(5):AXI_UART16550的使用

axi-uart16550是Xilinx的一款串口IP核,支持配置成16450或16550模式,16550和16450是指的早期电脑主板上的串口芯片型号,16550相比于16450多了FIFO,现在已经很少使用。相比于,16550支持1或2位停止位,包括uartlite所有的功能,而且支持在SDK中灵活对波特率、数据、校验方式进行配置。与uartlite不同的是,不能单独指定发送中断和接收中断函数,只有一个中断函数,通过event参数来区分当前是发送或接收中断。

whik1194的博客 4543

otl oracle存储日期,使用OTL调用Oracle的存储函数

OTL介绍:OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++操控关系数据库的模板库,最新版本4.0.104,参见http://otl.sourceforge.net/,下载地址http://otl.sourceforge.net/otlv4_h.zip。优点:a. 跨平台b. 运行效率高,与C语言直接调用API相当...

weixin_39524048的博客 130

Simulink仿真状态空间中状态变量时域响应

起因 今天老师留了一道关于状态空间变量响应的题,于是想用simulink仿真,一开始使用state-space模块,但是发现它只能输出y,没办法显示状态变量的变化情况。然而状态变量之间的关系都可以表示为一阶微分方程组,因此我们考虑在Simulink中搭建微分方程组来求解这个问题。 微分方程组 x1˙=x2x2˙=−4x1−5x2+1(1)\dot{x_1}=x_2\\ \dot{x_2}=-4x_...

ZYunfei的博客 7452

otl oracle存储过程,OTL调用存储过程/函数及注意事项

OTL是Oracle, Odbc and DB2-CLI Template Library的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库。OTL使用起来比较方便,其官方网站也提供了详细的文档和例子(http://otl.sourceforge.net/otl3.htmhttp://otl.sourceforge.net/otl3_examp...

weixin_42123191的博客 270

第2.0章 机器人C++学习开篇(一):SLAM为什么使用C++语言及学习路线资料推荐

ROS(机器人操作系统):机器人领域的“操作系统”,提供节点通信、参数管理、工具链支持,是SLAM算法在机器人上部署的核心框架。PCL(点云库):处理三维点云数据的利器,包含滤波、分割、配准等算法,是激光SLAM的核心依赖。Eigen(矩阵运算库):高效的矩阵与线性代数运算库,SLAM中的位姿变换、优化求解都依赖它。Ceres/G2O(优化库):SLAM后端优化的“王牌”,Ceres擅长通用非线性优化,G2O则专为图优化设计,二者是BA( bundle adjustment)等算法的实现基础。

行知SLAM 1243

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.6 在kernel 中实现系统复位和系统关机驱动

上一章节`Qemu`篇我们已经实现了我们`SOC`的`power reset`和 `power down` 寄存器,本章节我们就在`Linux driver`中去实现它

DSMGUOGUO的博客 543

OTL调用存储过程和函数

OTL简单介绍:        OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++操控关系数据库的模板库,最新版本4.0.104,参见http://otl.sourceforge.net/,下载地址http://otl.sourceforge.net/otlv4_h.zip。优点:a. 跨平台      b. 运行效率高,与C语

kerry的专栏 3744

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

OTL介绍

OTL介绍:OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++操控关系数据库的模板库,最新版本4.0.104,参见http://otl.sourceforge.net/,下载地址http://otl.sourceforge.net/otlv4_h.zip。优点:a. 跨平台      b. 运行效率高,与C语言直接调用API相当  

weimeiai的专栏 1779

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

OTL调用存储过程/函数及注意事项

OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个 C++ 编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库。 OTL 使用起来比较方便,其官方网站也提供了详细的文档和例子( http://otl.sourceforge.net/otl3.htmhttp://otl.sourceforge.net/otl3_examp...

weixin_34075268的博客 142

otl oracle存储过程,OTL调用Oracle存储过程

OTL很早前用过,今天写东西要调存储过程,程序写完了,调试死活通不过,折腾了一早晨。最后才发现错误,这里总结一下:1、代码写的不规范。有个参数后边少写了个“,”以至于总是抱错。而单独写的测试例子就没问题,后来一步一步跟踪了后才发现。2、调用格式a、如果#define OTL_ORA9I // Compile OTL 4/OCI8编译则过程调用采用:begin过程名(:参数1,:参数2,.....)...

weixin_28730549的博客 174

使用OTL操作Oracle数据库

OTL是一个轻量级的数据库操作工具;可以访问多种数据库(oracle,db2,mysql, sql server等等),但是它只能用于c++。 基本使用 OTL的一般使用步骤包括: (1)使用宏指明底层数据库API类型和控制编译器对OTL的编译。例如: #define OTL_ORA9I // Compile OTL 4.0/OCI9i #define OTL_UNICODE //Enable Unicode OTL for OCI9i (2)创建...

qq_20853741的博客 908

OTL调用Oracle存储过程

OTL调用Oracle存储过程 2007-04-13 15:08 by flyingfish, 2220 阅读, 0 评论, 收藏, 编辑 OTL很早前用过,今天写东西要调存储过程,程序写完了,调试死活通不过,折腾了一早晨。 最后才发现错误,这里总结一下: 1、代码写的不规范。 有个参数后边少写了个“,”以至于总是抱错。而单独写的测试例子就没问题,后来一步一步跟踪了后才发现。

波波诸葛伟 755
上一篇: ODBC中的FX/Bulk RFX数据交换机制分析
下一篇: class diagram
workdog
博客等级 码龄20年 40粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值