to_regprocedure() 是一个系统函数,用于将过程或函数名转换为其 OID。
to_regprocedure() 添加于 PostgreSQL 9.4。
用法
to_regprocedure (text) →regprocedure
to_regprocedure() 等同于使用 regprocedure 强制类型转换,但如果找不到匹配的过程或函数,它会返回 NULL 而不是引发 ERROR 。
在评估提供过程或函数名时会考虑当前搜索路径。
请注意, to_regprocedure() 需要指定过程或函数名的完整参数列表。 请参阅 to_regproc() 了解一个接受仅过程或函数名的等效函数。
变更历史
- PostgreSQL 16
- PostgreSQL 9.4
- 添加 (commit dfc0219f)
示例
的基本用法示例to_regprocedure()
postgres=# SELECT to_regprocedure('to_regprocedure(text)')::oid;
to_regprocedure
-----------------
3479
(1 row)
区分同名但签名不同的函数
postgres=# CREATE FUNCTION foo()
RETURNS INT
LANGUAGE SQL
AS $$
SELECT 1;
$$;
CREATE FUNCTION
postgres=# CREATE FUNCTION foo(integer)
RETURNS INT
LANGUAGE SQL
AS $$
SELECT 1 + $1;
$$;
CREATE FUNCTION
postgres=# SELECT to_regprocedure('foo()')::oid;
to_regprocedure
-----------------
16394
(1 row)
postgres=# SELECT to_regprocedure('foo(integer)')::oid;
to_regprocedure
-----------------
16395
(1 row)
即使存在没有参数的匹配过程或函数,提供的名称后面也必须跟一对括号。
postgres=# SELECT to_regprocedure('foo');
ERROR: expected a left parenthesis
to_regproc() 接受不带任何参数的过程和函数名,但如果找到多个同名函数,则不会返回结果。
参考资料
- PostgreSQL 文档: 系统目录信息函数
