存储过程 procedure

优点

  • 存储过程可封装,并隐藏复杂的商业逻辑。
  • 存储过程可以回传值,并可以接受参数。
  • 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。
  • 存储过程可以用在数据检验,强制实行商业逻辑等。

    缺点

  • 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。

  • 存储过程的性能调校与撰写,受限于各种数据库系统。
    1. 创建用户定义的 SQL 过程
    2. create procedure
    3. 删除数据库中已创建的存储过程
    4. drop procedure
    调用 MySQL 存储过程
    调用 MySQL 存储过程时候,需要在过程名字后面加“()”,即使没有一个参数,也需要“()”
    1. call 存储过程名()

举个栗子

  1. CREATE PROCEDURE proc()
  2. BEGIN
  3. DECLARE num INT;
  4. SET num = 1;
  5. truncate table test;
  6. set autocommit=0;
  7. set unique_checks=0;
  8. WHILE num < 10 DO
  9. INSERT INTO
  10. `test`
  11. (
  12. `id`,
  13. `name`,
  14. `email`,
  15. `mobile`,
  16. `submission_date`
  17. )
  18. VALUES (
  19. num,
  20. concat(num,'tester'),
  21. concat(num,'tester@qq.com'),
  22. 15000000000 + num,
  23. now()
  24. );
  25. SET num = num + 1;
  26. END WHILE;
  27. set autocommit=1;
  28. set unique_checks=1;
  29. END$$
  30. delimiter; //执行结束
  31. call proc();//调用存储过程
  32. drop procedure proc;//删除存储过程
  33. TRUNCATE test;//删表