PostgreSQL中VARIADIC函数如何使用
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,今天就跟大家聊聊有关PostgreSQL中VARIADIC函数如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、示例CREATE OR
千家信息网最后更新 2025年02月02日PostgreSQL中VARIADIC函数如何使用
今天就跟大家聊聊有关PostgreSQL中VARIADIC函数如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
1、示例
CREATE OR REPLACE FUNCTION test_v(p1 int, VARIADIC p2 any[])RETURNS void AS$test_v$BEGINNULL;END;$test_v$LANGUAGE plpgsql;
这里,VARIADIC参数必须是数组,而数组
2、使用
调用方式1
SELECT test_v(1,2,3);
调用方式2
SELECT test_v(1,VARIADIC '{2,3,4}'::int[]);
第一种方式其实在语义层会转换成第二种方式,这些逻辑在函数 ParseFuncOrColumn
中,有兴趣可以自行查看。
3、第二种调用方式的语法
| func_name '(' VARIADIC func_arg_expr opt_sort_clause ')' { FuncCall *n = makeFuncCall($1, list_make1($4), @1); n->func_variadic = true; n->agg_order = $5; $$ = (Node *)n; } | func_name '(' func_arg_list ',' VARIADIC func_arg_expr opt_sort_clause ')' { FuncCall *n = makeFuncCall($1, lappend($3, $6), @1); n->func_variadic = true; n->agg_order = $7; $$ = (Node *)n; }
只是指定这是VARIADIC函数调用,参数并没有特别处理。
4、实际参数列表
在语法层,第一张调用方式有三个常量参数:整型 整型 整型,而第二种则是两个参数:整型 整型数组。第一种调用方式在上边说的 ParseFuncOrColumn
函数中,后两者合并为一个参数:数组表达式(ArrayExpr)。
5、不能多种参数类型混合
我们可以实现 func(int, int, int ...)
,但无法实现 func(int, text, int, text ...)
,数组不允许这么做,在语义层就会报错无法继续。
当然,这个限制并不会影响我们使用PG,并不会因为它函数就没法定义。主要的影响是迁移,比如Oracle应用会用到decode这样的函数,在现有机制下,并没有比较完美的方案去实现。
6、PL/pgSQL
文档中似乎没有提到PL/pgSQL对VARIADIC参数的支持(也许有,没仔细看),但它是可以处理的。而且从上边看,VARIADIC参数最后传递的是一个数组而已,不是什么特别的东西。
回归测试中的示例:
-- test variadic functionscreate or replace function vari(variadic int[])returns void as $$begin for i in array_lower($1,1)..array_upper($1,1) loop raise notice '%', $1[i]; end loop; end;$$ language plpgsql;
看完上述内容,你们对PostgreSQL中VARIADIC函数如何使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
参数
函数
方式
数组
内容
上边
示例
语义
语法
影响
支持
三个
东西
两个
兴趣
只是
多种
实际
常量
文档
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全知识主持人开场白
电脑软件开发主流环境
大话西游2服务器验证超时
平谷区智能化网络技术服务系统
成都网络安全治理
ef 批量更新数据库
崇明区品牌软件开发诚信合作
日本服务器挂机
服务器上运行wrf
边锋网络技术有限公司好吗
中控考勤机怎样建2个数据库
小破孩儿网络安全照片
本地数据库锁定怎么解除
奉贤区游戏软件开发培训
数据库对象安全
独立服务器有什么坏处
熟悉网络技术知识
对峙2为什么老是无法连接服务器
产品经理软件开发工资
软件开发岗位调研心得
tp框架数据库查找语句
数据库主键定义是什么意思
国内主要的会议文献数据库有
软件开发中高级面试准备
ccna网络技术指南
国产数据库软件支持gis
网络安全管理师难吗
云服务器管理运维课程
浏览器调用服务器上的cs工具
游龙互联网络科技有限公司