存储过程(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 药品

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值