使用数据库对象存储过程比一条一条执行语句要快得多,所谓数据库对象存储过程和函数就是把一组关于表操作的SQL语句当作一个整体来执行。简单说就是事先经过编译并存储在数据库中的一段SQL语句集合。
存储过程和函数的区别在于存储函数有返回值,存储过程没有返回值;存储过程的参数类型远远多于函数参数类型。
创建
创建存储过程:
DELIMITER $$
CREATE PROCEDURE proce_employee_sal()
COMMENT'查询所有员工的工资'
BEGIN
SELECT sal FROM t_employee;
END $$
DELIMITER ;
理解:DELIMITER $$ 将结束符设置为‘$$’而不是‘;’(当使用DELIMITER命令时,应该避免使用反斜杠‘\’字符,因为反斜杠是MYSQL的转义字符),然后创建一个名为pro_employee_sal的存储过程。COMMENT ‘xxx’是注释语句。
创建存储函数:
DELIMITER $$
CREATE FUNCTION func_employee_sal(empno INT(11))
RETURNS DOUBLE(10,2)
COMMENT'查询某个雇员的工资'
BEGIN
RETURN(SELECT sal FROM t_employee
WHERE t_employee.empno=empno);
END$$
DELIMITER ;
理解:创建一个名为func_employee_sal的函数查询满足条件的记录并返回该记录的sal字段。
调用
调用存储过程:
MySQL中使用CALL语句来调用存储过程。
CALL proce_name();
查看调用存储过程的结果:
SELECT xxx;
调用存储函数:
SELECT func_name();
补充:
在存储过程和函数内可以执行申明变量:
DECLARE varname type;
和赋值变量:
SET var_name = xxx;