zoukankan      html  css  js  c++  java
  • mysql存储过程

    定义

    为了完成特定功能的 sql语句集。经编译创建并保存在数据库的数据字典中。

    特点

    • 没有返回值
    • 没有sql语句调用,只能call调用
    • 不返回结果集

    语法

    声明语句结束符,可自定义

    DELIMITER // or
    DELIMITER $$

    创建存储过程,存储函数

    create procedure 存储过程名(参数)

    创建存储过程体

    create function 存储过程名(参数)

    存储过程开始和结束

    BEGIN....END

    • 参数
      参数类型: IN,OUT,INOUT
      IN 输入参数: 调用时指定,存储过程修改该值不能返回
      OUT 输出参数: 不接收传入值,可在存储过程被改变并可返回
      INOUT 输入输出参数: 调用时指定,可改变可返回

    注意: 参数名不能是列名,否则会被当成列名处理

    声明变量

    局部变量需要放在存储过程体的开始;
    DECLARE variable_name datatype [DEFAULT value]
    变量作用域: 仅存在begin...end这段内。

    变量赋值

    SET 变量名 = 表达式值

    注释

    用户变量

    使用set 或 select 直接赋值,变量名以@开头
    变量作用域: 整个会话,全局变量。
    set @p_01 = 1
    select name,bid into @a1,@a2 from bank limit 1; 变量名和字段名不能一致。

    调用存储过程

    call 存储过程名[(传参)]

    查询存储过程

    select name from mysql.proc where db='数据库名'
    
    or
    
    select routine_name from information_schema where routine_schema='数据库名'
    
    or
    show procedure status where db='数据库名'
    
    

    修改存储过程

    alter procedure

    删除存储过程

    drop procedure

    栗子

    mysql> delimiter $$
    mysql> create procedure inout_param(inout p_inout int)
        ->   begin
        ->     select p_inout;
        ->     set p_inout=2;
        ->     select p_inout;
        ->   end
        -> $$
    mysql> delimiter ;
    

    参考:
    mysql 存储过程|菜鸟教程
    mysql 存储过程之变量的定义

  • 相关阅读:
    WinCE 测试网速
    YII 关联表查询
    YII CMenu配置
    php扩展开发笔记1
    使用Mysql EXPLAIN分析、优化SQL语句
    使用Mysql EXPLAIN分析、优化SQL语句 (续)
    jquery提交中文导致乱码
    *nix 命令记(持续更新)
    php 函数中使用static
    xmlhttprequest获取TransferEncoding:chunked分时编码输出
  • 原文地址:https://www.cnblogs.com/Tester_Dolores/p/14435649.html
Copyright © 2011-2022 走看看