怎样建设档案馆网站,360建筑网官方网站,淄博seo网络公司,wordpress中文名图片不显示场景
Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句#xff1a;
Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句-CSDN博客
上面讲了基本语法#xff0c;下面记录游标、自定义函数、存储过程的使用。 …场景
Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句
Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句-CSDN博客
上面讲了基本语法下面记录游标、自定义函数、存储过程的使用。
注
博客霸道流氓气质_C#,架构之路,SpringBoot-CSDN博客
实现
1、PL/pgSQL游标
PL/pgSQL 游标允许我们封装一个查询然后每次处理结果集中的一条记录。游标可以将大结果集拆分成许多小的记录
避免内存溢出另外我们可以定义一个返回游标引用的函数然后调用程序可以基于这个引用处理返回的结果集。
使用游标的步骤
1. 声明游标变量
2. 打开游标
3. 从游标中获取结果
4. 判断是否存在更多结果。如果存在执行第 3 步否则执行第 5 步
5. 关闭游标。
示例代码
DO $$
DECLARErec_user RECORD;cur_user CURSOR(user_name VARCHAR) FORSELECT id, nameFROM b_userWHERE name user_name;
BEGIN-- 打开游标OPEN cur_user(222);LOOP-- 获取游标中的记录FETCH cur_user INTO rec_user;-- 没有找到更多数据时退出循环EXIT WHEN NOT FOUND;RAISE NOTICE %,% , rec_user.id, rec_user.name;END LOOP;-- Close the cursorCLOSE cur_user;
END $$;
示例代码运行结果 首先声明了一个游标 cur_user并且绑定了一个查询语句通过一个参数user_name 获取指定姓名的用户
然后使用 OPEN 打开游标接着在循环中使用 FETCH 语句获取游标中的记录如果没有找到更多数据退出循环语句
变量 rec_user 用于存储游标中的记录最后使用 CLOSE语句关闭游标释放资源。
2、创建自定义PL/pgSQL函数
要创建一个自定义的 PL/pgSQL 函数可以使用 CREATE FUNCTION 语句。
CREATE 表示创建函数OR REPLACE 表示替换函数定义
name 是函数名括号内是参数多个参数使用逗号分隔argmode 可以是 IN输入、OUT输出、INOUT输入输出
或者 VARIADIC数量可变默认为 INargname 是参数名称argtype 是参数的类型default_expr是参数的默认值
rettype 是返回数据的类型AS 后面是函数的定义和上文中的匿名块相同最后LANGUAGE 指定函数实现的语言。
创建一个示例函数用于返回指定姓名的用户数量
CREATEOR REPLACE FUNCTION get_user_count (user_name VARCHAR ) RETURNS INTEGER AS $$ DECLAREln_count INTEGER;
BEGINSELECT COUNT(*) INTO ln_countFROMb_userWHEREname user_name;RETURN ln_count;END; $$ LANGUAGE plpgsql;
函数调用方式
SELECT name,get_user_count(name)
FROM b_user ;
调用结果 3、创建存储过程
存储过程使用 CREATE PROCEDURE 语句创建
存储过程的定义和函数主要的区别在于没有返回值其他内容都类似。以下示例创建了一个存储过程用于修改用户的信息
CREATEOR REPLACE PROCEDURE update_user (user_id in integer,user_name IN VARCHAR) AS $$ BEGINUPDATE b_userSET name user_nameWHEREid user_id;END; $$ LANGUAGE plpgsql;
存储过程调用方法
call update_user(1,badao);