Mysql存储过程和函数

1.存储过程和函数的区别在于函数必须有返回值,而存储过程没有,存储过程的参数可以使用IN、OUT、INOUT类型,而函数的参数只能是IN类型。

2.创建存储过程或者函数需要CREATE ROUTINE权限,修改或者删除存储过程或者函数需要ALTER ROUTINE权限,执行存储过程或者函数需要EXECUTE权限。

3.创建存储过程的语法为:

  CREATE PROCEDURE sp_name([proc_parameter, ...])

    [characteristic ...] routine_body

  proc_parameter:

    [IN | OUT | INOUT] param_name type

  characteristic:

    LANGUAGE SQL | [NOT] DETERMINISTIC | {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFY SQL DATA} | SQL SECURITY {DEFINER | INVOKER} | COMMENT 'string'

  type:

    Any valid MySQL data type

  routine_body:

    Valid SQL procedure statement or statements

4.创建存储函数的语法为:

  CREATE FUNCTION sp_name([func_parameter, ...])

    RETURNS type

    [characteristic ...] routine_body

  func_parameter:

    param_name type

  characteristic:

    LANGUAGE SQL | [NOT] DETERMINISTIC | {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFY SQL DATA} | SQL SECURITY {DEFINER | INVOKER} | COMMENT 'string'

  type:

    Any valid MySQL data type

  routine_body:

    Valid SQL procedure statement or statements

5.修改存储过程或函数的语法为:

  ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...]

  characteristic:

    {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFY SQL DATA} | SQL SECURITY {DEFINER | INVOKER} | COMMENT 'string'

6.调用过程的语法为:

  CALL sp_name([parameter, ...])

7.MySQL的存储过程和函数中允许包含DDL语句,也允许在存储过程中执行提交(Commit)或者回滚(Rollback),但是存储过程和函数中不允许执行LOAD DATA INFILE语句。此外,存储过程和函数中可以调用其他的过程或者函数。

8.示例:

  CREATE PROCEDURE film_in_stock(IN p_film_id INT, IN p_store_id INT, OUT p_film_count INT)

  READS SQL DATA

  BEGIN

    SELECT inventory_id

    FROM inventory

    WHERE film_id = p_film_id

    AND store_id = p_store_id

    AND inventory_in_stock(inventory_id);

 

    SELECT FOUND_ROWS() INTO p_film_count;

  END

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值