文档详情

mysql函数、存储过程、触发器、游标.doc

发布:2017-12-27约3.71千字共8页下载文档
文本预览下载声明
mysql函数、存储过程、触发器、游标 mysql函数、存储过程、触发器、游标2010-05-21 12:021.procedure (1)存储过程游标 mysql DELIMITER// mysql DROP PROCEDURE IF EXISTSoh_qty// /*如果存在同名存储过程则删除*/ mysql CREATE PROCEDURE oh_qty()/*创建存储过程*/ -BEGIN -DECLARE plant CHAR(4); -DECLARE loc CHAR(4); -DECLARE part CHAR(15); -DECLARE onhand DECIMAL(15,4); -DECLARE finished INTEGER DEFAULT 0; -DECLARE oh_cur CURSOR FOR -SELECT inv_plant,inv_loc,inv_part,inv_oh_qty FROM inv; -/*声明游标*/ -DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished=1; -/*如果没有找到数据则finished=1*/ -OPEN oh_cur; -/*打开游标*/ -calcloop: -LOOP -FETCH oh_cur INTO plant,loc,part,onhand; -/*fetch命令获取游标结果集并保存到变量中*/ -IF finished=1 THEN -LEAVE calcloop; -END IF; -/*执行leave命令立即退出循环或BEGIN/END块.*/ -IF plant=SJ01THEN -ITERATE calcloop; -END IF; -/*执行iterate语句将使嵌入该语句的LOOP,REPEAT,或WHILE循环返回到顶部,并再次执行.此处将去除plant=SJ01的数据.*/ -UPDATE inv SET inv_oh_qty=inv_oh_qty*10 -WHERE inv_plant=plant AND inv_loc=loc AND inv_part=part; -/*此处对数据集进行处理*/ -END LOOP calcloop;/*loop循环结束*/ -CLOSE oh_cur;/*关闭游标*/ -END///*存储过程结束*/ Query OK,0 rows affected(0.00 sec) mysql DELIMITER; mysql CALL oh_qty();/*执行存储过程*/ Query OK,1 row affected(0.02 sec) (2)Procedure: mysql DELIMITER// mysql CREATE PROCEDURE get_inventory(OUT inv INT) -SELECT 45 INTO inv; -// mysql CALL get_inventory(@inv); mysql SELECT@inv; /*如果希望在存储过程外使用变量,需要将其作为OUT变量传递*/ 返回结果:45 (3)IF语句 IF years_employed 5THEN SET bonus=total*.05; ELSEIF years_employed=5 and years_employed 10 THEN SET bonus=total*.06; ELSEIF years_employed=10 THEN SET bonus=total*.07; END IF (4)CASE语句 CASE WHEN state=ALTHEN SET tax_rate=.04; WHEN state=AKTHEN SET tax_rate=.00; END CASE; 或: CASE state WHENALTHEN SET tax_rate=.04; WHENAKTHEN SET tax_rate=.00; END CASE; (5)REPEAT语句 CREATE PROCEDURE test_date(rows INT) BEGIN DECLARE val1 FLOAT; DECLARE val2 FLOAT; REPEAT SELECT RAND()INTO val1; SELECT RAND()INTO val2; INSERT INTO analysis VALUES(NULL,val1,val2); SET rows=rows-1; UNTIL rows=0 END REPEAT; END// /*此存储过程将随机产生五条记录插入到analysis表中*/ (6)WHILE语句 CREATE PROCEDURE test_dat
显示全部
相似文档