




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第8講:(第5章) 高級SQL課程名稱: 數據庫系統 -JDBC(for Java)p.89 (ODBC for C+,C#,VB)2一 (講解)動態SQL簡介討論1. 如何用動態SQL操作數據庫? 許多應用的完成都需要采用某種程序語言和利用SQL1)程序語言如何利用SQL完成基于數據庫的數據處理? 1)動態SQL 調用數據庫廠商提供的通過函數/方法; SQL語句-以字符串方式在運行時動態構建和提交;2)嵌入式SQL 將SQL語句嵌入到程序中,但與動態SQL不同的是: SQL語句-在程序編譯時完全確定; 這樣的應用程序在編譯前,需要進行預編譯和優化; (這種預編譯器由提供數據庫廠商) 預編譯將
2、程序中的SQL代碼轉換成相應的代碼和函數; 數據庫廠商提供的庫函數供程序編譯(鏈接)時使用;3Java(JDBC)應用示例一 動態SQL簡介連接ORACLE數據庫(指定協議、主機名、端口、數據庫名、用戶、口令)載入Oracle for JDBC數據庫驅動器動態生成SQL空語句句柄動態生成SQL插入語句,并執行插入判定SQL插入語句成功?否則輸入錯誤信息動態生成SQL查看語句,并執行一次從查詢結果中提取1個元組,并顯示查詢輸入完成時,釋放資源動態SQL語句可以包含(4個,四個?號)多個參數變量為每個變量賦值將該元組插入庫輸入新的變量值后再插入1元組2) 如何理解該程序? 4二 嵌入式SQL p.
3、95討論2. 如何用嵌入式SQL操作數據庫? Include files; EXEC SQL INCLUDE SQLCA;EXEC SQL BEGIN DECLARE SECTION; char branchname15 = ; char szServerDatabase100;char szLogin20;char szPassword20; int iassets= 0; EXEC SQL END DECLARE SECTION;(讀取并為前4個宿主變量賦值)EXEC SQL CONNECT TO :szServerDatabase USER :szLogin using :szPassw
4、ord; EXEC select assets into iassets from branch where branch_name = :branchname;應用于主語言:C,C+,Cobol,Pascal,Java,PL/I,Fortran1)預編譯器如何識別嵌入在主語言中的SQL語句?C語言等: EXEC SQL ;Cobol: EXEC SQL END-EXEC;申明SQL語句中將使用的宿主變量(將專門用于SQL語句中)連接到數據庫查看部門的資產將該單個屬性值存放到iassets 加:-表示宿主變量SQL通信區:SQLCASQLCODE分量:返回執行狀態1.程序編寫的基本要素52.游
5、標(cursor)與返回結果集 p.98(申明宿主變量)(讀取和對宿主變量credit_amount賦值)EXEC SQL declare c cursor for select ID, name from student where tot_cred :credit_amount;EXEC SQL open c; while . doEXEC SQL fetch c into :si,:sn; (打印/顯示變量si和sn中的當前值)EXEC SQL close c; 二 嵌入式SQL1.定義游標2.打開游標(執行語句)3.提取當前元組 并移到下一元組(并放入變量si和sn)4.關閉游標(釋放
6、資源)由于select查詢結果為元組的集合;必須建立SQL與主語言的數據交換區;主語言通過游標指針,一次取一元組;62.游標與數據更新 p.98二 嵌入式SQLEXEC SQL declare c cursor for select *from instructor where dept_name = Music for update;EXEC SQL update instructor set salary = salary + 100 where current of c;4)解釋這兩個語句的作用?為修改數據庫中記錄,該語句定義一個游標。該語句利用定義的游標,對當前記錄進行修改。while
7、 . doEXEC SQL fetch c; EXEC SQL close c;需要的話,還可以添加語句:EXEC SQL COMMIT-提交事務/EXEC SQL ROLLBACK-回滾事務7三 SQL函數與過程1.SQL函數p.98討論3. SQL如何定義和使用函數與過程 ?1)解釋這幾個語句(各部分)的作用?定義(聲明)一個函數:有一個輸入參數,有一個輸出參數(返回值),begin-end為函數體.SQL查詢語句中,可以使用用戶定義的函數,就像使用系統固有函數一樣。定義的函數甚至可返回一個表,需仔細描述返回值(各屬性)類型。這里函數體僅一個SQL語句,故函數體不需用begin-end界定
8、。 函數返回表可以用在SQL查詢中允許表出現的位置!SQL除了提供一些常用的內建函數(聚集、日期、字符串轉換等)外,可編寫存儲過程(業務邏輯),存于庫中, 可在SQL/應用代碼中調用!作用:給定系名返回系人數使用該函數的參數(統稱存儲過程)82.SQL過程p.98-99三 SQL函數與過程2)SQL函數與SQL過程有何不同?過程:一段SQL語句程序;函數:有處理還有返回值3)該SQL過程的作用,及使用方法?該過程的作用與前面的dept_count函數類似!存儲過程可在SQL過程中或嵌入式SQL中通過call命令調用,還可在動態SQL中用create procedure dept_count_p
9、roc ( in dept_name varchar(20), out d_count integer) begin select count(*) into d_count from instructor where instructor.dept_name = dept_count_proc.dept_name enddeclare d_count integer;call dept_count_proc( Physics, d_count);begin enddeclare n integer default 0;while n 10 do set n = n + 1end whiler
10、epeat set n = n 1 until n = 0end repeat4)編寫存儲過程可以使用這些常規控制語句嗎?If n 0 then return(-1)else then return(1)endif可以使用!93.存儲過程示例*p.100(三 SQL函數與過程)輸入課程信息參數輸出錯誤參數統計課程人數,暫存于currEnrol滿足人數限制時,注冊一個學生(且注冊成功時,返回0)查看課程人數限制,暫存于limit否則,輸出錯誤信息到errorMsg(且注冊不成功時,返回-1)4)(講解)該SQL函數是如何完成課程注冊業務邏輯?1.定義觸發器10四 觸發器(student表的屬性)討論4. 什么是觸發器,如何使用?當section中還有參照記錄存在時,拒絕刪除
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 歐洲文藝復興影響-洞察闡釋
- 生態批判理論的深度解讀及其當代價值研究探討
- 生物能源-高效合成-洞察闡釋
- 食品工業0與智能制造-洞察闡釋
- 能源互聯網中的智能路徑優化技術-洞察闡釋
- 防盜設備市場細分領域研究-洞察闡釋
- 物理研究:中藥在光電子器件中的藥理作用實驗設計
- 雙相情感障礙護理課件
- 2025年師范生教育法律知識考試試卷及答案
- 完整版24式太極拳教案全集
- 2025年廣東省中考生物試卷真題(含答案解析)
- 第10課+遼夏金元的統治(大概念教學課件)2024-2025學年高一歷史上冊教學課件(統編版2019)
- 2024年中國甘肅省能源行業調查報告
- 中國聚丙烯酰胺行業市場發展分析及前景趨勢與投資研究報告2025-2028版
- 青年教師教學工作坊組織計劃
- 中廣核培訓課件
- 百度公司環境管理制度
- 特殊工時制管理制度
- 駐非洲員工管理制度
- 統編版三年級語文下冊同步高效課堂系列第一單元復習課件
- 2025年高考生物真題(安徽)含答案
評論
0/150
提交評論