一、實驗名稱: 存儲過程?
二、實驗日期: 2024 年5? 月 25 日
三、實驗目的:
- 掌握MySQL存儲過程的創建及調用;
四、實驗用的儀器和材料:
硬件:PC電腦一臺;
配置:內存,2G及以上? 硬盤250G及以上
軟件環境:操作系統 windows7以上
數據庫環境:MySQL5.7或MySQL8.0.20
五、實驗步驟和方法
練習:(基于實驗3的表結構及數據)
1、創建存儲過程p_cx,實現可根據各種商品所屬類別進行查詢商品編號,名稱,所屬類別及價格。
2、創建一存儲過程p_intbm,通過帶參數的存儲過程向表bmxx中插入一條數據,傳入參數為bmbh,bmmc,并且如果插入主鍵重復數據,則將bmbh和bmmc插入錯誤記錄表splog中,數據插入時間賦為當前日期,操作標志位賦上'insert'。錯誤記錄表splog建表語句如下。
CREATE TABLE splog (spbjlog char(8),spmclog varchar(20),
sjlog datetime,
Bz varchar(10));
實驗準備:
create database test11;
use test11;#創建商品信息表
create table spxx
(spbh char(8) not null primary key,
spmc varchar(20) not null,
sslb varchar(8) not null,
jg float(10,2) not null,
sl int(4) not null
)ENGINE=InnoDB default charset=utf8;insert into spxx values('10000001','空調','電器',1500,10),('10000002','書包','文具',100,20),('10000003','卷紙','日用品',30,50);#創建部門信息表
create table bmxx
(bmbh char(8) not null primary key,
bmmc varchar(10) not null)ENGINE=InnoDB default charset=utf8;#部門信息表插入數據
insert into bmxx values('1001','業務'),('1002','技術'),('1003','售后'),('1004','管理');
???
六、實驗結果或結論:即根據實驗過程中所見到的現象和測得的數據,作出結論。
創建存儲過程p_cx,實現可根據各種商品所屬類別進行查詢商品編號,名稱,所屬類別及價格:
#創建存儲過程p_cx,實現可根據各種商品所屬類別進行查詢商品編號,名稱,所屬類別及價格。
delimiter //
create procedure p_cx(in csslb varchar(8))
begin
select spbh,spmc,sslb,jg from spxx where sslb = csslb;
end //
delimiter ;# 存儲過程的調用alter
call p_cx('文具');
call p_cx('電器');
?
? 創建一存儲過程p_intbm,通過帶參數的存儲過程向表bmxx中插入一條數據,傳入參數為bmbh,bmmc,并且如果插入主鍵重復數據,則將bmbh和bmmc插入錯誤記錄表splog中,數據插入時間賦為當前日期,操作標志位賦上'insert':
delimiter //
create procedure p_intbm(in ibmbh char(8),ibmmc varchar(10))
Begin
declare done varchar(10);
DECLARE CONTINUE HANDLER FOR 1062 set done='false';
Insert into bmxx values(ibmbh,ibmmc);
If done='false' thenselect '插入重復數據';insert into splog values(ibmbh,ibmmc,current_time(),null);
end if;
set done='true';
end //
delimiter ;select * from bmxx;call p_intbm('1006','運維'); //重復運行幾次,專門記錄'插入重復數據'的日志表(splog)會記錄下來
drop procedure p_intbm;select * from splog;

七、實驗心得:可寫上實驗成功或失敗的原因,實驗后的心得體會、建議等。
創建存儲過程能夠提高性能,存儲過程在數據庫中編譯和存儲,可以減少網絡流量,提高性能。創建存儲過程具有重用性:存儲過程可以被多個應用程序調用,提高代碼的重用性。可以提高安全性:通過存儲過程,可以控制對數據庫的訪問權限,提高安全性。創建存儲過程還能夠簡化復雜操作:存儲過程可以包含復雜的業務邏輯,簡化數據庫操作。
在實踐過程中,熟悉存儲過程的語法和結構,了解存儲過程的創建和執行過程,掌握存儲過程中的語句格式,參數傳遞方式等。在編寫存儲過程前,需要明確存儲過程的目的和實現的功能,并且規劃好存儲過程的整體邏輯。需要注意存儲過程的性能問題:存儲過程的性能直接影響數據庫的整體性能,因此需要注意存儲過程的優化,比如盡量減少數據庫的訪問次數,避免不必要的操作等。需要注意安全問題:存儲過程中可能包含敏感數據,因此需要注意存儲過程的安全性,比如對存儲過程進行權限控制等。
創建存儲過程需要一定的經驗積累和技巧,因此需要多練習并不斷總結經驗。