資源描述:
《數(shù)據(jù)庫應用技術 嵌入式SQL簡介.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、嵌入式SQL簡介SQL的兩種使用方式:自含式嵌入式將SQL嵌入到宿主語言中使用必須解決的問題:如何區(qū)分宿主語言的語句和SQL的語句,并能將嵌入有SQL的宿主語言源程序編譯成為可執(zhí)行代碼。宿主語言與數(shù)據(jù)庫管理系統(tǒng)之間如何進行通信,使得SQL語句中能夠使用宿主語言的變量。如何協(xié)調宿主語言的單記錄處理方式和SQL集合處理方式之間的差異。如何進行宿主語言與SQL之間數(shù)據(jù)類型的轉換。1第3章結構化查詢語言SQL嵌入式SQL的說明語句為了能夠區(qū)分C語言的語句和SQL的語句,規(guī)定SQL的語句前面加上標識“EX
2、ECSQL”,語句的結尾加上分號“;”作為語句的結束標識。C語言和SQL之間的數(shù)據(jù)通信通過宿主變量來實現(xiàn)。宿主變量是SQL中能夠引用的C語言變量。宿主變量需要使用帶有標識“EXECSQL”的說明語句說明。在SQL中引用宿主變量時,在宿主變量前面需加上一個冒號“:”作為標識,以區(qū)別于數(shù)據(jù)庫中的變量(如屬性名)。在C語言的語句中,宿主變量與其他變量同樣使用。宿主變量的類型按照C語言的數(shù)據(jù)類型定義,如果與數(shù)據(jù)庫中的數(shù)據(jù)類型不一致,則由數(shù)據(jù)庫管理系統(tǒng)進行轉換。對C語言而言,通常不允許把宿主變量定義為數(shù)組
3、或結構類型。2第3章結構化查詢語言SQL嵌入式SQL的說明語句舉例〖例3-33〗在C語言中對SQL用到的宿主變量說明語句的例子:EXECSQLBEGINDECLARESECTION;charSNO[9];charNAME[9];charCNO[6];floatGRADE;EXECSQLENDDECLARESECTION;3第3章結構化查詢語言SQL嵌入式SQL的可執(zhí)行語句游標:在嵌入式SQL中,把存放查詢結果的區(qū)域及其相應的數(shù)據(jù)結構或者指示已取元組位置的指示器稱為游標。游標操作語句:定義游標語句
4、:EXECSQLDECLARE<游標名>CURSORFOR
5、能:從指定的基本表或視圖中找到符合條件的元組,并把查詢結果存放到指定的宿主變量中。注意:宿主變量前面要加上前綴標識冒號“:”,以區(qū)別于屬性名等數(shù)據(jù)庫中的變量;宿主變量要在主程序中定義并用SQL的DECLARE語句加以說明。其他不需要使用游標的UPDATE語句、DELETE語句和INSERT語句。只要按照規(guī)定加上前綴標識“EXECSQL”和結束標識“;”或“END_EXEC”,并且在引用宿主變量時加上前綴標識“:”,就能夠嵌入C語言或其他宿主語言中使用。5第3章結構化查詢語言SQL不用游標的DML
6、語句舉例〖例3-34〗根據(jù)宿主變量givensno的值在基本表S中查詢該學生的姓名、性別、年齡和系別。EXECSQLSELECT姓名,年齡,性別,系別INTO:sname,:sage,::ssex,departmentFROMSWHERES.學號=:givensno;6第3章結構化查詢語言SQL不用游標的DML語句舉例〖例3-35〗把基本表S中計算機科學與工程系學生的年齡加上宿主變量raise的值。EXECSQLUPDATESSET年齡=年齡+:raiseFROMSWHERES.系別=‘計算機科
7、學與工程系’;7第3章結構化查詢語言SQL不用游標的DML語句舉例〖例3-36〗根據(jù)宿主變量dept中所給出的系名,刪除該系所有學生在基本表SC中的選課記錄。EXECSQLDELETEFROMSCWHERE:dept=(SELECT系別FROMSWHERES.學號=SC.學號);8第3章結構化查詢語言SQL不用游標的DML語句舉例〖例3-37〗把一名新生的記錄插入基本表S中,該生的簡況由一組宿主變量givensnosname、sage、ssex、department給出。EXECSQLINSER
8、TINTOS(學號,姓名,年齡,性別,系別)VALUES(:givensno,:sname,:sage,:ssex,:department)9第3章結構化查詢語言SQL使用游標的DML語句舉例〖例3-38〗根據(jù)宿主變量dept中所給出的系名,查詢該系所有學生在基本表S中的全部信息。EXECSQLDECLAREstudentCURSORFORSELECT學號,姓名,年齡,性別,系別FROMSWHERE系別=:dept;EXECSQLOPENstudent;while<條件表達式>{EXECSQLF