IT技术博客大学习 共学习 共进步

Mysql中的存储过程

Incessant 2009-10-11 22:36:09 浏览 2,961 次

    Mysql 5.0 推出来的一个功能,在我看来和oracle差不多的,语法上稍微有一点点不同,下面写了一个例子模板,大家用到时可以很容易套用。

    mysql> delimiter // --语句结束符更改为//

    --定义存储过程

    mysql>create procedure ptest(out return_val int)

    begin

    declare a1 ,b1 int default 5; --定义变量

    declare cur1 cursor for select a from test; --定义游标

    declare exit handler for not found begin insert into test_error(msg) values(\'ptest not found\'); set b1=1 ;end; --定义异常处理(not found)

    declare exit handler for sqlexception set b1=1;--定义异常捕获及处理(sqlexception 表示sql执行异常时)

    open cur1; --打开游标

    repeat

    fetch cur1 into a1;

    until b1=1 --出现任何异常,程序退出

    end repeat;

    close cur1;

    set return_val=a1; --变量赋值

    end;

    //

    mysql> delimiter ; --语句结束符更改回;

    --如何调用存储过程:

    mysql>call ptest(@va);

    注:

    1.创建存储子程序需要CREATE ROUTINE权限

    2.查询存储过程的定义SHOW CREATE PROCEDURE ptest\\G

    3.查询存储过程的状态SHOW CREATE PROCEDURE STATUS LIKE \'ptest\'\\G

    参考:

    http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html

建议继续学习

  1. 写了个Mysql的存储过程 (阅读 3,081)
  2. php_call_oracle_procedure (阅读 2,540)