头歌 实验七 存储过程

实验七 存储过程头歌

制作不易!点个关注,希望给大家带来价值

第1关 增加供应商相关列sqty

use demo;

#代码开始
#在S表中增加一列供应零件总数量(sqty),默认值为0。

alter table s add sqty int default 0;


#代码结束

desc s;

第2关 定义、调用简单存储过程

use demo;

#代码开始
#1、定义简单存储过程:计算所有供应商供应零件总数量并修改供应商相关列sqty。
drop procedure if exists proc_1;
delimiter //
create procedure proc_1()
begin
    update s set sqty=(select sum(qty) from spj where spj.sno=s.sno);
end//


#2、调用存储过程。
call proc_1();


#代码结束

select * from s;

第3关 定义、调用带参数存储过程(1)

use demo;

#代码开始
DELIMITER //
create PROCEDURE proc_2(in in_sno char(2),out out_qty int)
begin
	SELECT sum(qty) into out_qty from spj where sno=in_sno;
end//



#2、调用带参数存储过程。
#以供应商S1为参数,调用存储过程,将结果存入@sqty1
call proc_2('S1',@sqty1);

#以供应商S2为参数,调用存储过程,将结果存入@sqty2
call proc_2('S2',@sqty2);
#代码结束

select @sqty1,@sqty2

第4关 定义、调用带参数存储过程(2)

use demo;
 
#代码开始
#1、定义带参数存储过程:插入一个指定供应商信息 ('S6','泰欣',40,'十堰')(所有信息由参数提供)。
 
DELIMITER //
CREATE PROCEDURE proc_insert (
    p_sno CHAR ( 2 ),
    p_sname VARCHAR ( 10 ),
    p_status INT,
    p_city VARCHAR ( 10 )) BEGIN
    DECLARE
        v_count INT;
    SELECT
        COUNT(*) INTO v_count 
    FROM
        s 
    WHERE
        sno = p_sno;
    IF
        v_count > 0 THEN
        SELECT
            ( '供应商已存在,请重新插入!' );
        
        ELSEIF v_count = 0 THEN
        INSERT INTO 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、定义带参数存储过程:删除指定零件代码的供应信息,并返回删除的元组数。
drop procedure if exists delete_info;
delimiter //
create procedure delete_info(in p_pon char(7),out d_num int)
begin
delete from spj where pno =p_pon;
select row_count() into d_num;
end //


#2、调用带参数存储过程。
#以零件代码P5为参数,调用存储过程,将结果存入@p_count1
call delete_info('P5',@p_count1);

#以零件代码P6为参数,调用存储过程,将结果存入@p_count2
call delete_info('P6',@p_count2);

#代码结束

select @p_count1,@p_count2

第6关 定义、调用带参数存储过程(4)

use demo;
 
#代码开始
#1、定义带参数存储过程:修改指定代码项目的其它信息(所有信息由参数提供)。
DELIMITER //
CREATE PROCEDURE proc_update (
    p_jno CHAR ( 2 ),
    p_jname VARCHAR ( 10 ),
    p_city VARCHAR ( 10 )) BEGIN
    DECLARE
        p_count INT;
    SELECT
        COUNT(*) 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';
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值