[IDS培訓文件]第六章 ESQL/C的使用
第六章 ESQL/C的使用
1、prepare語句的使用
在SQL中使用prepar語句後可以根據應用程式提供的不同的values來執行多遍,而語法分析卻僅執行一遍。當一個SQL語句在同一應用程式中被重複執行多遍時,用prepare的方法可以大大提高效能和效率。Prepare語法:
$prepare p_id from “insert into tabname (..) values (?…?)
2、插入遊標(insert cursor)的使用
插入遊標中的put語句使用了insert buffer,從而可以將多條insert語句一次性地寫入共享記憶體緩衝區中,因為減少了寫緩衝區的I/O次數,故可提高效能。插入遊標語法:
$declare cursor_name cursor for insert into tabnem(…) values (…);
…
$open cursor_name;
…
$put cursor_name;
…
或者
$prepare insert_name from “insert into tabname(…) values (?…?);
…
$declare cursor_name cursor for insert_name;
…
$open cursor_name;
…
$put cursor_name;
3、滾動遊標(scroll cursor)的使用
使用滾動遊標的好處在於可以前後檢索結構集中的記錄,這對於需反覆訪問結果的應用很有用。但是當表很大,且經常進行幅度很大的記錄檢索時,會導致建立很大的臨時表,效率低。建議使用時:
1)定義滾動遊標時可以選擇儘可能少的遊標或者可能少的欄位,比如只選擇表中的主關鍵字,然後再由此選出表中相應的記錄;
2)如果可以不用滾動遊標,則應該避免使用;
3)如果返回結果確信只有一條記錄,則應該避免使用遊標;
4)應該避免遊標的巢狀使用。
滾動遊標語法:
$declare cursor_name scroll cursor for …;
…
$open cursor_name;
4、修改遊標(update cursor)的使用
$declare cursor_name cursor for … for update
…
$update … where current of cursor_name;
5、SQL交換區sqlca(sql communication area)的使用
每當執行完一個SQL語句,Online都會將執行情況返回到sqlca這個結構中,其中包括一下資訊:
1)最近執行的SQL語句完成情況;
2)有關效能的一些資訊;
3)對一些可能發生或者已經發生情況的警告;
sqlca機構為:
struct sqlca_s
{
long sqlcode;
char sqlerrm[72];
char sqlerrp[8];
long sqlerrd[6];
struct sqlcaw_s;
{
char sqlwarn0;
char sqlwarn1;
char sqlwarn2;
char sqlwarn3;
char sqlwarn4;
char sqlwarn5;
char sqlwarn6;
char sqlwarn7;
}sqlwarn;
}sqlca;
當呼叫SQL出錯時,往往憑sqlcode的返回碼不能確定出錯原因,還應該返回ISAM錯誤碼sqlerrd[1]。
6、 儲存過程(stored procedure)的使用
儲存過程是使用者用Informix提供的SPL(stored procedure lauguage)語言,編制的一些資料庫操作。可以用以下語法建立、使用儲存過程:
$create procedure p_name(…)
…
end procedure
…
$execute p_name;
儲存過程建立時,資料庫會編譯儲存過程,產生資料庫查詢計劃,並將其翻譯成資料庫檔案儲存在IDS資料庫的系統表sysprocedures。儲存過程的所有授權使用者都可以呼叫該過程。具體呼叫時,IDS會從系統表sysprocedures中讀出儲存過程,轉換成執行程式碼,執行它。對於經常被反覆執行的一段SQL語句,若採用儲存過程的方法,既可以減少程式的複雜度,而且應用和資料庫之間的互動由一條SQL語句變為一個儲存過程名,大大減少了互動資料量。其次因為可以提高一些系統效能。另外不同的應用程式可以共享一個儲存過程,從而消除冗餘程式碼。此外,在client/server環境中亦有利於程式碼維護;通過使用儲存過程的安全等級,可以限制使用者的一些非法操作,如禁止使用者對資料庫表的訪問等。
1、prepare語句的使用
在SQL中使用prepar語句後可以根據應用程式提供的不同的values來執行多遍,而語法分析卻僅執行一遍。當一個SQL語句在同一應用程式中被重複執行多遍時,用prepare的方法可以大大提高效能和效率。Prepare語法:
$prepare p_id from “insert into tabname (..) values (?…?)
2、插入遊標(insert cursor)的使用
插入遊標中的put語句使用了insert buffer,從而可以將多條insert語句一次性地寫入共享記憶體緩衝區中,因為減少了寫緩衝區的I/O次數,故可提高效能。插入遊標語法:
$declare cursor_name cursor for insert into tabnem(…) values (…);
…
$open cursor_name;
…
$put cursor_name;
…
或者
$prepare insert_name from “insert into tabname(…) values (?…?);
…
$declare cursor_name cursor for insert_name;
…
$open cursor_name;
…
$put cursor_name;
3、滾動遊標(scroll cursor)的使用
使用滾動遊標的好處在於可以前後檢索結構集中的記錄,這對於需反覆訪問結果的應用很有用。但是當表很大,且經常進行幅度很大的記錄檢索時,會導致建立很大的臨時表,效率低。建議使用時:
1)定義滾動遊標時可以選擇儘可能少的遊標或者可能少的欄位,比如只選擇表中的主關鍵字,然後再由此選出表中相應的記錄;
2)如果可以不用滾動遊標,則應該避免使用;
3)如果返回結果確信只有一條記錄,則應該避免使用遊標;
4)應該避免遊標的巢狀使用。
滾動遊標語法:
$declare cursor_name scroll cursor for …;
…
$open cursor_name;
4、修改遊標(update cursor)的使用
$declare cursor_name cursor for … for update
…
$update … where current of cursor_name;
5、SQL交換區sqlca(sql communication area)的使用
每當執行完一個SQL語句,Online都會將執行情況返回到sqlca這個結構中,其中包括一下資訊:
1)最近執行的SQL語句完成情況;
2)有關效能的一些資訊;
3)對一些可能發生或者已經發生情況的警告;
sqlca機構為:
struct sqlca_s
{
long sqlcode;
char sqlerrm[72];
char sqlerrp[8];
long sqlerrd[6];
struct sqlcaw_s;
{
char sqlwarn0;
char sqlwarn1;
char sqlwarn2;
char sqlwarn3;
char sqlwarn4;
char sqlwarn5;
char sqlwarn6;
char sqlwarn7;
}sqlwarn;
}sqlca;
當呼叫SQL出錯時,往往憑sqlcode的返回碼不能確定出錯原因,還應該返回ISAM錯誤碼sqlerrd[1]。
6、 儲存過程(stored procedure)的使用
儲存過程是使用者用Informix提供的SPL(stored procedure lauguage)語言,編制的一些資料庫操作。可以用以下語法建立、使用儲存過程:
$create procedure p_name(…)
…
end procedure
…
$execute p_name;
儲存過程建立時,資料庫會編譯儲存過程,產生資料庫查詢計劃,並將其翻譯成資料庫檔案儲存在IDS資料庫的系統表sysprocedures。儲存過程的所有授權使用者都可以呼叫該過程。具體呼叫時,IDS會從系統表sysprocedures中讀出儲存過程,轉換成執行程式碼,執行它。對於經常被反覆執行的一段SQL語句,若採用儲存過程的方法,既可以減少程式的複雜度,而且應用和資料庫之間的互動由一條SQL語句變為一個儲存過程名,大大減少了互動資料量。其次因為可以提高一些系統效能。另外不同的應用程式可以共享一個儲存過程,從而消除冗餘程式碼。此外,在client/server環境中亦有利於程式碼維護;通過使用儲存過程的安全等級,可以限制使用者的一些非法操作,如禁止使用者對資料庫表的訪問等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24955184/viewspace-772256/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [IDS培訓文件]第三章 索引策略索引
- [IDS培訓文件]第五章 資料分片(fragmentation)Fragment
- [IDS培訓文件]第四章 並行資料查詢PDQ並行
- 使用 ESQL/C 的 PAM 認證方法(轉)SQL
- [IDS培訓文件]第一章 Informix動態可伸縮體系結構ORM
- 深圳java培訓:構建xml文件--【千鋒】JavaXML
- C&C++程式碼單元整合測試培訓C++
- Java培訓教程之物件的建立與使用Java物件
- 黑馬程式設計師Java培訓和Android培訓:培訓前奏程式設計師JavaAndroid
- 培訓遊戲遊戲
- Java培訓:長沙Java培訓機構排名Java
- 網路安全培訓何必冠以***培訓之名?薦
- Java培訓教程之使用Lock取代synchronizedJavasynchronized
- weblogic培訓Web
- 培訓工作QHSE
- Java程式設計師技術培訓需要培訓哪些?Java程式設計師
- 黑馬程式設計師Java培訓和Android培訓Java GUI圖形使用者介面程式設計師JavaAndroidGUI
- 長沙Java培訓機構哪家好?怎麼才能避免Java培訓的坑?Java
- ABAQUS基礎培訓
- Oracle WareHouse Builder培訓OracleUI
- Android 安全培訓Android
- java培訓資料Java
- NetSuite crm培訓UI
- 大連oracle培訓!Oracle
- Java培訓筆記Java筆記
- java培訓內容Java
- AIX AN12 培訓AI
- java 培訓日記Java
- Oracle培訓之旅-湛江Oracle
- 雲學堂培訓
- java培訓分享:java培訓架構師學習線路圖Java架構
- 長沙前端培訓多少錢?前端培訓機構怎麼選?前端
- 部門要我組織培訓,培訓點啥比較好
- 培訓的Web前端什麼水平Web前端
- 培訓Java與自學Java的差距Java
- 作培訓的一點經驗
- 開源IDS/IPS Suricata的部署與使用
- 長沙IT培訓機構哪家好?程式語言培訓學哪個?