1、要求
1、執行儲存過程時,實引數等於儲存過程中形引數;實引數少於儲存過程中形引數;
2、執行儲存過程;通過對錶操作觸發激發觸發器執行並檢視結果。
實驗環境:mysql
實驗步驟
1. 定義儲存過程
① 建立乙個能向學生表student中插入一條記錄的儲存過程insert_student,該儲存過程需要五個引數,分別用來傳遞學號、姓名、班級號、性別、出生日期5個值。
插入一條記錄的儲存過程insert_student:
執行儲存過程:
④執行儲存過程insert_course,向課程表course中插入一門新課程,分兩種情況:
第一種情況:提供三個實參值執行儲存過程insert_course,實參值由使用者自己給出。
執行完畢後,查詢兩種執行儲存過程的結果並比較差別。
因為mysql儲存過程不支援預設引數操作,所以用在sqlsever下儲存過程的建立和執行,由於之前沒有安裝sqlsever不能驗證其正確性:
create
procedure insert_course(
@course_no
char(5
),@course_name
char(20
),@course_score
int=2)
asbegin
insert
into course
values
(@course_no
,@course_name
,@course_score);
endexec insert_course '30007'
,'數學建模'
;select
*from course;
⑤建立乙個名稱為query_student的儲存過程,該儲存過程的功能是從資料表student中根據學號查詢某一同學的姓名、班級號、性別、出生日期。
①建立乙個當向學生表student中插入一條新記錄時能自動列出全部同學資訊的觸發器display_student。執行儲存過程insert_student,向學生表student中插入一條新記錄,看觸發器display_student是否被執行。
在mysql的trigger和function中不能出現select * from table;或select 欄位1, 欄位2, 欄位3 from table;等等形式的查詢,因為其會返回乙個結果集;而這在mysql的trigger和function中是不可接受的,但是在儲存過程中可以。
先給choice表中插入了學號為「991203」學生的選課記錄,然後建立觸發器、刪除student表中「991203」的記錄
(4)當修改學生表中學生學號時,保證選課表中的學號同時更新。
操作技巧與注意事項:
1. create procedure語句和create trigger語句必須是批處理的第乙個語句。
2. 資料庫所有者具有預設的建立儲存過程的許可權,它可把該許可權傳遞給其他的使用者。
3. 表的所有者具有建立觸發器的預設許可權,他不能把該許可權傳遞給其他的使用者。
4. 儲存過程和觸發器作為資料庫的物件,其命名必須符合命名規則。
5. 只能在當前資料庫中建立屬於當前資料庫的儲存過程和觸發器。
6. 乙個觸發器只能對應乙個表。
7. 儲存過程與bat檔案又有很大的差別,儲存過程已經進行了預編譯,而bat檔案僅僅是將一些命令集合在一起。
8. 在物件資源管理器中,不能直接刪除觸發器。刪除觸發器只能使用drop trigger語句。
資料庫儲存過程與觸發器
資料庫儲存過程 儲存過程 stored procedure 是在大型 資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。優點 重複使用。儲存過程可以重複使用,從而可以減...
資料庫 儲存過程與觸發器
儲存過程是儲存在資料庫目錄中的一段宣告性sql語句。儲存過程是資料庫中的乙個重要物件,使用者通過指定儲存過程的名字並給出引數來執行它。儲存過程的優點 增強了sql語句的功能和靈活性 不需要反覆建立一系列處理步驟,保證了資料的完整性 降低了網路的通訊量,客戶端呼叫儲存過程只需要傳儲存過程名和相關引數即...
資料庫儲存過程和觸發器
建立儲存過程 create procedure titles sum title varchar 40 sum money output asselect sum sum price from titles where title like title godeclare totalcost mon...