---
title: "开发基本步骤 | OceanBase 文档中心"
description: 开发基本步骤 在一个应用程序中，我们是通过调用 OBCI 提供的库函数来实现对 OceanBase 数据库的操作。为了与 Oracle 兼容，OBCI 提供的函数均是以 OCI 开头并与 Oracle OCI 的函数同名。在存量的操作 Oracle 的应用程序中，开发人员可不用修改一行代码，用同样的函数接口来操作 O…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*2w2xQrMxVCwAAAAAAAAAAAAADiGDAQ/original) OBCI 驱动程序V 2.1.0 企业版

# 开发基本步骤

更新时间：2025-07-08 13:39:27

在一个应用程序中，我们是通过调用 OBCI 提供的库函数来实现对 OceanBase 数据库的操作。为了与 Oracle 兼容，OBCI 提供的函数均是以 OCI 开头并与 Oracle OCI 的函数同名。在存量的操作 Oracle 的应用程序中，开发人员可不用修改一行代码，用同样的函数接口来操作 OceanBase 数据库。

## OBCI 基本结构

一个 OBCI 应用程序的基本结构包括：

1. 初始化 OBCI 环境和线程。
 2. 分配必要的句柄与数据结构。
 3. 建立与数据库的连接以及创建用户会话。
 4. 通过 SQL 与 OceanBase 服务器交换数据，而后再做数据处理。
 5. 结束用户会话与断开与数据库的连接。
 6. 释放在程序中所分配的句柄。

## OBCI 开发步骤

下图描述了在 OBCI 应用中开发的步骤流程，代码说明详情请参见 [开发示例](https://www.oceanbase.com/docs/enterprise-obci-cn-10000000000915601)。

![Image 766.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/6841147061/p182478.png "Image 766.png")

## 处理 SQL 语句

OBCI 程序最常见的任务之一即是接受并处理 SQL 语句，本段介绍 OBCI 应用程序在处理 SQL 语句时的细节。

一条 SQL 语句在 OBCI 应用程序中的执行步骤及过程中调用到的函数一般如下图所示：

![Image 767.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/6841147061/p182479.png "Image 767.png")

1. 通过调用函数 OCIStmtPrepare() 或者 OCIStmtPrepare2() 准备 SQL 语句。
 2. 在 SQL 语句中绑定需要输入到 SQL 语句中的变量 ，对于 DML 语句来说，由于它带有输入变量，我们可以通过调用一个或者多个函数，如 OCIBindByPos() 或 OCIBindByName() 等把输入变量的地址绑定在 DML 语句中的占位符中。
 3. 执行 SQL 语句。调用 OCIStmrExecute() 函数。对于 DDL 语句到这一步就完成了一个语句的执行。
 4. 描述 SQL 中输出的数据。

   如有必要，可调用函数 OCIParamGet() 与 OCIAttGet( ) 来获取所读取的记录的字段个数、字段的数据类型以及字段数据定义的最大长度。
 5. 定义输出变量。

   如有必要，调用 OCIDefineByPos() 函数为 SQL 语句中的数据输出项定义输出变量。

   #### 注意

   请勿在 PL/SQL 匿名块中通过调用 OCIDefineByPos() 函数来定义输出变量，因在绑定数据后即已完成此步骤。
 6. 获取数据。

   如有必要，为方便查询，可调用 OCIStmtFetch() 函数来获取查询的结果集。

## 应用示例

本次通过一个简单的 Linux 环境下的示例来说明 OBCI 的调用。

下述示例实现了对 `person` 表进行简单的增、删、插、改、查等基本操作。

在编译过程中需使用 OBCI 的头文件 oci.h，同时在链接阶段需使用 libobci.so 或 libobci.a 库文件。

#### 注意

如为动态链接 libobci.so，同时需手动安装 OBClient RPM 包。如为静态链接 libobci.a，则无需额外安装 OBClient RPM 包。

示例语句：

```javascript
静态链接：
gcc example.c -I/u01/obclient/include  -I/usr/include/oracle/11.2/client64/ /u01/obclient/lib/libobci.a -L/usr/local/lib64 -lstdc++ -lpthread -ldl -lm -g -o example

动态链接：
gcc example.c  -I/u01/obclient/include  -I/usr/include/oracle/11.2/client64/ -L/u01/obclient/lib/ -L/usr/local/lib64 -lobci -lobclnt -g -o example

```

#### 说明

默认推荐使用 oracle-11.2 client 的头文件，也可根据当前环境 include 目录路径自行进行调整。

执行输出：

```javascript
export LD_LIBRARY_PATH=/u01/obclient/lib:$LD_LIBRARY_PATH
$./example
PERSONID  NAME      EMAIL
finish fetch data
finish insert tables
PERSONID  NAME      EMAIL
1         obtest    t@ob.com
finish fetch data
PERSONID  NAME      EMAIL
1         test      test@mail
finish fetch data
PERSONID  NAME      EMAIL
finish fetch data

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
