《 存儲過程與觸發器 》實驗報告 一、實驗目的 (1)掌握 Oracle 數據庫編程語言 PL/SQL 的基礎知識。
?。?)掌握游標、存儲過程和觸發器的創建,使用方法。
?。?)了解使用高級語言連接數據庫的技術、基本方法,了解 ODBC、ADO 和 JDBC的技術。
二、實驗內容 在實驗一、實驗二創建的表中用 PL/SQL 語言完成以下內容:
1.創建存儲過程,根據調用時提供的學生姓名查詢該學生所修課程的課程信息,在過程體中將課程號、課程名和成績輸出到輸出窗口,在 SQL 窗口中給出過程調用語句塊。
創建的存儲過程 P1
SQL 中調用的語句塊
語句執行結果
2.創建存儲過程,統計指定學生學號的平均成績和選課門數,將統計結果用輸出參數傳遞給主程序,在 SQL 窗口中調用存儲過程,輸出過程的返回結果。
創建的存儲過程 P2 SQL 中調用存儲過 程 P2
執行結果
3.創建存儲過程,在學生表 Student 中插入一條完整的元組,在 SQL 窗口中給出過程調用語句塊。
存儲過程 P3 SQL 插入語句 語句執行結果
4.創建存儲過程,將指定零件的重量增加指定的值,在 SQL 窗口中給出過程調用語句塊。
創建存儲過程 P4 執行語句前 P1 的情況 執行 SQL 語句
執行 SQL 語句后的 P1
5.創建存儲過程,查詢供應量在指定范圍內的零件名稱和供應商名,在過程體中將結果輸出到輸出窗口,并在 SQL 窗口中給出過程調用語句塊。
創建的存儲過程 P5 執行 SQL 語句
執行結果
6.(1)刪除 SPJ 關系中所有數據。
刪除語句 已清空數據 (2)在插入和修改 SPJ 表中 QTY 屬性列的值時用觸發器實現約束:如果是北京的供應商,供應任何零件的數量不能少于 300,如果少于則自動改為 300。
?。?)在 SPJ 表中錄入值進行驗證。
執行結果 7.(1)刪除 SC 關系中的所有數據。
SC 表已經清空
?。?)在 SC 關系中增加新屬性列 Status,用來記錄課程成績的等級。
新增加的 Status 列 (3)用觸發器實現自動記錄成績等級,當插入和修改 grade 列的值時,如果 grade 在 0-59 分,status 自動填寫為“不及格”;grade 在 60-69 分,status自動填寫為“及格”;grade 在 70-89 分,status 自動填寫為“良好”;grade在 90 以上 status 自動填寫為“優秀”。
創建的觸發器
?。?)在 SC 表中錄入值進行驗證。
執行插入操作時候的運行結果 執行更新操作時候的運行結果 8.創建觸發器,實現在轉專業記錄表 change_major 中自動登記轉專業信息,即當修改學生表中屬性列 major 的值時,系統自動在 change_major 中插入一條轉專業的信息(注:change_major 中的 id 屬性列可設置為自動增長,具體參照課堂講解的例題)。
ID 自動增長語句 創建的觸發器 t3 最終運行結果
三、實驗總結
總結:本次實驗在查閱了大量資料的前提下通過反復看視頻,看 PPT 才完成?;旧现懒舜鎯ζ?,游標和觸發器的創建語句,以及使用方法。但相對來說不是很熟練。有空還得多加練習 SQL 語句。