zoukankan      html  css  js  c++  java
  • mysql存储过程和函数的操作

    MySQL在5.0版本开始有存储过程功能;

    存储过程和函数是事先经过编译并存储在数据库中的一条SQL语句集合;

    存储过程和函数的区别:函数必须有返回值,存储过程则没有;

    1、1 创建存储过程语法形式

    delimiter $$

    create procedure procedure_name ([procedure_paramter,]) [characteristic...]

    routine_body

    $$

    delimter ;

    注:procedure_paramter为参数,可有可无,形式为: in/out/inout paramter_name type

    routine_body为sql语句,以begin...end标识sql语句开始和结束

    暂时以$$为语句结束分隔符

    1、2创建函数语法形式

    create function function_name ([function_paramter,]) [characteristic...]

    routine_body

    注:function_paramter的语法形式:paramter_name type

    使用存储过程的好处:简单、安全、高性能;缺点:可能没有创建存储过程的安全访问权限;

    1、执行存储过程

    存储过程的执行称为调用,语句为:call,格式为:call procedure_name (procedure_paramter,..);

    不带参数: call procedure_name(); 执行创建的存储过程并显示返回结果

                  不带参数的存储过程执行时,直接显示select语句结果

    带参数:

             创建带传出参数的存储过程:create procedure proc_name(out proc_parameter1 int,out proc_parameter2 int)

             执行存储过程:call proc_name (@proc_parameter1,@proc_parameter2); 传出变量必须以@开头 

                                 执行这条语句不显示任何数据,它返回指定的变量,运行结果为1 rows affected

                                select @proc_parameter1,@proc_parameter2;执行这条语句则显示返回结果

              call...和select...语句配套使用

    所以,执行存储过程时,既可以显示结果,也可以不显示。

    存储过程体select语句的结果保存到相应的变量,用into 关键字。

    例:delimiter $$

         create procedure proc_name(in emnpo int,out sum_sal int)

         begin

         select sum(sal) from table where table.emnpo=emnpo into sum_sal;

         end $$

         delimiter;

         

        call proc_name(3,@sum_sal);

        select @sum_sal;

    2、创建存储过程:同1.1

    3、删除存储过程:

    语句格式:drop procedure procedure_name;

    只给出存储过程名,不需要加()

    4、检查存储过程:

    show procedure status;

    此语句查询包括详细信息的全部存储过程列表

  • 相关阅读:
    修改Tarsphp节点线程数避免请求阻塞
    Docker删除所有容器
    清理mysql数据库binlog日志
    查看centos磁盘情况,查找大文件路径
    winform窗体的生命周期和事件加载顺序是什么?
    数据库自增ID用完了会怎么样?
    MPFIT for python
    Plplot中line width 问题
    剪切Postscript图片中的多余边框
    嵌入式下的深度学习 Sparkfun Edge with TensorFlow(一)Hello World
  • 原文地址:https://www.cnblogs.com/yaofang/p/5486055.html
Copyright © 2011-2022 走看看