use demo;#代码开始#在S表中增加一列供应零件总数量(sqty),默认值为0。altertable s add sqty intdefault0;#代码结束desc s;
第2关 定义、调用简单存储过程
use demo;#代码开始#1、定义简单存储过程:计算所有供应商供应零件总数量并修改供应商相关列sqty。dropprocedureifexists proc_1;delimiter//createprocedure proc_1()beginupdate s set sqty=(selectsum(qty)from spj where spj.sno=s.sno);end//#2、调用存储过程。call proc_1();#代码结束select*from s;
第3关 定义、调用带参数存储过程(1)
use demo;#代码开始DELIMITER//createPROCEDURE proc_2(in in_sno char(2),out out_qty int)beginSELECTsum(qty)into out_qty from spj where sno=in_sno;end//#2、调用带参数存储过程。#以供应商S1为参数,调用存储过程,将结果存入@sqty1call proc_2('S1',@sqty1);#以供应商S2为参数,调用存储过程,将结果存入@sqty2call proc_2('S2',@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))BEGINDECLARE
v_count INT;SELECTCOUNT(*)INTO v_count
FROM
s
WHERE
sno = p_sno;IF
v_count >0THENSELECT('供应商已存在,请重新插入!');ELSEIF v_count =0THENINSERTINTO s ( sno, sname,STATUS, city )VALUES( p_sno, p_sname, p_status, p_city );ENDIF;END//#2、调用带参数存储过程。CALL proc_insert ('S6','泰欣',40,'十堰');SELECT*FROM
s WHERE sno ='S6';#代码结束
第5关 定义、调用带参数存储过程(3)
use demo;#代码开始#1、定义带参数存储过程:删除指定零件代码的供应信息,并返回删除的元组数。dropprocedureifexists delete_info;delimiter//createprocedure delete_info(in p_pon char(7),out d_num int)begindeletefrom spj where pno =p_pon;select row_count()into d_num;end//#2、调用带参数存储过程。#以零件代码P5为参数,调用存储过程,将结果存入@p_count1call delete_info('P5',@p_count1);#以零件代码P6为参数,调用存储过程,将结果存入@p_count2call delete_info('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))BEGINDECLARE
p_count INT;SELECTCOUNT(*)INTO p_count
FROM
j
WHERE
jno = p_jno;IF
p_count >0THENUPDATE j
SET jname = p_jname,
city = p_city
WHERE
j.jno = p_jno;ENDIF;END//#2、调用带参数存储过程。# 修改工程项目代码 J7(jno) 的信息为: 汽车制造厂 (jname) 十堰 (city)CALL proc_update ('J7','汽车制造厂','十堰');#代码结束select*from j where jno ='J7';