Postgresql自定义函数—表名作为函数参数

  • 函数传递表名和另外一个参数示例

CREATE OR REPLACE FUNCTION some_f(_tbl text, col text, OUT result bool)

LANGUAGE plpgsql AS

func

BEGIN

EXECUTE format('SELECT (EXISTS (SELECT FROM %s WHERE b = $1))', _tbl,col) using col INTO result;

END

func;

函数调用:

test=# select some_f('test','test'); --这里只传递了2个参数

some_f


t

(1 row)

使用using子句给format函数传递参数($1),这里是数字'壹'。%s的含义,见第四部分说明

  • 表名作为参数,返回表中记录数

CREATE OR REPLACE FUNCTION get_table_info(tablenames text)

RETURNS int AS $$

DECLARE

rowcount int;

BEGIN

EXECUTE format('SELECT count(*) FROM %I', tablenames) INTO rowcount;

return rowcount;

END

LANGUAGE plpgsql; 函数调用: test=# select get_table_info('test'); get_table_info ---------------- 2 (1 row) * 表名作为参数,返回表中记录值 CREATE OR REPLACE FUNCTION get_table_info(tablenames text) RETURNS table(a int,b varchar) AS

DECLARE

rowcount int;

BEGIN

return query EXECUTE format('SELECT * FROM %I', tablenames);

END

LANGUAGE plpgsql; 函数调用: test=# select get_table_info('test'); get_table_info ---------------- (10,test) (1,testtest) 这种调用方式,返回表的数据,作为元组形式 或者 test=# select \* from get_table_info('test'); a \| b ----+---------- 10 \| test 1 \| testtest (2 rows) 这种调用方式,返回表的数据同正常查询结果的返回 * 几个注意问题 1. Out参数,在调用时,不需要在调用时传递 2. 当需要返回table类型时,可以使用return query或者return next 3. Format函数参数的说明: %I is equivalent to quote_ident, and %L is equivalent to quote_nullable. The format function can be used in conjunction with the USING clause: EXECUTE format('UPDATE tbl SET %I = $1 WHERE key = $2', colname) USING newvalue, keyvalue;

相关推荐
心平愈三千疾1 小时前
通俗理解JVM细节-面试篇
java·jvm·数据库·面试
我科绝伦(Huanhuan Zhou)9 天前
Oracle|Oracle SQL*Plus 配置上下翻页功能
数据库·sql·oracle
Cachel wood9 天前
Spark教程6:Spark 底层执行原理详解
大数据·数据库·分布式·计算机网络·spark
java—大象9 天前
基于java SSM的房屋租赁系统设计和实现
java·开发语言·数据库·spring boot·layui·mybatis
Mutig_s9 天前
Spring Boot动态数据源切换:优雅实现多数据源管理
java·数据库·spring boot·后端·mybatis
Python小老六9 天前
单片机测ntc热敏电阻的几种方法(软件)
数据库·单片机·嵌入式硬件
矿渣渣9 天前
SQLite3 在嵌入式系统中的应用指南
数据库·sqlite·嵌入式实时数据库
@昵称不存在9 天前
Python csv 模块
开发语言·数据库·python
程序猿小D9 天前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+Vue实现的校园二手交易平台管理系统,推荐!
java·数据库·mysql·spring·vue·毕业设计·校园二手交易平台
DoWeixin69 天前
【请关注】hBase要用的顺畅的思路
数据库