• PostgreSQL for in loop


    模板是

    FOR var IN REVERSE 1..10 LOOP
        statement_list
    END LOOP;

    REVERSE 不知道什么意思……

    一般用的是

    FOR var IN 1..10 LOOP statement_list END LOOP;

    如果是navicate for+tab出来的模板,需要自己手动定义值,不然是不生效的。

    var是一个变量,它刚开始的时候是等于1..10中的1,可以对var进行数学计算,但是不管var在中途改变为什么值,这个循环还是从1开始循环到10执行10次的。statement_list中是自己的逻辑操作,每一个sql用一个;隔开。

    中途可以打印var的值,用

    raise notice 'var的值:%', var;

    完整的一个示例:

    -- 如果存在该存储过程就删除
    drop function if exists function_test3();
    -- replace之前先调用了drop是因为如果返回值不同是不能直接替换的
    create or replace function function_test3() returns void as
    -- 标记开始和起始位置,用$$和$$也可以,主要是查询存储过程的结果是用的$BODY$
    $BODY$
    --     这里可以先定义一些变量
        BEGIN
            FOR var_a IN  1..10 LOOP
        raise notice '变量var_a的值是:%', var_a;
    END LOOP;
        END
    $BODY$
    LANGUAGE plpgsql; 
    
    -- 调用存储过程
    select function_test3();
    select function_test3()
    > 注意:  变量var_a的值是:1
    > 注意:  变量var_a的值是:2
    > 注意:  变量var_a的值是:3
    > 注意:  变量var_a的值是:4
    > 注意:  变量var_a的值是:5
    > 注意:  变量var_a的值是:6
    > 注意:  变量var_a的值是:7
    > 注意:  变量var_a的值是:8
    > 注意:  变量var_a的值是:9
    > 注意:  变量var_a的值是:10
    > OK
    > 时间: 0.001s
  • 相关阅读:
    深入浅出Vue.js(四) 整体流程
    深入浅出Vue.js(三) 模板编译
    实现strStr()--indexOf()方法
    Z字形变换
    最长回文子串
    删除数组中不符合条件的值
    整数反转
    寻找两个正序数组的中位数
    gorm 关系一对一,一对多,多对多查询
    gorm 如何对字段进行comment注释?
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/13780871.html
Copyright © 2020-2023  润新知