zoukankan      html  css  js  c++  java
  • mysql 创建存储过程及函数

    ------------恢复内容开始------------

    1. 存储过程

    1.1. 基本语法

    create procedure name ([params])

    UNSIGNED [characteristics] routine_body

     params : in|out|inout 指定参数列表 代表输入与输出

    routine_body: SQL代码内容,以begin ........   end

    characteristics: 指定存储过程特性,包含5种

                               1 DETERMINISTIC 不确定的
                               2 NO SQL 没有SQl语句,当然也不会修改数据
                               3 READS SQL DATA 只是读取数据,当然也不会修改数据
                               4 MODIFIES SQL DATA 要修改数据
                               5 CONTAINS SQL 包含了SQL语句

    1.2 创建一个指定执行权限的存储过程

    create DEFINER=`root`@`%` procedure name ([params])

    UNSIGNED [characteristics] routine_body

    DEFINER:指明谁有权力来执行。

    1.3 DELIMITER 的使用

          ”DELIMITER //“ 表示设置“//”符号为结束语,因为mysql中默认语句结束为分号‘;’,为了避免存储过程与mysql语句符号冲突,所以有时使用DELIMITER来改变结束语符号,要配合end //来使用;

     示例:创建一个root账户执行的存储过程,输出给定字符串的长度


    DELIMITER //
    CREATE definer=`root`@`%` PROCEDURE `avgFruitPrice`(
    in f_string VARCHAR(200)
    )
    BEGIN
        select length(f_string);
    END//

    2. 创建函数 

    函数的创建与存储过程相同

    示例

    DELIMITER //
    CREATE definer=`root`@`%` FUNCTION `my_length`(
    f_string VARCHAR(200)
    )
    RETURNS INT(11)
    UNSIGNED  NO SQL
    BEGIN
        return length(f_string);
    END//

    注意: 创建函数需要注意3个地方,

    1.  RETURNS: 需指定返回类型

    2. UNSIGNED  NO SQL 需指定存储过程特性

    3.return: 返回需要的数据

    遇见的错误:

    如报错如上信息就是没有指定存储过程特性。

    存储过程函数中可以通过mysql查询结果为其参数复制: 其语句为select .... into

    begin

    declare onename char(50) default‘0’;

    declare twoname char(50);

    select f_name, b_name into onename, twoname from t_user where id =1;

    .......

    end//

    说明:

    declare: 存储过程及函数内部定义变量

    default:默认值
    ————————————————
    版权声明:本文为CSDN博主「乔巴14」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_32331997/article/details/105603998

    ------------恢复内容结束------------

  • 相关阅读:
    Tiling_easy version
    Children’s Queue
    hdu 彼岸
    最小公倍数和最大公约数问题
    hdu 神、上帝以及老天爷
    统计问题
    不容易系列之(3)—— LELE的RPG难题
    hdu 折线分割平面
    hdu Counting Triangles
    Queuing
  • 原文地址:https://www.cnblogs.com/purple5252/p/14553448.html
Copyright © 2011-2022 走看看