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相关学习相关推荐

  1. oracle rac启停数据库,Oracle rac 启动停止操作文档 PDF 下载

    一.ORACLE 正常启动/关闭操作步骤 1.启动OS操作系统集群 当RAC的两台机器操作系统正常启动后,首先启动OS操作系统的集群,命令如下: cmruncl –v (root 权限下)(启动系统集 ...

  2. 【干货】Oracle数据库常用十一大操作指令

    相关文章导读 收藏 | 超详细的Oracle19c安装步骤_XMWS-IT-CSDN博客 DBA数据库管理必备认证:ORACLE OCP 19C 教材下载 Oracle数据库常用十一大操作指令 1. ...

  3. Oracle调用接口(OCI)源码剖析(2):执行SQL语句并获取结果

    概述 接着上一篇文章<Oracle调用接口(OCI)源码剖析(1):创建数据库连接>,我们继续对OCI中执行SQL语句并获取结果的源码进行剖析.该操作主要是由两个函数完成的:CDbExec ...

  4. oracle读写队列深度,ORACLE TUNE THINKING (三) 操作系统优化

    ORACLE TUNE THINKING (三) 操作系统优化 作者简介: -------------------------------------------------------------- ...

  5. oracle跨数据库用户操作,ORACLE跨数据库操作,DBLINK的使用

    ORACLE跨数据库操作,DBLINK的使用 前几天帮一个朋友弄ORACLE跨数据库的操作,共享下具体的操作流程: 一.不同IP的数据库(DBLINK) 本地数据库ip 10.56.7.26 远程数据 ...

  6. Oracle数据库安装图文操作步骤

    Oracle数据库安装图文操作步骤 一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下 ...

  7. oracle 操作树大全,在Oracle中的树形操作

    在Oracle中的树形操作 在Oracle中的树形操作 1.取子节点及路径(正树): select t.id ,t.code, t.name ,t.pid ,SYS_CONNECT_BY_PATH(t ...

  8. Oracle 数据库简单日常操作

    Oracle 数据库简单日常操作 目录 Oracle 数据库简单日常操作 SQL基础部分 1.简介 2.安装好之后可以登录系统账户 3.用户与表空间 4.数据字典 5.如何启用scott用户 6.表空 ...

  9. oracle logfile sync,发布版本2019_联众智慧内部oracle培训oracle培训相关emr_logfilesync_issue...

    <发布版本2019_联众智慧内部oracle培训oracle培训相关emr_logfilesync_issue>由会员分享,可在线阅读,更多相关<发布版本2019_联众智慧内部ora ...

最新文章

  1. 0基础JavaScript入门教程(一)认识代码
  2. 关于学习Python的一点学习总结(28->收集参数及分配参数)
  3. Devstack配置负载均衡,负载均衡版本V2
  4. 增加一列为主键 oracle,给oracle数据库增加一列做主键,增加一个sequence,数据库怎么获得主键。...
  5. java简单工厂模式_Java 简单工厂模式
  6. python输入多行字符串_python中怎么输入多行字符串
  7. CVPR 2021 | Facebook提出FP-NAS:搜索速度更快、分类精度更高、性能更好
  8. VTK:小部件之ImageTracerWidgetInsideContour
  9. error LNK2019: 无法解析的外部符号 _XXX,该符号在函数 XXX 中被引用
  10. ORACLE中的自治事务
  11. TensorFlow 教程 --教程--2.5TensorFlow运作方式入门
  12. Linux Kernel Lock types and their rules
  13. Hibernate 笔记5 load和get方法的区别
  14. 数仓系列 | Flink 窗口的应用与实现
  15. 翻译 Real-Time Global Localization of Robotic Cars in Lane Level via Lane Marking Detection and Shape
  16. 修改phpMyAdmin使其能够管理多台远程MySQL服务器
  17. 一个简单实用的boost升压电路
  18. 信息化促进价值链的构造与协同
  19. Nginx常用的模块
  20. pandas精华总结

热门文章

  1. [Swift]LeetCode93. 复原IP地址 | Restore IP Addresses
  2. 美图手机显示服务器异常怎么回事,美图手机的云服务器
  3. 那些浏览器的神仙插件
  4. 程序猿如何保护眼睛方法.
  5. 聊聊soho办公-人们为什么越来越累
  6. 微信公众号和微信群怎么推广?
  7. 【记一次】电脑可以ping通百度,但是浏览器无法访问
  8. 汽车驱动力及发动机转矩曲线在python中拟合
  9. 二极管的分类及常用方法
  10. JavaScript百炼成仙 后续章节