sql - 作为 Postgres 中另一个函数的参数的函数

标签 sql c database postgresql plpgsql

我可以通过 C 语言函数 API 或使用接受回调函数作为参数的 pl/pgsql 在 Postgres 中创建用户定义的函数吗?

据我所知,无法通过 C 语言 API 执行此操作,因为它只接受 sql 数据类型,并且function 没有数据类型。但也许我遗漏了什么?

最佳答案

由于每个函数/过程都必须在 pg_proc 中有一个条目,您可以使用主键来识别过程。这也将消除具有相同名称但参数数量不同或参数类型不同的过程的问题。

它的简写形式是 regprocregprocedure 类型以及关联的转换以便于处理。查找 manual对于这些。

识别函数并传递它是没有问题的:

select 'pg_database_size(oid)'::regprocedure; -- create "reference"
     regprocedure      
-----------------------
 pg_database_size(oid)

使用regprocedure作为参数类型。

我还没有弄清楚的问题是如何以方便的方式实际调用这样的东西。

关于sql - 作为 Postgres 中另一个函数的参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346065/

相关文章:

sql - 为 Postgresql 创建过程或查询,其中每次都取决于前一次

c - GTK+3 多线程

database - 数据库架构组织

c - 如何在c中获取bmp图像的像素数据

database - 你知道用 Perl 编写的带有 DBI 接口(interface)的数据库吗?

database - ORACLE 数据库 |删除缺少数据文件的表空间

sql - 在 SQL 中返回包含 IN 子句中所有值的记录

sql - 从数据集 SQL 创建趋势线

mysql - SQL 选择查询帮助。连续四行的最大总和。

c - 在我的程序中使用 OpenBSD 的 malloc、realloc 和 free