用动态SQL方法4连接Oracle的实现(第1.0版)2008-04-20wujinglong摘要动态SQL的第4种方法通过SQLDA(The SQL Descriptor Area)和oracle内部交换数据,可以执行直到程序运行时还不知道选择表项或虚拟输入宿主变量的个数和类型的SQL语句。模块 oracle 的数据
| jmp_buf | jmp_continue | | 保存程序断点 |
| FILE* | ORAin | stdin | 默认输入源 |
| FILE* | ORAout | stdout | 默认输出源 |
| Int | ORAresult | 0 | 错误标志 |
| Char* | Dml_commands[] | 略 | 数据操纵语句动词表 |
| ORAquery | Query | | 包装SQL执行过程 |
| ORAqueryBase | pQuery | &query | 为外部提供接口 |
与外部的接口
- ORAin,ORAout: 应用程序通过操纵这两个变量改变oracle模块的输入输出源。
- ORAresult:oracle模块的执行结果(有待细分错误原因)。
- ORAconnect(user,password),ORAdisconnect():与数据库建立与断开连接,必须在执行任何SQL语句前建立连接。
- JMP_FOR_ERROR(label):如果oracle模块出现错误便转到标号label处继续执行,建立连接时出错除外。
- ORAqueryBase* pQuery:见抽象类ORAqueryBase的说明。
抽象类 ORAqueryBase
| 返回数据类型 | 方法名称 | 参数 | 描述 |
| int | set | int,int,int | 设置SQL描述区的大小 |
| int | Alloc | | 分配SQL描述区 |
| int | get_statement | | 从输入源读取SQL语句 |
| int | set_statement] | const char* | 以字符串格式输入SQL语句 |
| int | execute | | 执行准备好的SQL语句 |
| int | free | | 释放SQL描述区 |
参考资料《programmer""s Guide to the Oracle Precompilers》Release 1.8《C++高级参考手册》