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
- 添加 (提交 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 文档: 系统目录信息函数