存儲過程(SQL SERVER 2008)

一 、實驗題目:存儲過程
二、 實驗目的:熟悉存儲過程的定義和使用,熟練運用 select ,update ,insert ,delete 命令完成對學生信息數據庫的查詢、更新、添加、刪除操作。
題目六:
藥品(編號,名稱,價格,廠商)
處方(藥品編號,數量,醫生編號)
醫生 (編號,姓名,科室,職稱)
根據上面基本表的信息定義一個存儲過程,完成下面功能:
入口參數:藥品編號
1 顯示藥品信息
2 如果沒有處方開此藥,刪除該藥品記錄
3 如果價格高於10元,降價至10元。

所測試的數據:

INSERT INTO 醫生
(編號,姓名,科室,職稱)
VALUES
('1001','張三','外科','主刀醫師'),
('1002','李四','內科','主任醫師'),
('1003','王五','小兒科','主治醫師'),
('1004','王二','眼科','主任醫師'),
('1005','趙六','婦科','主刀醫師'),
('1006','張力','內科','副主任醫師'),
('1007','張力','骨科','主刀醫師');
select * from 醫生

INSERT INTO 藥品
(編號,名稱,價格,廠商)
VALUES
('2001','板藍根','28.00','雲南製藥'),
('2002','益氣養血口服液','29.00','北方製藥'),
('2003','小兒感冒顆粒','35.00','三九藥業'),
('2004','999感冒靈','14.00','三九藥業'),
('2005','維C銀翹片','25.00','北方製藥'),
('2006','珍珠明目滴眼液','19.00','天龍藥業');
select * from 藥品

INSERT INTO 處方
(藥品編號,數量,醫生編號)
VALUES
('2001','2','1002'),
('2001','5','1006'),
('2005','6','1006'),
('2006','3','1004'),
('2002','7','1005'),
('2003','2','1003');
select * from 處方

在這裏插入圖片描述
定義存儲過程:

create procedure ManageMedical @id int
as
if @id not in(select 編號 from 藥品)
begin
print('沒有該藥品')
return 
end

select * 
from 藥品 
where 編號 = @id

declare @count int
select @count = COUNT(*) from 處方 where 藥品編號 = @id

if(@count = 0)  
delete 
from 藥品
where 編號= @id;

else
begin
    declare @price money
    select @price = 價格 
    from 藥品 
    where 編號 = @id
    
    if (@price > 10) 
    update 藥品 
    set 價格 = 10 
    where 編號 = @id
end
--對有處方開的藥品:
ManageMedical 2003
select *
from 藥品

在這裏插入圖片描述

--對沒有處方開的藥品:
ManageMedical 2004
select *
from 藥品

在這裏插入圖片描述

--對不存在的藥品:
ManageMedical 1993
select * 
from 藥品

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章