to_regprocedure()

将过程/函数名转换为 OID 的函数

to_regprocedure() 是一个系统函数,用于将过程或函数名转换为其 OID

to_regprocedure() 添加于 PostgreSQL 9.4

用法

to_regprocedure ( text ) → regprocedure

to_regprocedure() 等同于使用 regprocedure 强制类型转换,但如果找不到匹配的过程或函数,它会返回 NULL 而不是引发 ERROR 。

在评估提供过程或函数名时会考虑当前搜索路径。

请注意, to_regprocedure() 需要指定过程或函数名的完整参数列表。  请参阅 to_regproc() 了解一个接受仅过程或函数名的等效函数。

变更历史

示例

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() 接受不带任何参数的过程和函数名,但如果找到多个同名函数,则不会返回结果。

分类

系统函数

另请参阅

to_regproc()

反馈

提交关于“to_regprocedure()”的任何评论、建议或更正,请在此处 提交