45,數據庫(07)

/*
達內學習 Oracle day43 2013-11-1
*/
1,什麼是pro程序
   通過在過程化編程語言中 嵌入sql語句開發出的應用程序叫pro程序。
2,爲什麼使用proc
   用C或者C++這種高效的語言成爲訪問oracle數據庫的工具。

3,寫一個c程序的步驟
    a,編寫源代碼   vi
    b,編譯   gcc  .c
    c,鏈接   gcc  .o
    d,執行
4,寫一個proc程序的步驟
   a,編寫源代碼    **.pc
   b,預編譯        proc **.pc  生成.c
   c,編譯 鏈接    
      gcc **.c -lclntsh  ;linux
       gcc  **.c  -lorasql10 ; windows
   d,執行程序   生成 a.out
/*
source 生效
ftp 192.168.0.23
openlab  open123
cd 1308proc
mget gftp*
y y   */
--------------------------------------
宿主語言  :sql語句所嵌入的語言
使用宿主語言定義的變量,叫做宿主變量
宿主變量既能在sql語句中使用又能在宿主語言中使用。

宿主變量要放入申明區
linux,unix 如果是開發c程序  則任何位置都是申明區。
exec sql begin declare section;
/* 這就是申明區*/
exec sql end declare section;
【註釋/*  兩端要加空格  */】
宿主變量的類型
char
char var[n] 定長字符串
short
int
long
float
double
varchar var[n]  變長字符串
-----------------------------------------------
a,使用varchar處理變長字符串
char--------varchar
在sql語句中使用varchar數據類型時,要和普通定長字符串一樣使用
在宿主語言中,使用變長字符串數據時,要使用變長字符串變量arr成員 取得長度使用len成員
varchar var[20]={0};
var.arr[var.ken]='\0';
b,使用proc的預編譯選項
proc iname   輸入文件文件可以忽略
     oname   輸出文件名
char_map=charz  默認  定長 空格補齊 \0結尾
        = varchar2|charf  定長 空格補齊
        = string 變長 \0 結尾

宿主變量使用注意事項:
1, DDL中不能使用宿主變量
2, 宿主變量可以使用指針,但是需要分配內存,不推薦
3,宿主變量 如果是C++開發 則要求把宿主變量放入申明區
4,在sql語句使用宿主變量時,要求在宿主變量前面加:
----------------------------------------
提示變量:當數據庫中的字段 賦值給宿主變量時,賦值的狀態可以通過指示變量得到。
== 0  表示賦值成功
== -1 代表數據庫中的值是空值
>0    代表截斷賦值   儘量避免
提示變量必須是short類型
int mid = 0;
short indmid =0;
exec sql select manager_id into :mid:indmid
   from s_emp where id =1;
或者
exec sql select manager_id into :mid indicator :indmid
   from s_emp where id =1;
-----------------------------------------------------------------------------
數組變量:存放多條數據 
  proc只支持一維數組,但是字符除外
  不支持數組指針
  最大元素個數32768
  在select 語句中使用數組時,只能給出數組名,不能給下標

s_emp 表中所有的manager_id 和所有的first_name 分別放入數組中,要求指示manager_id的賦值狀態
sqlca.sqlerrd[2] sql語句影響的函數
本質上sqlca是一個結構體,這個結構體我們稱爲通信區。
在同一個事務中,同一個事務中都有一個通信區,每執行一次sql,就會把通信區中的每個字段都修改一次。
sqlca.sqlcode
==0 sql語句執行正常
>0 異常發生  一般是違反約束
<0 系統錯誤,或者網絡錯誤
sqlca.sqlerrm.sqlerrmc  sql錯誤消息.內容

發佈了72 篇原創文章 · 獲贊 6 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章