postgresql 存储函数调用变量的3种方法小结
一、假设有表student,字段分别有id,remark,name等字段。
二、写一个存储函数,根据传过去的变量ID更新remark的内容。
调用该存储函数格式如下:
select update_student(1);
三、存储函数示例如下:
CREATE OR REPLACE FUNCTION public.update_student(id integer) RETURNS text AS $BODY$ declare sql_str_run text; BEGIN /* --method 1 select 'update student set remark ='''|| now() ||''' where student.id = '|| $1 into sql_str_run ; execute sql_str_run; --method 2 execute 'update student set remark =now() where student.id=$1' using $1; */ --method 3 update student set remark =now() where student.id=$1; return 'update is ok' ; end $BODY$ LANGUAGE plpgsql VOLATILE
以上三种方法都可以实现同样的效果,实际应用中,可以结合场景来使用。比较简单的情况下直接用method 3。
比如,表名、字段名本身是变量,那么method 3 就无法实现,需要根据method 1或method 2来实现。
method 1或method 2 有什么区别呢?
如果需要拼的变量可以直接获取的,则用method2即可。如果变量本身也是需要需要通过函数或语句的计算来获得,一般建议用method 1,先拼成一个字符串,再调用execute来实现。
补充:postgresql存储函数/存储过程用sql语句来给变量赋值
--定义变量
a numeric;
方式一:
select sqla into a from table1 where b = '1' ; --这是sql语句赋值
方式二:
sql1:= 'select a from table1 where b = ' '1' ' '; execute sql1 into a; --这是执行存储函数赋值
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
相关文章
PostgreSQL字符切割:substring函数的用法说明
这篇文章主要介绍了PostgreSQL字符切割:substring函数的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-02-02
基于PostgreSQL的时序数据库TimescaleDB的基本用法和概念
时序数据是指按照时间顺序存储的数据,TimescaleDB是一个开源的、扩展了PostgreSQL的时序数据库扩展,本文就给大家详细的介绍一下基于PostgreSQL的时序数据库TimescaleDB的基本用法和概念,需要的朋友可以参考下2023-06-06
postgresql查询每个月的最后一天日期并对未查到的日期结果补0(操作示例)
这篇文章主要介绍了postgresql查询每个月的最后一天日期,并对未查到的日期结果补0,pgsql需要使用函数使用date_trunc()函数找到指定月第一天,然后对该日期先加一个月在减一个月就能得到你传给的日期的最后一天日期,感兴趣的朋友跟随小编一起看看吧2023-10-10
DBeaver中PostgreSQL数据库显示不全的解决方法
最近,在DBeaver中连接了本地的PostgreSQL数据库,但是连接后打开这个数据库时发现,数据库显示不全,所以本文给大家介绍了DBeaver中PostgreSQL数据库显示不全的解决方法,需要的朋友可以参考下2024-11-11


最新评论