to_regproc() 是一个系统函数,用于将过程或函数名转换为其 OID。
to_regproc() 在 PostgreSQL 9.4 中添加。
用法
to_regproc (text) →regproc
to_regproc() 等同于使用 regproc 转换,但如果找不到匹配的过程或函数,则返回 NULL 而不是引发 ERROR。
在评估提供的过程或函数名称时会考虑当前搜索路径。
请注意,to_regproc() 仅作用于过程或函数名称。如果存在同名但签名不同的函数,则返回 NULL。有关考虑相应过程或函数参数的等效函数,请参阅 to_regprocedure()。
变更历史
- PostgreSQL 16
- PostgreSQL 9.4
- 已添加(提交 0886fc6a)
示例
to_regproc() 的基本用法示例
postgres=# SELECT to_regproc('to_regproc')::oid;
to_regproc
------------
3494
(1 row)
如果一个函数是“重载的”,即存在多个同名但参数形式不同的函数版本,则返回 NULL。
postgres=# CREATE FUNCTION foo() RETURNS INT LANGUAGE SQL AS $$ SELECT 1; $$; CREATE FUNCTION postgres=# SELECT to_regproc('foo')::oid; to_regproc ------------ 17536 (1 row) postgres=# CREATE FUNCTION foo(integer) RETURNS INT LANGUAGE SQL AS $$ SELECT 1 + $1; $$; CREATE FUNCTION postgres=# SELECT to_regproc('foo')::oid; to_regproc ------------ (1 row)
参考资料
- PostgreSQL 文档: 系统目录信息函数
