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相关学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python计算存款复利计算器_分享下自
- 下一篇: 将iPhone照片导出、iCloud照片