zoukankan      html  css  js  c++  java
  • MySQL函数与存储过程

    一、函数,参考博客:https://www.cnblogs.com/progor/p/8871480.html

    /*
    函数:函数只会返回一个值,不允许返回一个结果集。函数强调返回值,所以不允许返回多个值的情况,即使是查询语句。多个入参之间使用逗号分隔。
    注意事项:在函数中,如果查询的表中字段与参数名相同,需要给字段名前面加上别名,不然在识别的时候有问题,程序不会报错,但查询结果有问题。
    */
    drop function if exists myf;
    create function myf(region_code varchar(10)) returns int
    begin 
        declare c int; -- 定义变量,需要将查询结果赋值给变量select xxx into c;
        select pm10 from data_region_month t where t.region_code = region_code limit 1 into c;
        return c;
    end;
    select myf('411025');
    select myf(region_code) from data_region_month;

    二、存储过程,参考博客:https://www.cnblogs.com/chushiyaoyue/p/5945974.html

    /*
    存储过程:共有三种参数类型,IN,OUT,INOUT
        IN 输入参数:  表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值。
        OUT 输出参数:  该值可在存储过程内部被改变,并可返回,是里面赋值才有数据。
        INOUT 输入输出参数:  调用时指定,并且可被改变和返回。
    在存储过程中,有可能会有多个结果产生,说明存储过程不是函数,如果是参数类型为out的这种,需要显示out结果的话,需要在存储过程执行完成后,select out_paramName来显示结果;
    比如在存储过程中有多个select 查询语句,就会有多个结果集在存储过程执行后产生;
    */
    -- 结束符修改,测试了一下,不用修改结束符也可以识别
    delimiter //
    drop procedure if exists proc1 //
    create procedure proc1(out s int)
    begin 
        select count(*) into s from data_region_month;
        select distinct point_code,point_name from data_point_month;
        select * from data_region_month;
    end // 
    -- 改回默认结束符,测试了一下,不用修改结束符也可以识别,如果不修改的话,在上面一句的结束用分号结束
    delimiter ;
    
    set @p_out=0;
    set @p_out=1;
    call proc1(@p_out);
    select @p_out;
    
    -- 如果需要在存储过程中使用游标,可以参考:https://blog.csdn.net/zhaofuqiangmycomm/article/details/88651446
  • 相关阅读:
    东方国信 - 软件开发人员面试问卷(ver1.001.002)
    Traceback (most recent call last): File "setup.py", line 22, in <module> execfile(join(CURDIR, 'src', 'SSHLibrary', 'version.py')) NameError: name 'execfile' is not defined
    python学习笔记一
    A strange lift
    A strange lift
    Tempter of the Bone
    Tempter of the Bone
    Rescue
    Rescue
    Red and Black
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/11433310.html
Copyright © 2011-2022 走看看