调用Postgres函数
你可以将Postgres函数作为远程过程调用(Remote Procedure Calls)来调用,即你可以从任何地方执行数据库中的逻辑。 函数在逻辑很少更改时非常有用,比如用于密码重置和更新等情况。
下面是一个示例的 Postgres 函数定义:
1create or replace function hello_world() returns text as $$ 2 select 'Hello world'; 3$$ language sql;
这个函数叫做hello_world
,它不带参数,返回一个text
类型的结果。函数的逻辑很简单,就是返回字符串"Hello world"
。
你可以从任何地方调用这个函数,并获得结果"Hello world"
。
案例教程
案例1 (调用一个没有参数的Postgres函数)#
1create function hello_world() returns text as $$ 2 select 'Hello world'; 3$$ language sql;
案例2 (调用一个带参数的Postgres函数)#
1create function echo(say text) returns text as $$ 2 select say; 3$$ language sql;
案例3 (批量处理)#
1create function add_one_each(arr int[]) returns int[] as $$
2 select array_agg(n + 1) from unnest(arr) as n;
3$$ language sql;
案例4 (调用带有过滤器的Postgres函数)#
1create table
2 countries (id int8 primary key, name text);
3
4insert into
5 countries (id, name)
6values
7 (1, 'France'),
8 (2, 'United Kingdom');
9
10create function list_stored_countries() returns setof countries as $$
11 select * from countries;
12$$ language sql;
参数说明
fn[必要参数]
FunctionName类型
要调用的函数名称
args[必要参数]
object类型
传递给函数调用的参数
选项(option)[必要参数]
object类型
命名的参数
count[可选参数]
|exact
|planned
estimated
用来计算更新行的计数算法。函数返回的行数。只适用于返回集合的函数。
exact:可以精确计算行数,但执行速度较慢。执行 "COUNT(*)"操作。
planned:可以快速计算行数,但是结果可能略有偏差。使用了Postgres的统计数据。
estimated:对于较小的数值使用精确计数,对于较大的数值使用计划计数。根据行数的大小决定使用精确计数或计划计数的算法。
head[可选参数]
boolean类型
当设置为 "true "时,"data "将不被返回。 如果你只需要计数,则很有用。
特性