没有合适的资源?快使用搜索试试~ 我知道了~
首页Oracle-OCI(Oracle-Call-Interface)官方文档翻译
Oracle-OCI(Oracle-Call-Interface)官方文档翻译
4星 · 超过85%的资源 需积分: 36 31 下载量 108 浏览量
更新于2023-03-16
评论
收藏 1.8MB PDF 举报
Oracle-OCI(Oracle-Call-Interface)官方文档翻译.pdf 是对官方文档的翻译
资源详情
资源评论
资源推荐
OCI 学习资料
--Oracle8 及以后版本的 OCI
1. 简介
Oracle 调用接口(Oracle Call Interface)是一个让我们通过函数调用来访问 Oracle 数据库和
控制 SQL 语句执行各个阶段的应用程序编程接口(API)。OCI 支持 C 和 C++的数据类型、调用
惯例、语法和语义。
1.1 创建一个 OCI 应用程序
我们编译和连接一个 OCI 程序的方法与编译和连接一个非数据库应用程序的方法相同。
不需要独立的预处理或者预编译步骤。
1.2 OCI 的组成部分
OCI 具有如下功能:
·能够安全地支持大量用户的灵活的、多线程 API 集合。
·为管理数据库访问、处理 SQL 语句和管理 Oracle 数据库对象的 SQL 访问函数。
·管理 Oracle 类型的数据属性的数据类型映射和操作函数。
·不经 SQL 语句直接向数据库加载数据的数据加载函数。
1.3 封装的接口
所有的 OCI 函数使用的数据结构都以被称为句柄的不透明的接口之形式封装。句柄是指
向 OCI 库分配的保存着上下文信息、连接信息、错误信息或者关于 SQL 及 PL/SQL 的绑定信
息的不透明指针。客户端分配一定类型的句柄,通过已经定义好的接口来填充一个或者多个
句柄,并通过这些句柄向服务器发送请求。应用程序可以通过访问函数来访问句柄中包含的
相关信息。
2. OCI 基本编程
这部分介绍 OCI 编程中涉及到的基本概念。
2.1 OCI 编程概要
一个 OCI 应用程序的基本目标就是代表多个用户进行数据库操作。
OCI 使用以下基本编程顺序:
1. 初始化 OCI 编程环境和线程。
2. 分配必要的句柄,并且设置服务器连接和用户会话。
3. 通过在服务器上执行 SQL 语句来交换数据,并且执行必要的应用程序数据处理。
4. 执行准备好的语句或者准备即将要执行的语句。
5. 终止用户会话并且断开服务器连接。
6. 释放句柄。
图 2-1 显示了一个 OCI 应用程序的编程步骤。
图 2-1
这幅图及其所列出的步骤提供了一个 OCI 编程步骤的简单概括。根据程序的功能,变
化是完全可能发生的。包含管理多个会话、事务和使用对象的更复杂的 OCI 应用程序需要
另外的步骤。
所有的 OCI 函数调用都在一个环境中执行。在一个 OCI 进程中可以有多个环境。如果
一个环境需要任何进程级别的初始化,则其自动进行。
注意:在一个 OCI 应用程序中可以有多个活动连接和语句。
2.2 OCI 数据结构
句柄(Handles)和描述符(descriptors)是 OCI 应用程序中定义的不透明的数据结构。它们可
以被直接分配、通过特殊的分配函数或者可以被 OCI 函数隐式地分配。
7.X 升级注意:以前写过 7.XOCI 应用程序的程序员必须熟悉这些被大多数 OCI 函数使
用的数据结构。
句柄和描述符保存有关数据、连接、或者应用程序行为的信息。
2.3 句柄
几乎每一个 OCI 函数的参数列表中都包含有一个或者多个句柄。一个句柄是一个指向一
个 OCI 库分配的存储区域的不透明的指针。我们使用句柄来保存上下文信息或者连接信
息,(例如,一个环境或者服务句柄),或者它可以保存关于 OCI 函数或者数据的信息(例如,
一个错误句柄或者描述句柄)。句柄可以使编程更简单,因为 OCI 库会维持这些数据而不
是应用程序。
大多数 OCI 应用程序需要使用句柄中的信息。获取属性值和设置属性值的 OCI 函数,
OCIAttrGet()和 OCIAttrSet(),获取和设置这些信息。
表 2-1 列出了 OCI 中定义的句柄。并列出了与每一种句柄类型相对应的 C 数据类型和
OCI 函数中使用的用来识别 OCI 调用中的句柄类型的句柄类型常量。
表 2-1 OCI 句柄类型
分配和释放句柄
我们的应用程序要为一个特定的环境句柄分配所有的句柄(除了绑定句柄 bind handle、
定义句柄 define handle 和线程句柄 thread handles)。我们把环境句柄作为一个参数传递至
句柄分配函数。然后,被分配的句柄就特定于那个特定的环境。
绑定句柄和定义句柄是为一个语句句柄分配的,并且包含了关于那个句柄所代表的语句
的信息。
注意:绑定句柄和定义句柄是由 OCI 库隐式分配的,不需要用户分配。
图 2-2 显示了不同类型的句柄的层次
图 2-2 句柄的层次
环境句柄是由 OCIEnvCreate()或者 OCIEnvNlsCreate()函数分配和初始化的,所有的 OCI
程序都需要执行它们中的任一个。
所有的用户分配的句柄都通过 OCI 句柄分配函数来初始化,即 OCIHandleAlloc()函数。
句柄类型包括:线程句柄、描述句柄、语句句柄、服务上下文句柄、错误句柄和服务器
句柄等。
线程句柄通过 OCIThreadHndInit()函数分配。
一个应用程序必须释放所有的不再使用的句柄。OCIHandleFree()函数释放所有的句柄。
注意:当一个父句柄被释放后,所有与之相连的子句柄也被释放并且再也不能被使用。
例如,当一个语句句柄释放后,任何与之相连的绑定和定义句柄也都被释放。
句柄减少了对全局变量的需要。句柄也使错误报告更容易。一个错误句柄用来返回错误
和诊断信息。
2.3.1 环境句柄
环境句柄提供了一个所有的 OCI 函数被调用的上下文。每一个环境句柄包含一个支持快
速访问的内存缓存。所有的环境句柄下的内存分配都是通过这个缓存完成的。如果多个线程
想要在同一个环境句柄下分配内存,则它们对缓存的访问是序列化的。当多个线程共享一个
单独的环境句柄时,它们会阻塞对缓存的访问。
环境句柄作为 OCIHandleAlloc()函数的 parent 参数来分配其他句柄类型。绑定句柄和定
义句柄是隐式分配的。
2.3.2 错误句柄
错误句柄作为一个参数传递至大多数 OCI 函数。错误句柄维持着关于一个 OCI 操作中所
发生的错误的信息。如果一个函数调用中发生了一个错误,错误句柄可以传给 OCIErrorGet()
函数来获取关于那个错误的额外信息。
由于大多数 OCI 函数都需要一个错误句柄作为一个参数,分配错误句柄是一个 OCI 应用
程序中的前几个步骤之一。
2.3.3 服务上下文句柄和相关的句柄
一个服务上下文句柄定义了决定 OCI 调用的上下文的属性。服务上下午句柄包含 3 个句
柄作为它的属性,分别代表一个服务器连接、一个用户会话和一个事务。图 2-3 列出了这些
属性
图 2-3
·一个服务器句柄 Server Handle 识别对一个数据库的连接。
·一个用户会话句柄 User Session Handle 定义了一个用户的角色和权限以及函数执行
的操作上下文。
·一个事务句柄定义了 SQL 操作所属的事务。
在需要更复杂的会话管理的应用程序中,服务上下午句柄必须被显式地分配,并且服务
器句柄和用户会话句柄必须通过 OCIAttrSet()函数被显式地设置到服务上下午句柄中。
OCIServerAttach()函数和 OCISessionBegin()函数分别初始化服务器和用户会话句柄。
当应用程序对数据库做修改时,OCI 自动隐式分配的事务句柄正确地工作。
2.3.4 语句句柄、绑定句柄和定义句柄
一个语句句柄是识别 SQL 或者 PL/SQL 语句以及与之相连的属性的上下文,如图 2-4 所
示
图 2-4
关于输入绑定变量和输出绑定变量的信息储存于绑定句柄中 bind handle。OCI 库为每一
个与 OCIBindByName()函数或者 OCIBindByPos()函数相连的占位符分配一个绑定句柄。用户一
定不可以分配绑定句柄。它们是由绑定函数隐式分配的。
查询返回的数据根据定义句柄(define handle)的描述来转换和获取。OCI 库为每一个
剩余60页未读,继续阅读
wyw0000
- 粉丝: 262
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1