知识点五:MySQL存储过程之定义条件和处理过程及存储过程的管理(11,12)
定义条件和处理:
条件的定义和处理可以用来定义在处理过程中遇到的问题时相应的处理步骤。
DECLARE CONTINUE HANDLER FOR SQLSTATE ‘错误代码值’SET @变量=变量值
存储过程的管理:
存储过程的修改:
ALTER
{PROCEDURE | FUNCTION} sp_name
[characteristic …]
characteristic:
{CONTAINS SQL | NO SQL |
READS SQL DATA | MODIFIES SQL DATA}
| SQL SECURITY {DEFINER
| INVOKEY }
|
COMMENT ‘string’;
注释:NO SQL表示子程序中不包含SQL语句,
READS SQL DATA 表示子程序中包含读数据的语句,
MODIFIES SQL DATA 表示子程序中包含写数据的语句
SQL SECURITY {DEFINER | INVOKEY }指明谁有权限执行
DEFINER表示只有定义者自己才能够执行;
INVOKEY 表示调用者可以执行
COMMENT ‘string’是注释信息
查看数据库下的存储过程:
SHOW PROCEDURE STATUS WHERE db=’数据库名’;
查看当前数据库下面的存储过程的列表:
SELECT specific_name FROM mysql.proc;
查看存储过程的内容:
SELECT specific_name,body FROM mysql.proc
WHERE specific_name = 存储过程名称;
或者:SHOW CREATE PROCEDURE 存储过程名称.
删除存储过程:
DROP PROCEDURE IF EXISTS存储过程名称
-- 定义条件和处理
--加入是对的,但执行报错,因为userinfo中if为一的以及存在
DELIMITER //
CREATE PROCEDURE p_insertDemo() BEGIN
INSERT INTO userinfo VALUES(1,'ui','');
INSERT INTO employees VALUES(5098,'1990-11-11','uim','jum','2000-11-12');
END
// DELIMITER ;
CALL p_insertDemo2(); --对的
DELIMITER //
CREATE PROCEDURE p_insertDemo2() BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '' SET @x=1;
INSERT INTO userinfo VALUES(1,'ui','');
INSERT INTO employees VALUES(5098,'1990-11-11','uim','jum','M','2000-11-12');
END
// DELIMITER ;
CALL p_insertDemo2();
定义条件和处理过程测试