




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第8講:(第5章) 高級SQL課程名稱: 數據庫系統(tǒng) -JDBC(for Java)p.89 (ODBC for C+,C#,VB)2一 (講解)動態(tài)SQL簡介討論1. 如何用動態(tài)SQL操作數據庫? 許多應用的完成都需要采用某種程序語言和利用SQL1)程序語言如何利用SQL完成基于數據庫的數據處理? 1)動態(tài)SQL 調用數據庫廠商提供的通過函數/方法; SQL語句-以字符串方式在運行時動態(tài)構建和提交;2)嵌入式SQL 將SQL語句嵌入到程序中,但與動態(tài)SQL不同的是: SQL語句-在程序編譯時完全確定; 這樣的應用程序在編譯前,需要進行預編譯和優(yōu)化; (這種預編譯器由提供數據庫廠商) 預編譯將
2、程序中的SQL代碼轉換成相應的代碼和函數; 數據庫廠商提供的庫函數供程序編譯(鏈接)時使用;3Java(JDBC)應用示例一 動態(tài)SQL簡介連接ORACLE數據庫(指定協議、主機名、端口、數據庫名、用戶、口令)載入Oracle for JDBC數據庫驅動器動態(tài)生成SQL空語句句柄動態(tài)生成SQL插入語句,并執(zhí)行插入判定SQL插入語句成功?否則輸入錯誤信息動態(tài)生成SQL查看語句,并執(zhí)行一次從查詢結果中提取1個元組,并顯示查詢輸入完成時,釋放資源動態(tài)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通信區(qū):SQLCASQLCODE分量:返回執(zhí)行狀態(tài)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.打開游標(執(zhí)行語句)3.提取當前元組 并移到下一元組(并放入變量si和sn)4.關閉游標(釋放
6、資源)由于select查詢結果為元組的集合;必須建立SQL與主語言的數據交換區(qū);主語言通過游標指針,一次取一元組;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查詢語句中,可以使用用戶定義的函數,就像使用系統(tǒng)固有函數一樣。定義的函數甚至可返回一個表,需仔細描述返回值(各屬性)類型。這里函數體僅一個SQL語句,故函數體不需用begin-end界定
8、。 函數返回表可以用在SQL查詢中允許表出現的位置!SQL除了提供一些常用的內建函數(聚集、日期、字符串轉換等)外,可編寫存儲過程(業(yè)務邏輯),存于庫中, 可在SQL/應用代碼中調用!作用:給定系名返回系人數使用該函數的參數(統(tǒng)稱存儲過程)82.SQL過程p.98-99三 SQL函數與過程2)SQL函數與SQL過程有何不同?過程:一段SQL語句程序;函數:有處理還有返回值3)該SQL過程的作用,及使用方法?該過程的作用與前面的dept_count函數類似!存儲過程可在SQL過程中或嵌入式SQL中通過call命令調用,還可在動態(tài)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)編寫存儲過程可以使用這些常規(guī)控制語句嗎?If n 0 then return(-1)else then return(1)endif可以使用!93.存儲過程示例*p.100(三 SQL函數與過程)輸入課程信息參數輸出錯誤參數統(tǒng)計課程人數,暫存于currEnrol滿足人數限制時,注冊一個學生(且注冊成功時,返回0)查看課程人數限制,暫存于limit否則,輸出錯誤信息到errorMsg(且注冊不成功時,返回-1)4)(講解)該SQL函數是如何完成課程注冊業(yè)務邏輯?1.定義觸發(fā)器10四 觸發(fā)器(student表的屬性)討論4. 什么是觸發(fā)器,如何使用?當section中還有參照記錄存在時,拒絕刪除
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 培訓課件 養(yǎng)老中心
- 車輛保養(yǎng)培訓課件
- 心理健康在創(chuàng)業(yè)教育中的重要性
- 智能課堂打造高效學習新模式
- 探索教育心理學與現代科技在提升學習效果中的應用
- 教育心理學與創(chuàng)意課程的結合實踐探索
- 中考語文寫作專題《最動聽的聲音》范文6篇
- 抖音商戶直播售后服務響應時限制度
- 全球教育變革中2025年跨文化交流能力培養(yǎng)的創(chuàng)新模式研究
- 八大城市教育行業(yè)教育培訓機構市場調研與消費者需求分析報告
- 老年人誤吸的預防團體標準
- 高中數學第三章不等式章末復習提升省公開課一等獎新課獲獎課件
- 學校保潔服務投標方案(技術方案)
- 2025年度礦山尾礦綜合利用項目合作協議3篇
- 《旅游經濟學》課程教學大綱
- 盆腔炎中醫(yī)課件
- 中國急性缺血性腦卒中早期血管內介入診療指南
- 空調維保服務投標方案 (技術方案)
- HSE基本管理制度
- T-CSPSTC 55-2020 隧道襯砌質量無損檢測技術規(guī)程
評論
0/150
提交評論