esql

SQL語言是非過程化語言,大部分語句的執行與其前面或後面的語句無關,而一些高級程式語言都是基於如循環,條件等結構的過程化語言,儘管SQL語言非常有力,但它卻沒有過程化能力·若把SQL語言嵌入到過程化的程式語言中,則利用這些結構,程式開發人員就能設計出更加靈活的套用系統,具有SQL語言和高級程式語言的良好特徵,它將比單獨使用SQL或C語言具有更強的功能和靈活性·

COBASE RDBMS提供兩種工具在主語言中編程來存取COBASE資料庫中的數據.即高級語言預編譯程式接口(ESQL)和高級語言的函式調用接口(CCI).目前這些工具僅支持C語言.

COBASE RDBMS提供的ESQL工具把含有SQL語句的C程式轉化為可存取和操縱COBASE資料庫中數據的C程式,作為一編譯器,ESQL把輸入檔案中的EXEC SQL 語句在輸出檔案中轉化為適當的CCI函式調用.輸出檔案則可以正常的C程式的方式被編譯、連線和執行.

1.1 ESQL中的基本概念

ESQL中的基本概念主要有:

1.嵌入的SQL語句:

嵌入的SQL語句是指在應用程式中使用的SQL語句.該應用程式稱作宿主程式,書寫該程式的語言稱作宿主語言.嵌入的SQL語句與互動式SQL語句在語法上沒有太大的差別,只是嵌入式SQL語句在個別語句上有所擴充.如嵌入式SQL中的SELECT語句增加了INTO子句,以便與宿主語言變數打交道.此外,嵌入式SQL為適合程式設計語言的要求,還增加了許多語句,如游標的定義、打開和關閉語句等等.

2.執行性SQL語句和說明性SQL語句:

嵌入的SQL語句主要有兩種類型:執行性SQL語句和說明性SQL語句.執行性SQL語句可用來連線COBASE,定義、查詢和操縱COBASE資料庫中的數據,每一執行性語句真正對資料庫進行操作 ,執行完成後,在USERCA中存放執行信息.說明性語句用來說明通訊域和SQL語句中用到的變數. 說明性語句不生成執行代碼,對USERCA不產生影響.

3.事務:

事務是邏輯上相關的一組SQL語句.COBASE把它們視作一個單元.為了保持資料庫的一

致性,一事務內的所有操作要么都做,要么都不做.

1.2 ESQL程式的組成和運行

在ESQL程式 中嵌入的SQL語句以EXEC作為起始標識,語句的結束以";"作為標識.在嵌入的SQL語句可以使用主語言(這時是C語言)的程式變數(即主變數),這時主變數名前加冒號(:)作為標誌,以區別於欄位名.

ESQL程式包括兩部分:程式首部和程式體.程式首部定義變數,為ESQL程式做準備, 程式體包括各種SQL語句來操縱COBASE資料庫中的數據.

編制並運行ESQL程式比單獨使用純C語言多一個預編譯過程,通常具有以下幾個步驟:

1.編輯ESQL程式(可利用編輯軟體如: EDLIN, WS等進行編輯).程式保後綴為.ec.

2.使用COBASE的預編譯器ETE對ESQL源程式進行預處理,該編譯器將源程式中嵌入的SQL語言翻譯成標準C語言,產生一個C語言編譯器能直接進 行編譯的檔案.其檔案的擴展名為.cpp。該cpp檔案可以和普通的cpp檔案一樣被放入一個工程中被C++編譯器編譯,連線最後運行。

相關詞條

相關搜尋

熱門詞條

聯絡我們