c oracle udt,Oracle OCI操作UDT相关学习
1、Oracle数据类型
Oracle的数据类型如下
字符串类型 char nchar varchar2 nvarchar2
数值类型 int number integer smallint
日期类型 date timestamp
自定义类型 create type
这里UDT表示的就是oracle自定义类型,语法如下
CREATE TYPE xxx as object (字段1 类型1, 字段2 类型2, ...);
如下创建了一个自定义类型 addr_type
该类型可以应用到表的某个列,创建了一个 cust 表
这个表中有两个字段,一个基本类型的id字段,一个为ADDR_TYPE类型的addr字段。
2、SQL相关
插入数据SQL
执行查询操作:
select * from cust;
这里ADDR的值,需要点击sqldeveloper 的对应列表,才能看到其值。
3、OCI相关
3.1 select 相关
在使用OCI操作自定义类型之前,需要通过OTT工具来对类型进行转换,并将生成的头文件和c文件加入到OCI的源码工程中,具体OTT相关操作请参考 Oracle OTT 学习 一文。
1)进行OCI环境变量的初始化并分配各个句柄,这里对这些操作进行了封装,其中调用OCIEnvCreate 函数的参数mode 必须有 OCI_OBJECT 模式来支持自定义类型。
2)调用OTT生成的C函数进行初始化
3)连接数据库,这里也对其进行了封装
4)准备sql语句
备注:这里addr_type* at 声明的at变量是由OTT自动生成的。 在声明时最好赋空值,如addr_type* at = NULL;
5)绑定输出变量 id
6)绑定输出变量 addr 这里绑定自定义变量需要两步(或者理解为3步)
6.1 先用SQLT_NTY参数调用 OCIDefineByPos
6.2 然后调用OCIDefineObject 来绑定at 变量,这个at变量是一个结构体,上边有介绍。
绑定完成后,即可execute并fetch出结果。
7)调用OCIStmtExecute 执行语句
8)循环调用OCIStmtFetch 来获取数据
执行程序结果如下:
3.2 insert 操作
3.2.1 用OTT生成的结构体来操作
1)初始化OCI环境及句柄
2)对结构体addr内容进行赋值
3)连接数据库
4)准备sql语句,这里采用绑定的方式
5)对自定义类型进行绑定同select 中的方式。
6)执行sql语句,并进行相关句柄回收等操作。
备注:在前边给结构体中的变量赋值之前,必须对其进行初始化为0,否则程序报错。
这里重点是 自定义类型整体作为绑定变量来进行操作。
3.2.2 采用常规方式
1)声明变量,并初始化OCI环境及句柄
2)连接数据库
3)绑定变量,这里分别绑定各自变量,相当于把自定义类型拆开了。
4)执行sql 并最后释放句柄相关。
备注:这里采用了 ADDR_TYPE(:2,:3,:4,:5) 这种方式来实现。
Oracle OCI操作UDT相关学习
标签:插入数据 developer blog 字符 src html ide sel env
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:http://www.cnblogs.com/dspeeding/p/6490185.html
c oracle udt,Oracle OCI操作UDT相关学习相关推荐
- oracle rac启停数据库,Oracle rac 启动停止操作文档 PDF 下载
一.ORACLE 正常启动/关闭操作步骤 1.启动OS操作系统集群 当RAC的两台机器操作系统正常启动后,首先启动OS操作系统的集群,命令如下: cmruncl –v (root 权限下)(启动系统集 ...
- 【干货】Oracle数据库常用十一大操作指令
相关文章导读 收藏 | 超详细的Oracle19c安装步骤_XMWS-IT-CSDN博客 DBA数据库管理必备认证:ORACLE OCP 19C 教材下载 Oracle数据库常用十一大操作指令 1. ...
- Oracle调用接口(OCI)源码剖析(2):执行SQL语句并获取结果
概述 接着上一篇文章<Oracle调用接口(OCI)源码剖析(1):创建数据库连接>,我们继续对OCI中执行SQL语句并获取结果的源码进行剖析.该操作主要是由两个函数完成的:CDbExec ...
- oracle读写队列深度,ORACLE TUNE THINKING (三) 操作系统优化
ORACLE TUNE THINKING (三) 操作系统优化 作者简介: -------------------------------------------------------------- ...
- oracle跨数据库用户操作,ORACLE跨数据库操作,DBLINK的使用
ORACLE跨数据库操作,DBLINK的使用 前几天帮一个朋友弄ORACLE跨数据库的操作,共享下具体的操作流程: 一.不同IP的数据库(DBLINK) 本地数据库ip 10.56.7.26 远程数据 ...
- Oracle数据库安装图文操作步骤
Oracle数据库安装图文操作步骤 一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下 ...
- oracle 操作树大全,在Oracle中的树形操作
在Oracle中的树形操作 在Oracle中的树形操作 1.取子节点及路径(正树): select t.id ,t.code, t.name ,t.pid ,SYS_CONNECT_BY_PATH(t ...
- Oracle 数据库简单日常操作
Oracle 数据库简单日常操作 目录 Oracle 数据库简单日常操作 SQL基础部分 1.简介 2.安装好之后可以登录系统账户 3.用户与表空间 4.数据字典 5.如何启用scott用户 6.表空 ...
- oracle logfile sync,发布版本2019_联众智慧内部oracle培训oracle培训相关emr_logfilesync_issue...
<发布版本2019_联众智慧内部oracle培训oracle培训相关emr_logfilesync_issue>由会员分享,可在线阅读,更多相关<发布版本2019_联众智慧内部ora ...
最新文章
- 0基础JavaScript入门教程(一)认识代码
- 关于学习Python的一点学习总结(28->收集参数及分配参数)
- Devstack配置负载均衡,负载均衡版本V2
- 增加一列为主键 oracle,给oracle数据库增加一列做主键,增加一个sequence,数据库怎么获得主键。...
- java简单工厂模式_Java 简单工厂模式
- python输入多行字符串_python中怎么输入多行字符串
- CVPR 2021 | Facebook提出FP-NAS:搜索速度更快、分类精度更高、性能更好
- VTK:小部件之ImageTracerWidgetInsideContour
- error LNK2019: 无法解析的外部符号 _XXX,该符号在函数 XXX 中被引用
- ORACLE中的自治事务
- TensorFlow 教程 --教程--2.5TensorFlow运作方式入门
- Linux Kernel Lock types and their rules
- Hibernate 笔记5 load和get方法的区别
- 数仓系列 | Flink 窗口的应用与实现
- 翻译 Real-Time Global Localization of Robotic Cars in Lane Level via Lane Marking Detection and Shape
- 修改phpMyAdmin使其能够管理多台远程MySQL服务器
- 一个简单实用的boost升压电路
- 信息化促进价值链的构造与协同
- Nginx常用的模块
- pandas精华总结