PGSQL 循环语句怎么写
方法1
满足条件就不在循环
DO $$
DECLARE
i Integer;
BEGIN
i := 1;
WHILE i < 10 LOOP
RAISE NOTICE 'Current value: %', i;
i := i + 1;
END LOOP;
END;
$$;这段PL/pgSQL代码实现了一个简单的循环操作,主要逻辑是: 1. 声明一个整数变量i。 2. 设置while循环,条件是i小于10。 3. 每次循环中,打印当前的i的值。 4. 每次循环结束,i加1。 5. 当i不再小于10时,while循环结束。
具体执行流程是: 1. i初始化为1。 2. 进入while循环,打印i=1。 3. i加1,现在i=2。 4. 打印i=2。 ... 9. 打印i=9。 10. i加1,现在i=10。 11. i不再小于10,while循环结束。
方法2
满足条件就退出循环
DO $$
DECLARE
i Integer;
j Integer;
BEGIN
i := 1;
LOOP
j := 1;
LOOP
RAISE NOTICE 'Current values: i = %, j = %', i, j;
j := j + 1;
IF j > 5 THEN
EXIT;
END IF;
END LOOP;
i := i + 1;
IF i > 3 THEN
Exit;
END IF;
END LOOP;
END;
$$;这段PL/pgSQL代码实现了嵌套循环(nested loop),主要逻辑是: 1. 定义两个整数变量i和j。 2. 设置外层循环,i从1开始,每次循环结束i加1,当i大于3时退出循环。 3. 设置内层循环,j从1开始,每次循环结束j加1,当j大于5时退出内层循环。 4. 在内层循环中,使用RAISE NOTICE打印当前i和j的值。 5. 内层循环结束后,外层循环继续,i加1。 6. 直到外层循环中i大于3,退出整个循环。 因此,这段代码会打印出: i=1, j=1 i=1, j=2 ... i=1, j=5 i=2, j=1 ... i=3, j=5 总共3次外层循环,每次内层循环5次。
在PL/pgSQL中可以声明使用以下几种变量类型:
1. 基本类型 - integer - real - numeric - boolean - char、varchar 2. 复合类型 - record - rowtype 3. 引用类型 - refcursor 4. 自定义类型 可以通过创建自定义的复合类型、枚举类型、范围类型等,并在PL/pgSQL块中声明使用。 例如: ```sql CREATE TYPE status AS ENUM ('new', 'open', 'closed'); DECLARE user_status status; ``` 5. 特殊变量 - FOUND - NOTFOUND - NULL FOUND和NOTFOUND表示记录是否找到。NULL表示空值。 另外,在函数中还可以通过参数声明变量。
读者评论
评论会同步写入该文在 Notion 中的页面底部(与正文同页,便于管理)。
暂无评论,欢迎抢沙发。