mysql function cursor_MySQL:procedure, function, cursor,handler

本文详细介绍了MySQL中的存储过程和函数的创建语法,包括参数定义、特性设置和执行体。同时,提到了在使用游标时的注意事项,如声明位置和变量命名规则。还介绍了异常处理handler的声明以及何时使用。最后,提供了调试存储过程的工具和示例,帮助开发者更好地理解和调试MySQL中的自定义函数和过程。
摘要由CSDN通过智能技术生成

Procedure & Function

Procedure 语法:

CREATE

[DEFINER = { user | CURRENT_USER }]

PROCEDURE sp_name ([proc_parameter[,...]])[characteristic ...]routine_body

proc_parameter:[IN | OUT | INOUT]param_name type

type:Anyvalid MySQL data type

characteristic:

COMMENT'string'

|LANGUAGE SQL| [NOT]DETERMINISTIC| { CONTAINS SQL | NO SQL | READS SQL DATA |MODIFIES SQL DATA }| SQL SECURITY { DEFINER |INVOKER }beginValid SQL routine statementend;

Function 语法:

CREATE

[DEFINER = { user | CURRENT_USER }]

FUNCTION sp_name ([func_parameter[,...]])RETURNStype[characteristic ...]routine_body

func_parameter:

param_name type

type:Anyvalid MySQL data type

characteristic:

COMMENT'string'

|LANGUAGE SQL| [NOT]DETERMINISTIC| { CONTAINS SQL | NO SQL | READS SQL DATA |MODIFIES SQL DATA }| SQL SECURITY { DEFINER |INVOKER }beginValid SQL routine statementend;

官网关于 procedure, function相关文档:

FAQ:http://dev.mysql.com/doc/refman/5.6/en/faqs-stored-procs.html

语法说明:http://dev.mysql.com/doc/refman/5.6/en/create-procedure.html

Cursor

Cursor官方文档:http://dev.mysql.com/doc/refman/5.6/en/cursors.html

在遍历时,mysql中的3种循环方式(loop, while, repeat)都可以使用。官方文档中给了 loop 方式的deamo。

在使用cursor时要注意:

1)declare cursor之前不能有任何的除了declare以外的操作,也就是之前只能有变量声明。

2)declar cursor 之后不能有任何变量的声明,可以声明异常处理 handler。

3)cursor 只能在procedure, function中。

4)fetch into var1, var2。这里的var名不能与 declare cursor时select 中的列名一样。如果一样会fetch 到NULL。例如下面deamon中的 metric ==> m 。

b0d672dde364d09e0de9bcc5b12fb24a.png

其它的deamon:http://www.mysqltutorial.org/mysql-cursor/

Handler

在什么样的条件下,做什么样的处理。例如当发生异常时,该怎么做。

相关文档:http://dev.mysql.com/doc/refman/5.6/en/declare-handler.html

在下面的deamon中就有declare continue handler NOT FOUND 、declare continue handler SQLSTATE 等。

Demo

2df316a5ec5a7fb8806e9a156d70f8d8.png

d28ba52d3651578648b371e0c51a8efc.png

Debugger Tool

http://mydebugger.com/quick_start.php

2aece556e331240f414296f37504679c.png

上面 的两个procedure,在使用debugger调试时,只需要在main中写直接调用 就可以了。

9effeda53f51fa83478c680befa37e1d.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值