一、存储过程
1.1、delimiter
MySQL 中有一个命令是delimiter,作用是设置命令段的结束符号,即遇到这个所设置的结束符号后,按回车,则命令段就可以执行了。通常默认情况下,命令的结束符号是分号(;),但是在存储过程中,过程体内可能会包含分号(;),因此需要将命令结束符号替换成其他的字符,如$$、//等,存储过程创建完成后,可以将命令段的结束符号重新设为分号。
语法:delimiter 命令结束符
1.2、存储过程示例
1)创建:
DELIMITER $$CREATE PROCEDURE SHOW_EMP01()BEGIN SELECT * FROM STUDY11;END$$DELIMITER ;
2)调用:
CALL SHOW_EMP01();
1.3、查看存储过程
1)查看所有存储过程
SHOW PROCEDURE STATUS;
2)查看指定数据库的存储过程
SHOW PROCEDURE STATUS WHERE DB='test';
3)查看指定存储过程源代码
SHOW CREATE PROCEDURE SHOW_EMP01;
1.4、删除存储过程
DROP PROCEDURE SHOW_EMP01;
1.5、声明变量
DELIMITER $$CREATE PROCEDURE SHOW_EMP02()BEGIN #变量定义 DECLARE ROWS INT DEFAULT 0; #变量赋值 SELECT COUNT(*) INTO ROWS FROM STUDY11; #结果返回 SELECT ROWS;END$$DELIMITER ;
1.6、参数
1.6.1、IN:输入参数
1)创建:
DELIMITER $$CREATE PROCEDURE GETSEX (IN PNAME VARCHAR(12))BEGIN SELECT SEX FROM STUDY11 WHERE NAME=PNAME;END$$DELIMITER ;
2)调用:
CALL GETSEX ('study01');
1.6.2、OUT:输出参数
1)创建:
DELIMITER $$CREATE PROCEDURE GETID (IN PNAME VARCHAR(12),OUT PID INT)BEGIN SELECT ID INTO PID FROM STUDY11 WHERE NAME=PNAME;END$$DELIMITER ;
2)调用:
CALL GETID ('study01',@PID);SELECT @PID; -- 此句的完整写法是:SELECT @PID FROM DUAL;
1.6.3、INOUT:输入输出参数<.........>