日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

ESQL編程使用說明( 二 )


開始和結(jié)束的.
在這兩個語句中,只可以定義 SQL 語句中用到的主變量,每個預(yù)編譯單元只允許一個BEGIN/END DECLARE SECTION (描述部分),但是一個程序可以包含許多獨立的預(yù)編譯單元 。若一個主變量或指示變量在ESQL程序中的SQL語句中引用,但它沒有在 描述部分中定義,則程序在預(yù)編譯時就會出現(xiàn)錯誤信息.
在這兩個語 句中可以定義的變量有六種類型:INT,SHORT,CHAR,FLOAT,NUMBER,DATE.其中CHAR型允許定義二維數(shù)組,其它類型只允許定義一維數(shù)組,不允許有指針類型 ,在此處變量可以賦值.
例如:
EXEC SQL BEGIN DECLARE SECTION;
int sno;
char sname[11];
short snameid;
EXEC SQL END DECLARE SECTION;
(1)主變量:
就是用在SQL語句中的主語言變量.主要用于程序變量和數(shù)據(jù)庫內(nèi)部交換數(shù)據(jù)之用,它們的數(shù)據(jù)類型必須是在主語言中描述部分里定義過的,而且它們的數(shù)據(jù)類型必須和COBASE數(shù)據(jù)庫中已定義的表中的數(shù)據(jù)類型相匹配.
例如:
SELECT 姓名, 等級
FROM 供應(yīng)商
INTO :sname, :status
WHERE 供應(yīng)商號=:sno;
該語句表示,從供應(yīng)商表中在供應(yīng)商號與主變量sno一致的地方選擇供應(yīng)商姓名和供應(yīng)商等級,COBASE把結(jié)果傳送到主變量sname,status中.
主變量使用規(guī)則:
1.必須在描述部分明確定義.
2.必須使用與其定義相同的大小寫格式.
3.在SQL語句中使用主變量時必須在主變量前寫一個冒號":",在純C語言 語句中則不要在主變量前寫冒號.
4.不能是SQL命令的保 留字.
5.在一條語句中只能使用一次.

2.1.2 SQL通訊域每個COBASE應(yīng)用程序必須提供對錯誤 的處理,為了說明SQL通訊域(USERCA),必須在每個COBASE預(yù)編譯程序中寫上:EXEC SQL INCLUDE USERCA;USERCA是一結(jié)構(gòu),每一嵌入的執(zhí)行性SQL語言的執(zhí)行情況在其執(zhí)行完成后寫入USERCA結(jié)構(gòu)中的各變量中, 根據(jù)USERCA中的內(nèi)容可以獲得每一嵌入SQL語句執(zhí)行后的信息,編制程序時就可以做適當(dāng)?shù)奶幚?對其的詳細說明見第五章.
2.1.3 連接COBASE在 存取COBASE數(shù)據(jù)之前,每一個預(yù)編譯程序必須與COBASE連接.連接時,程序必須提供用戶名和口令,由COBASE進行校驗,若口令和用戶名正確,方可登錄COBASE,獲得使用權(quán),否則,COBASE拒絕登錄,則程序就不能使用數(shù)據(jù)庫.缺省的用戶名為“cobase”,口令為“cobase” 。
連接COBASE的格式如下:EXEC SQL CONNECT <用戶名>:<用戶口令>.
CONNECT語句必須是ESQL程序中第一條可執(zhí)行的SQL語句.2.2 程序體程序體可以包含許多SQL語句,以查詢或處理存儲在COBASE數(shù)據(jù)庫中的數(shù)據(jù).
在應(yīng)用程序中所包含的SQL語句,可以查詢或操縱存儲在COBASE中的數(shù)據(jù),這些語句叫
做數(shù)據(jù)操縱語言(DML),應(yīng)用程序體也可以包含DDL語句,用來建立或定義數(shù)據(jù)結(jié)構(gòu),如表、視圖或索引.在用戶程序中寫入的任何有效的SQL語句都可以被執(zhí)行,只需要把完整的SQL語句按嵌入式的要求寫入C語言的合適位置即可.嵌入在C語言中的SQL語句以EXEC SQL 開始,以";"為結(jié)束標志.SQL語句中可以嵌入主變量,主變量前應(yīng)有":"標志.如下面例子都 是嵌入式SQL語句:EXEC SQL UPDATE 供應(yīng)商
SET 姓名="李 紅"
WHERE 供應(yīng)商號="S1";
/* 把供應(yīng)商號是S1的供應(yīng)商姓名改為 "李 紅"*/EXEC SQL INSERT INTO 供應(yīng)商(供應(yīng)商號,姓名,等級,城市)
VALUES((:sno,:sname,:status,:city));
/* 根據(jù)宿主變量值插入供應(yīng)商表中 */

EXEC SQL DELETE FROM 供應(yīng)商
WHERE 等級 IS NULL;/*刪除供應(yīng)商等級是空值的供應(yīng)商*/從上面例可以看出,靜態(tài)的增,刪,改語句與交互方式?jīng)]有太大的差別,對于查詢語句就沒有那么簡單,查詢語句在下一章中介紹.現(xiàn)用幾個例題程序加以說明.例題程序1 (建立一表并向表中插入數(shù)據(jù))
/*==============================================================================
This is a sample program which include SQL sentence about

推薦閱讀