實驗六 存盤程序
第1關:增加供應商相關列sqty
use demo;
#代碼開始
#在S表中增加一列供應零件總數量(sqty),默認值為0,
altertable s add sqty intdefault0;
#代碼結束
desc s;
第2關:定義、呼叫簡單存盤程序
use demo;
#代碼開始
#1、定義簡單存盤程序:計算所有供應商供應零件總數量并修改供應商相關列sqty,
DELIMITER //
createprocedure proc\_1()--in p\_sno char(2)--
begin
update s set sqty =(selectsum(qty)from spj where spj.sno = s.sno);
end//
#2、呼叫存盤程序,
call proc\_1();
#代碼結束
select\*from s;
第3關:定義、呼叫帶引數存盤程序(1)
use demo;
#代碼開始
#1、定義帶引數存盤程序:查詢回傳指定供應商的供應零件總數量,
dropprocedureifexists proc\_b;
DELIMITER $$
createprocedure proc\_b(IN p\_sno char(2),OUT p\_sqty int)
begin
selectsum(qty)into p\_sqty from spj where sno = p\_sno;
end$$
#2、呼叫帶引數存盤程序,
#以供應商S1為引數,呼叫存盤程序,將結果存入@sqty1
call proc\_b('S1', @sqty1);
-- set @sqty1 = 1100;
-- select @sqty1;
#以供應商S2為引數,呼叫存盤程序,將結果存入@sqty2
call proc\_b('S2', @sqty2);
-- set @sqty2 = 2000;
-- select @sqty2;
#代碼結束
select @sqty1,@sqty2
第4關:定義、呼叫帶引數存盤程序(2)
use demo;
#代碼開始
#1、定義帶引數存盤程序:插入一個指定供應商資訊 ('S6','泰欣',40,'十堰')(所有資訊由引數提供),
DELIMITER $$
CREATEPROCEDURE proc\_insert (
p\_sno CHAR ( 2 ), -- 供應商編號
p\_sname VARCHAR ( 10 ), -- 供應商名稱
p\_status INT, -- 供應商狀態
p\_city VARCHAR ( 10 ) -- 供應商城市
)
BEGIN
DECLARE v\_count INT; -- 宣告一個變數用于存盤供應商數量
SELECTCOUNT(\*) INTO v\_count FROM s WHERE sno = p\_sno; -- 查詢是否存在相同編號的供應商
IF v\_count \>0THEN-- 如果存在,提示錯誤資訊
SELECT'供應商已存在,請重新插入!';
ELSEIF v\_count =0THEN-- 如果不存在,插入新的供應商資訊
INSERTINTO s (sno, sname, status, city) VALUES (p\_sno, p\_sname, p\_status, p\_city);
END IF;
END$$
#2、呼叫帶引數存盤程序,
CALL proc\_insert ('S6','泰欣',40,'十堰'); -- 呼叫存盤程序,傳入引數
SELECT\*FROM s WHERE sno ='S6'; -- 查詢插入的結果
#代碼結束
第5關:定義、呼叫帶引數存盤程序(3)
use demo;
#代碼開始
#1、定義帶引數存盤程序:洗掉指定零件代碼的供應資訊,并回傳洗掉的元組數,
DELIMITER $$
dropprocedureifexists proc\_delete$$
createprocedure proc\_delete(IN p\_pno char(4),OUT p\_count int)
begin
deletefrom spj where pno = p\_pno;
-- set p\_count = row\_count();
selectrow\_count()into p\_count;
end$$
#2、呼叫帶引數存盤程序,
#以零件代碼P5為引數,呼叫存盤程序,將結果存入@p\_count1
call proc\_delete('P5', @p\_count1);
#以零件代碼P6為引數,呼叫存盤程序,將結果存入@p\_count2
call proc\_delete('P6', @p\_count2);
#代碼結束
select @p\_count1,@p\_count2
第6關:定義、呼叫帶引數存盤程序(4)
use demo;
#代碼開始
#1、定義帶引數存盤程序:修改指定代碼專案的其它資訊(所有資訊由引數提供),
DELIMITER $$
CREATEPROCEDURE proc\_update (
p\_jno CHAR ( 2 ), -- 專案編號
p\_jname VARCHAR ( 10 ), -- 專案名稱
p\_city VARCHAR ( 10 ) -- 專案城市
)
BEGIN
DECLARE p\_count INT; -- 宣告一個變數用于存盤專案數量
SELECTCOUNT(\*) INTO p\_count FROM j WHERE jno = p\_jno; -- 查詢是否存在指定編號的專案
IF p\_count \> 0 THEN-- 如果存在,更新專案資訊
UPDATE j SET jname = p\_jname, city = p\_city WHERE j.jno = p\_jno;
END IF;
END$$
#2、呼叫帶引數存盤程序,
# 修改工程專案代碼 J7(jno) 的資訊為: 汽車制造廠 (jname) 十堰 (city)
CALL proc\_update ('J7', '汽車制造廠', '十堰');
#代碼結束
select \* from j where jno = 'J7';
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/552058.html
標籤:其他
上一篇:實驗七 函式與觸發器
下一篇:返回列表
