{"Entry":{"collection":"catalog","key":"pg_proc","name":"pg_proc","aliases":[],"metadata":{"changed_in":["8.0","8.1","8.3","8.4","9.0","9.1","9.2","9.5","9.6","11","12","14"],"changes":[{"added":["proargnames"],"attributes":[],"description_changed":true,"descriptions":[{"from":"Access privileges","name":"proacl","to":"Access privileges; see GRANT and REVOKE for details."}],"from":"7.4","listing":[],"order":false,"removed":[],"status":"changed","to":"8.0","types":[],"unlisted":[]},{"added":["proallargtypes","proargmodes"],"attributes":[],"description_changed":true,"descriptions":[{"from":"An array with the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field may be null.","name":"proargnames","to":"An array with the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes."},{"from":"An array with the data types of the function arguments","name":"proargtypes","to":"An array with the data types of the function arguments. This includes only input arguments (including INOUT arguments), and thus represents the call signature of the function."}],"from":"8.0","listing":[],"order":false,"removed":[],"status":"changed","to":"8.1","types":[{"from":"int4","name":"proowner","to":"oid"}],"unlisted":[]},{"added":[],"attributes":[],"description_changed":true,"descriptions":[{"from":"Access privileges; see GRANT and REVOKE for details.","name":"proacl","to":"Access privileges; see GRANT and REVOKE for details"},{"from":"An array with the data types of the function arguments. This includes all arguments (including OUT and INOUT arguments); however, if all the arguments are IN arguments, this field will be null. Note that subscripting is 1-based, whereas for historical reasons proargtypes is subscripted from 0.","name":"proallargtypes","to":"An array with the data types of the function arguments. This includes all arguments (including OUT and INOUT arguments); however, if all the arguments are IN arguments, this field will be null. Note that subscripting is 1-based, whereas for historical reasons proargtypes is subscripted from 0"},{"from":"An array with the modes of the function arguments, encoded as i for IN arguments, o for OUT arguments, b for INOUT arguments. If all the arguments are IN arguments, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes.","name":"proargmodes","to":"An array with the modes of the function arguments, encoded as i for IN arguments, o for OUT arguments, b for INOUT arguments. If all the arguments are IN arguments, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes"},{"from":"An array with the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes.","name":"proargnames","to":"An array with the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes"},{"from":"An array with the data types of the function arguments. This includes only input arguments (including INOUT arguments), and thus represents the call signature of the function.","name":"proargtypes","to":"An array with the data types of the function arguments. This includes only input arguments (including INOUT arguments), and thus represents the call signature of the function"},{"from":"Additional information about how to invoke the function. Again, the interpretation is language-specific.","name":"probin","to":"Additional information about how to invoke the function. Again, the interpretation is language-specific"},{"from":"Function returns null if any call argument is null. In that case the function won't actually be called at all. Functions that are not \"strict\" must be prepared to handle null inputs.","name":"proisstrict","to":"Function returns null if any call argument is null. In that case the function won't actually be called at all. Functions that are not \"strict\" must be prepared to handle null inputs"},{"from":"This tells the function handler how to invoke the function. It might be the actual source code of the function for interpreted languages, a link symbol, a file name, or just about anything else, depending on the implementation language/call convention.","name":"prosrc","to":"This tells the function handler how to invoke the function. It might be the actual source code of the function for interpreted languages, a link symbol, a file name, or just about anything else, depending on the implementation language/call convention"}],"from":"8.1","listing":[],"order":false,"removed":[],"status":"reworded","to":"8.2","types":[],"unlisted":[]},{"added":["procost","prorows","proconfig"],"attributes":[],"description_changed":true,"descriptions":[{"from":"provolatile tells whether the function's result depends only on its input arguments, or is affected by outside factors. It is i for \"immutable\" functions, which always deliver the same result for the same inputs. It is s for \"stable\" functions, whose results (for fixed inputs) do not change within a scan. It is v for \"volatile\" functions, whose results may change at any time. (Use v also for functions with side-effects, so that calls to them cannot get optimized away.)","name":"provolatile","to":"provolatile tells whether the function's result depends only on its input arguments, or is affected by outside factors. It is i for \"immutable\" functions, which always deliver the same result for the same inputs. It is s for \"stable\" functions, whose results (for fixed inputs) do not change within a scan. It is v for \"volatile\" functions, whose results might change at any time. (Use v also for functions with side-effects, so that calls to them cannot get optimized away.)"}],"from":"8.2","listing":[],"order":false,"removed":[],"status":"changed","to":"8.3","types":[],"unlisted":[]},{"added":["provariadic","proiswindow","pronargdefaults","proargdefaults"],"attributes":[],"description_changed":false,"descriptions":[{"from":"An array with the modes of the function arguments, encoded as i for IN arguments, o for OUT arguments, b for INOUT arguments. If all the arguments are IN arguments, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes","name":"proargmodes","to":"An array with the modes of the function arguments, encoded as i for IN arguments, o for OUT arguments, b for INOUT arguments, v for VARIADIC arguments, t for TABLE arguments. If all the arguments are IN arguments, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes"},{"from":"An array with the data types of the function arguments. This includes only input arguments (including INOUT arguments), and thus represents the call signature of the function","name":"proargtypes","to":"An array with the data types of the function arguments. This includes only input arguments (including INOUT and VARIADIC arguments), and thus represents the call signature of the function"},{"from":"Number of arguments","name":"pronargs","to":"Number of input arguments"}],"from":"8.3","listing":[],"order":false,"removed":[],"status":"changed","to":"8.4","types":[],"unlisted":[]},{"added":[],"attributes":[],"description_changed":true,"descriptions":[{"from":"An array with the data types of the function arguments. This includes all arguments (including OUT and INOUT arguments); however, if all the arguments are IN arguments, this field will be null. Note that subscripting is 1-based, whereas for historical reasons proargtypes is subscripted from 0","name":"proallargtypes","to":"An array with the data types of the function arguments. This includes all arguments (including OUT and INOUT arguments); however, if all the arguments are IN arguments, this field will be null. Note that subscripting is 1-based, whereas for historical reasons proargtypes is subscripted from 0."},{"from":"Expression trees (in nodeToString() representation) for default values. This is a list with pronargdefaults elements, corresponding to the last N input arguments (i.e., the last N proargtypes positions). If none of the arguments have defaults, this field will be null","name":"proargdefaults","to":"Expression trees (in nodeToString() representation) for default values. This is a list with pronargdefaults elements, corresponding to the last N input arguments (i.e., the last N proargtypes positions). If none of the arguments have defaults, this field will be null."},{"from":"An array with the modes of the function arguments, encoded as i for IN arguments, o for OUT arguments, b for INOUT arguments, v for VARIADIC arguments, t for TABLE arguments. If all the arguments are IN arguments, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes","name":"proargmodes","to":"An array with the modes of the function arguments, encoded as i for IN arguments, o for OUT arguments, b for INOUT arguments, v for VARIADIC arguments, t for TABLE arguments. If all the arguments are IN arguments, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes."},{"from":"An array with the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes","name":"proargnames","to":"An array with the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes."},{"from":"An array with the data types of the function arguments. This includes only input arguments (including INOUT and VARIADIC arguments), and thus represents the call signature of the function","name":"proargtypes","to":"An array with the data types of the function arguments. This includes only input arguments (including INOUT and VARIADIC arguments), and thus represents the call signature of the function."},{"from":"Additional information about how to invoke the function. Again, the interpretation is language-specific","name":"probin","to":"Additional information about how to invoke the function. Again, the interpretation is language-specific."},{"from":"Function returns null if any call argument is null. In that case the function won't actually be called at all. Functions that are not \"strict\" must be prepared to handle null inputs","name":"proisstrict","to":"Function returns null if any call argument is null. In that case the function won't actually be called at all. Functions that are not \"strict\" must be prepared to handle null inputs."},{"from":"This tells the function handler how to invoke the function. It might be the actual source code of the function for interpreted languages, a link symbol, a file name, or just about anything else, depending on the implementation language/call convention","name":"prosrc","to":"This tells the function handler how to invoke the function. It might be the actual source code of the function for interpreted languages, a link symbol, a file name, or just about anything else, depending on the implementation language/call convention."}],"from":"8.4","listing":[],"order":false,"removed":[],"status":"changed","to":"9.0","types":[{"from":"bytea","name":"probin","to":"text"}],"unlisted":[]},{"added":[],"attributes":[],"description_changed":false,"descriptions":[],"from":"9.0","listing":[],"order":false,"removed":[],"status":"changed","to":"9.1","types":[{"from":"text","name":"proargdefaults","to":"pg_node_tree"}],"unlisted":[]},{"added":["protransform","proleakproof"],"attributes":[],"description_changed":false,"descriptions":[],"from":"9.1","listing":[],"order":false,"removed":[],"status":"changed","to":"9.2","types":[],"unlisted":[]},{"added":["protrftypes"],"attributes":[{"attribute":"not_null","from":false,"name":"prosrc","to":true}],"description_changed":false,"descriptions":[],"from":"9.4","listing":[],"order":false,"removed":[],"status":"changed","to":"9.5","types":[],"unlisted":[]},{"added":["proparallel"],"attributes":[],"description_changed":true,"descriptions":[{"from":"Calls to this function can be simplified by this other function (see Section 35.9.11)","name":"protransform","to":"Calls to this function can be simplified by this other function (see Section 36.9.11)"}],"from":"9.5","listing":[],"order":false,"removed":[],"status":"changed","to":"9.6","types":[],"unlisted":[]},{"added":[],"attributes":[],"description_changed":true,"descriptions":[{"from":"Function returns null if any call argument is null. In that case the function won't actually be called at all. Functions that are not \"strict\" must be prepared to handle null inputs.","name":"proisstrict","to":"Function returns null if any call argument is null. In that case the function won't actually be called at all. Functions that are not “strict” must be prepared to handle null inputs."},{"from":"Function is a security definer (i.e., a \"setuid\" function)","name":"prosecdef","to":"Function is a security definer (i.e., a “setuid” function)"},{"from":"Calls to this function can be simplified by this other function (see Section 36.9.11)","name":"protransform","to":"Calls to this function can be simplified by this other function (see Section 37.9.10)"},{"from":"provolatile tells whether the function's result depends only on its input arguments, or is affected by outside factors. It is i for \"immutable\" functions, which always deliver the same result for the same inputs. It is s for \"stable\" functions, whose results (for fixed inputs) do not change within a scan. It is v for \"volatile\" functions, whose results might change at any time. (Use v also for functions with side-effects, so that calls to them cannot get optimized away.)","name":"provolatile","to":"provolatile tells whether the function's result depends only on its input arguments, or is affected by outside factors. It is i for “immutable” functions, which always deliver the same result for the same inputs. It is s for “stable” functions, whose results (for fixed inputs) do not change within a scan. It is v for “volatile” functions, whose results might change at any time. (Use v also for functions with side-effects, so that calls to them cannot get optimized away.)"}],"from":"9.6","listing":[],"order":false,"removed":[],"status":"reworded","to":"10","types":[],"unlisted":[]},{"added":["prokind"],"attributes":[],"description_changed":true,"descriptions":[{"from":"Calls to this function can be simplified by this other function (see Section 37.9.10)","name":"protransform","to":"Calls to this function can be simplified by this other function (see Section 38.10.10)"}],"from":"10","listing":[],"order":false,"removed":["proisagg","proiswindow"],"status":"changed","to":"11","types":[],"unlisted":[]},{"added":["prosupport"],"attributes":[{"attribute":"hidden","from":true,"name":"oid","to":false}],"description_changed":true,"descriptions":[{"from":"Access privileges; see GRANT and REVOKE for details","name":"proacl","to":"Access privileges; see Section 5.7 for details"}],"from":"11","listing":[],"order":false,"removed":["protransform"],"status":"changed","to":"12","types":[],"unlisted":[]},{"added":[],"attributes":[],"description_changed":false,"descriptions":[{"from":"An array with the data types of the function arguments. This includes all arguments (including OUT and INOUT arguments); however, if all the arguments are IN arguments, this field will be null. Note that subscripting is 1-based, whereas for historical reasons proargtypes is subscripted from 0.","name":"proallargtypes","to":"An array of the data types of the function arguments. This includes all arguments (including OUT and INOUT arguments); however, if all the arguments are IN arguments, this field will be null. Note that subscripting is 1-based, whereas for historical reasons proargtypes is subscripted from 0."},{"from":"An array with the modes of the function arguments, encoded as i for IN arguments, o for OUT arguments, b for INOUT arguments, v for VARIADIC arguments, t for TABLE arguments. If all the arguments are IN arguments, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes.","name":"proargmodes","to":"An array of the modes of the function arguments, encoded as i for IN arguments, o for OUT arguments, b for INOUT arguments, v for VARIADIC arguments, t for TABLE arguments. If all the arguments are IN arguments, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes."},{"from":"An array with the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes.","name":"proargnames","to":"An array of the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes."},{"from":"An array with the data types of the function arguments. This includes only input arguments (including INOUT and VARIADIC arguments), and thus represents the call signature of the function.","name":"proargtypes","to":"An array of the data types of the function arguments. This includes only input arguments (including INOUT and VARIADIC arguments), and thus represents the call signature of the function."},{"from":"Data type OIDs for which to apply transforms.","name":"protrftypes","to":"An array of the argument/result data type(s) for which to apply transforms (from the function's TRANSFORM clause). Null if none."}],"from":"12","listing":[],"order":false,"removed":[],"status":"reworded","to":"13","types":[],"unlisted":[]},{"added":["prosqlbody"],"attributes":[],"description_changed":true,"descriptions":[{"from":"Optional planner support function for this function (see Section 37.11)","name":"prosupport","to":"Planner support function for this function (see Section 38.11), or zero if none"}],"from":"13","listing":[],"order":false,"removed":[],"status":"changed","to":"14","types":[],"unlisted":[]},{"added":[],"attributes":[],"description_changed":true,"descriptions":[{"from":"Access privileges; see Section 5.7 for details","name":"proacl","to":"Access privileges; see Section 5.8 for details"},{"from":"Planner support function for this function (see Section 38.11), or zero if none","name":"prosupport","to":"Planner support function for this function (see Section 36.11), or zero if none"}],"from":"16","listing":[],"order":false,"removed":[],"status":"reworded","to":"17","types":[],"unlisted":[]},{"added":[],"attributes":[],"description_changed":false,"descriptions":[{"from":"The function has no side effects. No information about the arguments is conveyed except via the return value. Any function that might throw an error depending on the values of its arguments is not leak-proof.","name":"proleakproof","to":"The function has no side effects. No information about the arguments is conveyed except via the return value. Any function that might throw an error depending on the values of its arguments is not leakproof."}],"from":"17","listing":[],"order":false,"removed":[],"status":"reworded","to":"18","types":[],"unlisted":[]},{"added":[],"attributes":[],"description_changed":false,"descriptions":[{"from":"Access privileges; see Section 5.8 for details","name":"proacl","to":"Access privileges; see Section 5.9 for details"}],"from":"18","listing":[],"order":false,"removed":[],"status":"reworded","to":"19","types":[],"unlisted":[]}],"column_count":30,"content_hash":"40f59cdcde26b597055266f1a487da74ec109f72ff03adebdaca79ef5b07aed8","derived_content_hash":"2fdd81f7d5f89bf68caa178caced7e97f2961eb6a304df92ab2e47a37cc37b05","first_version":"7.4","imported_at":"2026-09-30T00:40:55.709025+08:00","kind":"catalog","last_version":"20","name":"pg_proc","position":57,"present_in":["7.4","8.0","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"relation_oid":null,"relkind":"r","shared":false,"source_rev":"catalog-bilingual-repair:84a17e5a428ce2f2b93dc10cce9054c4c8e6244006f607cf4851c7b84a79c75b","summary":"The catalog pg_proc stores information about functions, procedures, aggregate functions, and window functions (collectively also known as routines).","summary_zh":"目录 pg_proc 存放有关函数、过程、聚合函数以及窗口函数（统称为例程）的信息。更多信息请参考 CREATE FUNCTION、CREATE PROCEDURE 和第 36.3 节。"}},"Definition":{"Collection":"catalog","Key":"pg_proc","SourceDatabase":"center","Version":"18","SourceTable":"catalog","SourceKey":"pg_proc","SourceRevision":"catalog-bilingual-repair:84a17e5a428ce2f2b93dc10cce9054c4c8e6244006f607cf4851c7b84a79c75b","Facts":{"columns":[{"array_dimensions":0,"attnum":1,"description":"Row identifier","description_zh":"行标识符","documented":true,"documented_name":"oid","hidden":false,"name":"oid","not_null":true,"references":"","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":2,"description":"Name of the function","description_zh":"函数的名字","documented":true,"documented_name":"proname","hidden":false,"name":"proname","not_null":true,"references":"","type":"name","type_modifier":-1,"type_oid":19,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":3,"description":"The OID of the namespace that contains this function","description_zh":"函数所属的名字空间的 OID","documented":true,"documented_name":"pronamespace","hidden":false,"name":"pronamespace","not_null":true,"references":"pg_namespace.oid","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":4,"description":"Owner of the function","description_zh":"函数的拥有者","documented":true,"documented_name":"proowner","hidden":false,"name":"proowner","not_null":true,"references":"pg_authid.oid","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":5,"description":"Implementation language or call interface of this function","description_zh":"此函数的实现语言或调用接口","documented":true,"documented_name":"prolang","hidden":false,"name":"prolang","not_null":true,"references":"pg_language.oid","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":6,"description":"Estimated execution cost (in units of cpu_operator_cost); if proretset, this is cost per row returned","description_zh":"估计的执行代价（以 cpu_operator_cost 为单位），如果 proretset 为真，这是每行返回的代价","documented":true,"documented_name":"procost","hidden":false,"name":"procost","not_null":true,"references":"","type":"float4","type_modifier":-1,"type_oid":700,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":7,"description":"Estimated number of result rows (zero if not proretset)","description_zh":"估计的结果行数量（如果 proretset 为假，该值为 0）","documented":true,"documented_name":"prorows","hidden":false,"name":"prorows","not_null":true,"references":"","type":"float4","type_modifier":-1,"type_oid":700,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":8,"description":"Data type of the variadic array parameter's elements, or zero if the function does not have a variadic parameter","description_zh":"可变参数数组的元素类型；如果函数没有可变参数，则为零","documented":true,"documented_name":"provariadic","hidden":false,"name":"provariadic","not_null":true,"references":"pg_type.oid","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":9,"description":"Planner support function for this function (see Section 36.11), or zero if none","description_zh":"该函数的规划器支持函数（参见第 36.11 节），如果没有则为零","documented":true,"documented_name":"prosupport","hidden":false,"name":"prosupport","not_null":true,"references":"pg_proc.oid","type":"regproc","type_modifier":-1,"type_oid":24,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":10,"description":"f for a normal function, p for a procedure, a for an aggregate function, or w for a window function","description_zh":"f 表示普通函数，p 表示过程，a 表示聚合函数，w 表示窗口函数","documented":true,"documented_name":"prokind","hidden":false,"name":"prokind","not_null":true,"references":"","type":"char","type_modifier":-1,"type_oid":18,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":11,"description":"Function is a security definer (i.e., a “setuid” function)","description_zh":"函数是否为安全定义者函数（即“setuid”函数）","documented":true,"documented_name":"prosecdef","hidden":false,"name":"prosecdef","not_null":true,"references":"","type":"bool","type_modifier":-1,"type_oid":16,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":12,"description":"The function has no side effects. No information about the arguments is conveyed except via the return value. Any function that might throw an error depending on the values of its arguments is not leakproof.","description_zh":"该函数没有副作用。除返回值外，不会泄露任何关于参数的信息。任何可能因参数值而报错的函数都不是 leakproof。","documented":true,"documented_name":"proleakproof","hidden":false,"name":"proleakproof","not_null":true,"references":"","type":"bool","type_modifier":-1,"type_oid":16,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":13,"description":"Function returns null if any call argument is null. In that case the function won't actually be called at all. Functions that are not “strict” must be prepared to handle null inputs.","description_zh":"任一调用实参为 NULL 时，函数返回 NULL。在这种情况下，实际上根本不会调用该函数。非“严格”函数必须能够处理 NULL 输入。","documented":true,"documented_name":"proisstrict","hidden":false,"name":"proisstrict","not_null":true,"references":"","type":"bool","type_modifier":-1,"type_oid":16,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":14,"description":"Function returns a set (i.e., multiple values of the specified data type)","description_zh":"函数是否返回一个集合（即，指定数据类型的多个值）","documented":true,"documented_name":"proretset","hidden":false,"name":"proretset","not_null":true,"references":"","type":"bool","type_modifier":-1,"type_oid":16,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":15,"description":"provolatile tells whether the function's result depends only on its input arguments, or is affected by outside factors. It is i for “immutable” functions, which always deliver the same result for the same inputs. It is s for “stable” functions, whose results (for fixed inputs) do not change within a scan. It is v for “volatile” functions, whose results might change at any time. (Use v also for functions with side-effects, so that calls to them cannot get optimized away.)","description_zh":"provolatile 表示函数的结果是否仅依赖输入实参，还是也受外部因素影响。i 表示“不变的”函数，相同输入总是产生相同结果。s 表示“稳定的”函数，对于固定输入，其结果在一次扫描内不变。v 表示“易失的”函数，其结果随时可能变化。（有副作用的函数也应使用 v，以免对它们的调用在优化时被消除。）","documented":true,"documented_name":"provolatile","hidden":false,"name":"provolatile","not_null":true,"references":"","type":"char","type_modifier":-1,"type_oid":18,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":16,"description":"proparallel tells whether the function can be safely run in parallel mode. It is s for functions which are safe to run in parallel mode without restriction. It is r for functions which can be run in parallel mode, but their execution is restricted to the parallel group leader; parallel worker processes cannot invoke these functions. It is u for functions which are unsafe in parallel mode; the presence of such a function forces a serial execution plan.","description_zh":"proparallel 表示函数是否可以在并行模式下安全运行。s 表示可以不受限制地在并行模式下安全运行的函数。r 表示可以在并行模式下运行、但仅限并行组领导者执行的函数；并行工作者进程不能调用这些函数。u 表示在并行模式下不安全的函数；此类函数的存在会强制采用串行执行计划。","documented":true,"documented_name":"proparallel","hidden":false,"name":"proparallel","not_null":true,"references":"","type":"char","type_modifier":-1,"type_oid":18,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":17,"description":"Number of input arguments","description_zh":"输入参数的个数","documented":true,"documented_name":"pronargs","hidden":false,"name":"pronargs","not_null":true,"references":"","type":"int2","type_modifier":-1,"type_oid":21,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":18,"description":"Number of arguments that have defaults","description_zh":"具有默认值的参数个数","documented":true,"documented_name":"pronargdefaults","hidden":false,"name":"pronargdefaults","not_null":true,"references":"","type":"int2","type_modifier":-1,"type_oid":21,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":19,"description":"Data type of the return value","description_zh":"返回值的数据类型","documented":true,"documented_name":"prorettype","hidden":false,"name":"prorettype","not_null":true,"references":"pg_type.oid","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":20,"description":"An array of the data types of the function arguments. This includes only input arguments (including INOUT and VARIADIC arguments), and thus represents the call signature of the function.","description_zh":"一个函数参数的数据类型的数组。这只包括输入参数（含 INOUT 和 VARIADIC 参数），因此也表现了函数的调用签名。","documented":true,"documented_name":"proargtypes","hidden":false,"name":"proargtypes","not_null":true,"references":"pg_type.oid","type":"oidvector","type_modifier":-1,"type_oid":30,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":21,"description":"An array of the data types of the function arguments. This includes all arguments (including OUT and INOUT arguments); however, if all the arguments are IN arguments, this field will be null. Note that subscripting is 1-based, whereas for historical reasons proargtypes is subscripted from 0.","description_zh":"一个函数参数的数据类型的数组。这包括所有参数（含 OUT 和 INOUT 参数）。但是，如果所有参数都是 IN 参数，此字段为 NULL。注意下标是从 1 开始，然而由于历史原因 proargtypes 的下标是从 0 开始。","documented":true,"documented_name":"proallargtypes","hidden":false,"name":"proallargtypes","not_null":false,"references":"pg_type.oid","type":"oid[]","type_modifier":-1,"type_oid":1028,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":22,"description":"An array of the modes of the function arguments, encoded as i for IN arguments, o for OUT arguments, b for INOUT arguments, v for VARIADIC arguments, t for TABLE arguments. If all the arguments are IN arguments, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes.","description_zh":"一个函数参数的模式的数组。这里包括：i 表示 IN 参数，o 表示 OUT 参数，b 表示 INOUT 参数，v 表示 VARIADIC 参数，t 表示 TABLE 参数。如果所有的参数都是 IN 参数，此字段为 NULL。注意这里的下标对应着 proallargtypes 而不是 proargtypes 中的位置。","documented":true,"documented_name":"proargmodes","hidden":false,"name":"proargmodes","not_null":false,"references":"","type":"char[]","type_modifier":-1,"type_oid":1002,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":23,"description":"An array of the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes.","description_zh":"一个函数参数的名字的数组。没有名字的参数在数组中设置为空字符串。如果没有一个参数有名字，此字段为 NULL。注意这里的下标对应着 proallargtypes 而不是 proargtypes 中的位置。","documented":true,"documented_name":"proargnames","hidden":false,"name":"proargnames","not_null":false,"references":"","type":"text[]","type_modifier":-1,"type_oid":1009,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":24,"description":"Expression trees (in nodeToString() representation) for default values. This is a list with pronargdefaults elements, corresponding to the last N input arguments (i.e., the last N proargtypes positions). If none of the arguments have defaults, this field will be null.","description_zh":"默认值的表达式树（以 nodeToString() 表示）。这是一个包含 pronargdefaults 个元素的列表，对应最后 N 个输入参数（即最后 N 个 proargtypes 位置）。如果没有参数具有默认值，则此字段为 NULL。","documented":true,"documented_name":"proargdefaults","hidden":false,"name":"proargdefaults","not_null":false,"references":"","type":"pg_node_tree","type_modifier":-1,"type_oid":194,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":25,"description":"An array of the argument/result data type(s) for which to apply transforms (from the function's TRANSFORM clause). Null if none.","description_zh":"需要应用转换的参数／结果数据类型数组（来自函数的 TRANSFORM 子句）。如果没有，则为 NULL。","documented":true,"documented_name":"protrftypes","hidden":false,"name":"protrftypes","not_null":false,"references":"pg_type.oid","type":"oid[]","type_modifier":-1,"type_oid":1028,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":26,"description":"This tells the function handler how to invoke the function. It might be the actual source code of the function for interpreted languages, a link symbol, a file name, or just about anything else, depending on the implementation language/call convention.","description_zh":"此字段告诉函数处理器如何调用该函数。它可以是解释型语言函数的实际源代码、链接符号、文件名或其他内容，具体取决于实现语言和调用约定。","documented":true,"documented_name":"prosrc","hidden":false,"name":"prosrc","not_null":true,"references":"","type":"text","type_modifier":-1,"type_oid":25,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":27,"description":"Additional information about how to invoke the function. Again, the interpretation is language-specific.","description_zh":"关于如何调用函数的附加信息。其解释是与语言相关的。","documented":true,"documented_name":"probin","hidden":false,"name":"probin","not_null":false,"references":"","type":"text","type_modifier":-1,"type_oid":25,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":28,"description":"Pre-parsed SQL function body. This is used for SQL-language functions when the body is given in SQL-standard notation rather than as a string literal. It's null in other cases.","description_zh":"预解析的 SQL 函数体。当 SQL 语言函数的函数体采用 SQL 标准表示法给出，而非字符串字面量时，使用此字段。其他情况下为 NULL。","documented":true,"documented_name":"prosqlbody","hidden":false,"name":"prosqlbody","not_null":false,"references":"","type":"pg_node_tree","type_modifier":-1,"type_oid":194,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":29,"description":"Function's local settings for run-time configuration variables","description_zh":"函数对于运行时配置变量的本地设置值","documented":true,"documented_name":"proconfig","hidden":false,"name":"proconfig","not_null":false,"references":"","type":"text[]","type_modifier":-1,"type_oid":1009,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":30,"description":"Access privileges; see Section 5.8 for details","description_zh":"访问权限，详见第 5.8 节","documented":true,"documented_name":"proacl","hidden":false,"name":"proacl","not_null":false,"references":"","type":"aclitem[]","type_modifier":-1,"type_oid":1034,"zh_from":"same-version-manual"}],"description":"The catalog pg_proc stores information about functions, procedures, aggregate functions, and window functions (collectively also known as routines). See CREATE FUNCTION, CREATE PROCEDURE, and Section 36.3 for more information.\n\nIf prokind indicates that the entry is for an aggregate function, there should be a matching row in pg_aggregate.","description_zh":"目录 pg_proc 存放有关函数、过程、聚合函数以及窗口函数（统称为例程）的信息。更多信息请参考 CREATE FUNCTION、CREATE PROCEDURE 和第 36.3 节。\n\n如果 prokind 显示该条目用于一个聚合函数，在 pg_aggregate 中应该有一个相匹配的行。","description_zh_html":"\u003cp\u003e目录 pg_proc 存放有关函数、过程、聚合函数以及窗口函数（统称为例程）的信息。更多信息请参考 CREATE FUNCTION、CREATE PROCEDURE 和第 36.3 节。\u003c/p\u003e\n\u003cp\u003e如果 prokind 显示该条目用于一个聚合函数，在 pg_aggregate 中应该有一个相匹配的行。\u003c/p\u003e","doc":{"anchor":"id-1.10.4.41.5","file":"catalog-pg-proc.html","lang":"en","sha256":"79c93a4d63710981af39452e57ccd12dc7994fee432a212cf0de8a9470b9dc9f","slug":"18"},"kind":"catalog","lang":"en","measured_attributes":true,"metadata_release":"18.6","runtime_columns":["oid","proname","pronamespace","proowner","prolang","procost","prorows","provariadic","prosupport","prokind","prosecdef","proleakproof","proisstrict","proretset","provolatile","proparallel","pronargs","pronargdefaults","prorettype","proargtypes","proallargtypes","proargmodes","proargnames","proargdefaults","protrftypes","prosrc","probin","prosqlbody","proconfig","proacl"],"runtime_verified":false,"source":"english-manual","sources":[{"evidence":[{"build_id":107,"kind":"same-version-manual","locale":"zh-Hans","page":"catalog-pg-proc.html","sha256":"ea5708060de69d93f2211a0fb92338d9b0d09c7ef6ea83f4f0a884efc4b162f9","source_revision":"unknown:rendered-translation-baseline","translation_revision":"git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b","version":"18"}],"kind":"catalog-bilingual-repair","prior_source_revision":"english-manuals:fc501feeb941adb173a51e415b57c62c65193bb952688703f38b64445f2a45cf","version":"18"}],"zh_from":"same-version-manual"},"ManualEvidence":{"doc":{"anchor":"id-1.10.4.41.5","file":"catalog-pg-proc.html","lang":"en","sha256":"79c93a4d63710981af39452e57ccd12dc7994fee432a212cf0de8a9470b9dc9f","slug":"18"},"sources":[{"evidence":[{"build_id":107,"kind":"same-version-manual","locale":"zh-Hans","page":"catalog-pg-proc.html","sha256":"ea5708060de69d93f2211a0fb92338d9b0d09c7ef6ea83f4f0a884efc4b162f9","source_revision":"unknown:rendered-translation-baseline","translation_revision":"git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b","version":"18"}],"kind":"catalog-bilingual-repair","prior_source_revision":"english-manuals:fc501feeb941adb173a51e415b57c62c65193bb952688703f38b64445f2a45cf","version":"18"}]},"MeasuredEvidence":{"measured_attributes":true,"metadata_release":"18.6","runtime_columns":["oid","proname","pronamespace","proowner","prolang","procost","prorows","provariadic","prosupport","prokind","prosecdef","proleakproof","proisstrict","proretset","provolatile","proparallel","pronargs","pronargdefaults","prorettype","proargtypes","proallargtypes","proargmodes","proargnames","proargdefaults","protrftypes","prosrc","probin","prosqlbody","proconfig","proacl"],"runtime_verified":false}},"Text":{"Collection":"catalog","Key":"pg_proc","SourceDatabase":"center","Version":"18","Locale":"en","Title":"pg_proc","Summary":"The catalog pg_proc stores information about functions, procedures, aggregate functions, and window functions (collectively also known as routines). See CREATE FUNCTION, CREATE PROCEDURE, and Section 36.3 for more information.\n\nIf prokind indicates that the entry is for an aggregate function, there should be a matching row in pg_aggregate.","BodyHTML":"\u003cp\u003eThe catalog pg_proc stores information about functions, procedures, aggregate functions, and window functions (collectively also known as routines). See CREATE FUNCTION, CREATE PROCEDURE, and Section 36.3 for more information.\n\nIf prokind indicates that the entry is for an aggregate function, there should be a matching row in pg_aggregate.\u003c/p\u003e","SourceRevision":"catalog-bilingual-repair:84a17e5a428ce2f2b93dc10cce9054c4c8e6244006f607cf4851c7b84a79c75b","ContentHash":"05ca8f658291a41ea53a1fd3c474e217460dd6d8f6d771f48f074b79a16f022f","Payload":{"columns":[{"array_dimensions":0,"attnum":1,"description":"Row identifier","description_zh":"行标识符","documented":true,"documented_name":"oid","hidden":false,"name":"oid","not_null":true,"references":"","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":2,"description":"Name of the function","description_zh":"函数的名字","documented":true,"documented_name":"proname","hidden":false,"name":"proname","not_null":true,"references":"","type":"name","type_modifier":-1,"type_oid":19,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":3,"description":"The OID of the namespace that contains this function","description_zh":"函数所属的名字空间的 OID","documented":true,"documented_name":"pronamespace","hidden":false,"name":"pronamespace","not_null":true,"references":"pg_namespace.oid","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":4,"description":"Owner of the function","description_zh":"函数的拥有者","documented":true,"documented_name":"proowner","hidden":false,"name":"proowner","not_null":true,"references":"pg_authid.oid","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":5,"description":"Implementation language or call interface of this function","description_zh":"此函数的实现语言或调用接口","documented":true,"documented_name":"prolang","hidden":false,"name":"prolang","not_null":true,"references":"pg_language.oid","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":6,"description":"Estimated execution cost (in units of cpu_operator_cost); if proretset, this is cost per row returned","description_zh":"估计的执行代价（以 cpu_operator_cost 为单位），如果 proretset 为真，这是每行返回的代价","documented":true,"documented_name":"procost","hidden":false,"name":"procost","not_null":true,"references":"","type":"float4","type_modifier":-1,"type_oid":700,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":7,"description":"Estimated number of result rows (zero if not proretset)","description_zh":"估计的结果行数量（如果 proretset 为假，该值为 0）","documented":true,"documented_name":"prorows","hidden":false,"name":"prorows","not_null":true,"references":"","type":"float4","type_modifier":-1,"type_oid":700,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":8,"description":"Data type of the variadic array parameter's elements, or zero if the function does not have a variadic parameter","description_zh":"可变参数数组的元素类型；如果函数没有可变参数，则为零","documented":true,"documented_name":"provariadic","hidden":false,"name":"provariadic","not_null":true,"references":"pg_type.oid","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":9,"description":"Planner support function for this function (see Section 36.11), or zero if none","description_zh":"该函数的规划器支持函数（参见第 36.11 节），如果没有则为零","documented":true,"documented_name":"prosupport","hidden":false,"name":"prosupport","not_null":true,"references":"pg_proc.oid","type":"regproc","type_modifier":-1,"type_oid":24,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":10,"description":"f for a normal function, p for a procedure, a for an aggregate function, or w for a window function","description_zh":"f 表示普通函数，p 表示过程，a 表示聚合函数，w 表示窗口函数","documented":true,"documented_name":"prokind","hidden":false,"name":"prokind","not_null":true,"references":"","type":"char","type_modifier":-1,"type_oid":18,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":11,"description":"Function is a security definer (i.e., a “setuid” function)","description_zh":"函数是否为安全定义者函数（即“setuid”函数）","documented":true,"documented_name":"prosecdef","hidden":false,"name":"prosecdef","not_null":true,"references":"","type":"bool","type_modifier":-1,"type_oid":16,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":12,"description":"The function has no side effects. No information about the arguments is conveyed except via the return value. Any function that might throw an error depending on the values of its arguments is not leakproof.","description_zh":"该函数没有副作用。除返回值外，不会泄露任何关于参数的信息。任何可能因参数值而报错的函数都不是 leakproof。","documented":true,"documented_name":"proleakproof","hidden":false,"name":"proleakproof","not_null":true,"references":"","type":"bool","type_modifier":-1,"type_oid":16,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":13,"description":"Function returns null if any call argument is null. In that case the function won't actually be called at all. Functions that are not “strict” must be prepared to handle null inputs.","description_zh":"任一调用实参为 NULL 时，函数返回 NULL。在这种情况下，实际上根本不会调用该函数。非“严格”函数必须能够处理 NULL 输入。","documented":true,"documented_name":"proisstrict","hidden":false,"name":"proisstrict","not_null":true,"references":"","type":"bool","type_modifier":-1,"type_oid":16,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":14,"description":"Function returns a set (i.e., multiple values of the specified data type)","description_zh":"函数是否返回一个集合（即，指定数据类型的多个值）","documented":true,"documented_name":"proretset","hidden":false,"name":"proretset","not_null":true,"references":"","type":"bool","type_modifier":-1,"type_oid":16,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":15,"description":"provolatile tells whether the function's result depends only on its input arguments, or is affected by outside factors. It is i for “immutable” functions, which always deliver the same result for the same inputs. It is s for “stable” functions, whose results (for fixed inputs) do not change within a scan. It is v for “volatile” functions, whose results might change at any time. (Use v also for functions with side-effects, so that calls to them cannot get optimized away.)","description_zh":"provolatile 表示函数的结果是否仅依赖输入实参，还是也受外部因素影响。i 表示“不变的”函数，相同输入总是产生相同结果。s 表示“稳定的”函数，对于固定输入，其结果在一次扫描内不变。v 表示“易失的”函数，其结果随时可能变化。（有副作用的函数也应使用 v，以免对它们的调用在优化时被消除。）","documented":true,"documented_name":"provolatile","hidden":false,"name":"provolatile","not_null":true,"references":"","type":"char","type_modifier":-1,"type_oid":18,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":16,"description":"proparallel tells whether the function can be safely run in parallel mode. It is s for functions which are safe to run in parallel mode without restriction. It is r for functions which can be run in parallel mode, but their execution is restricted to the parallel group leader; parallel worker processes cannot invoke these functions. It is u for functions which are unsafe in parallel mode; the presence of such a function forces a serial execution plan.","description_zh":"proparallel 表示函数是否可以在并行模式下安全运行。s 表示可以不受限制地在并行模式下安全运行的函数。r 表示可以在并行模式下运行、但仅限并行组领导者执行的函数；并行工作者进程不能调用这些函数。u 表示在并行模式下不安全的函数；此类函数的存在会强制采用串行执行计划。","documented":true,"documented_name":"proparallel","hidden":false,"name":"proparallel","not_null":true,"references":"","type":"char","type_modifier":-1,"type_oid":18,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":17,"description":"Number of input arguments","description_zh":"输入参数的个数","documented":true,"documented_name":"pronargs","hidden":false,"name":"pronargs","not_null":true,"references":"","type":"int2","type_modifier":-1,"type_oid":21,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":18,"description":"Number of arguments that have defaults","description_zh":"具有默认值的参数个数","documented":true,"documented_name":"pronargdefaults","hidden":false,"name":"pronargdefaults","not_null":true,"references":"","type":"int2","type_modifier":-1,"type_oid":21,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":19,"description":"Data type of the return value","description_zh":"返回值的数据类型","documented":true,"documented_name":"prorettype","hidden":false,"name":"prorettype","not_null":true,"references":"pg_type.oid","type":"oid","type_modifier":-1,"type_oid":26,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":20,"description":"An array of the data types of the function arguments. This includes only input arguments (including INOUT and VARIADIC arguments), and thus represents the call signature of the function.","description_zh":"一个函数参数的数据类型的数组。这只包括输入参数（含 INOUT 和 VARIADIC 参数），因此也表现了函数的调用签名。","documented":true,"documented_name":"proargtypes","hidden":false,"name":"proargtypes","not_null":true,"references":"pg_type.oid","type":"oidvector","type_modifier":-1,"type_oid":30,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":21,"description":"An array of the data types of the function arguments. This includes all arguments (including OUT and INOUT arguments); however, if all the arguments are IN arguments, this field will be null. Note that subscripting is 1-based, whereas for historical reasons proargtypes is subscripted from 0.","description_zh":"一个函数参数的数据类型的数组。这包括所有参数（含 OUT 和 INOUT 参数）。但是，如果所有参数都是 IN 参数，此字段为 NULL。注意下标是从 1 开始，然而由于历史原因 proargtypes 的下标是从 0 开始。","documented":true,"documented_name":"proallargtypes","hidden":false,"name":"proallargtypes","not_null":false,"references":"pg_type.oid","type":"oid[]","type_modifier":-1,"type_oid":1028,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":22,"description":"An array of the modes of the function arguments, encoded as i for IN arguments, o for OUT arguments, b for INOUT arguments, v for VARIADIC arguments, t for TABLE arguments. If all the arguments are IN arguments, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes.","description_zh":"一个函数参数的模式的数组。这里包括：i 表示 IN 参数，o 表示 OUT 参数，b 表示 INOUT 参数，v 表示 VARIADIC 参数，t 表示 TABLE 参数。如果所有的参数都是 IN 参数，此字段为 NULL。注意这里的下标对应着 proallargtypes 而不是 proargtypes 中的位置。","documented":true,"documented_name":"proargmodes","hidden":false,"name":"proargmodes","not_null":false,"references":"","type":"char[]","type_modifier":-1,"type_oid":1002,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":23,"description":"An array of the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field will be null. Note that subscripts correspond to positions of proallargtypes not proargtypes.","description_zh":"一个函数参数的名字的数组。没有名字的参数在数组中设置为空字符串。如果没有一个参数有名字，此字段为 NULL。注意这里的下标对应着 proallargtypes 而不是 proargtypes 中的位置。","documented":true,"documented_name":"proargnames","hidden":false,"name":"proargnames","not_null":false,"references":"","type":"text[]","type_modifier":-1,"type_oid":1009,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":24,"description":"Expression trees (in nodeToString() representation) for default values. This is a list with pronargdefaults elements, corresponding to the last N input arguments (i.e., the last N proargtypes positions). If none of the arguments have defaults, this field will be null.","description_zh":"默认值的表达式树（以 nodeToString() 表示）。这是一个包含 pronargdefaults 个元素的列表，对应最后 N 个输入参数（即最后 N 个 proargtypes 位置）。如果没有参数具有默认值，则此字段为 NULL。","documented":true,"documented_name":"proargdefaults","hidden":false,"name":"proargdefaults","not_null":false,"references":"","type":"pg_node_tree","type_modifier":-1,"type_oid":194,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":25,"description":"An array of the argument/result data type(s) for which to apply transforms (from the function's TRANSFORM clause). Null if none.","description_zh":"需要应用转换的参数／结果数据类型数组（来自函数的 TRANSFORM 子句）。如果没有，则为 NULL。","documented":true,"documented_name":"protrftypes","hidden":false,"name":"protrftypes","not_null":false,"references":"pg_type.oid","type":"oid[]","type_modifier":-1,"type_oid":1028,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":26,"description":"This tells the function handler how to invoke the function. It might be the actual source code of the function for interpreted languages, a link symbol, a file name, or just about anything else, depending on the implementation language/call convention.","description_zh":"此字段告诉函数处理器如何调用该函数。它可以是解释型语言函数的实际源代码、链接符号、文件名或其他内容，具体取决于实现语言和调用约定。","documented":true,"documented_name":"prosrc","hidden":false,"name":"prosrc","not_null":true,"references":"","type":"text","type_modifier":-1,"type_oid":25,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":27,"description":"Additional information about how to invoke the function. Again, the interpretation is language-specific.","description_zh":"关于如何调用函数的附加信息。其解释是与语言相关的。","documented":true,"documented_name":"probin","hidden":false,"name":"probin","not_null":false,"references":"","type":"text","type_modifier":-1,"type_oid":25,"zh_from":"same-version-manual"},{"array_dimensions":0,"attnum":28,"description":"Pre-parsed SQL function body. This is used for SQL-language functions when the body is given in SQL-standard notation rather than as a string literal. It's null in other cases.","description_zh":"预解析的 SQL 函数体。当 SQL 语言函数的函数体采用 SQL 标准表示法给出，而非字符串字面量时，使用此字段。其他情况下为 NULL。","documented":true,"documented_name":"prosqlbody","hidden":false,"name":"prosqlbody","not_null":false,"references":"","type":"pg_node_tree","type_modifier":-1,"type_oid":194,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":29,"description":"Function's local settings for run-time configuration variables","description_zh":"函数对于运行时配置变量的本地设置值","documented":true,"documented_name":"proconfig","hidden":false,"name":"proconfig","not_null":false,"references":"","type":"text[]","type_modifier":-1,"type_oid":1009,"zh_from":"same-version-manual"},{"array_dimensions":1,"attnum":30,"description":"Access privileges; see Section 5.8 for details","description_zh":"访问权限，详见第 5.8 节","documented":true,"documented_name":"proacl","hidden":false,"name":"proacl","not_null":false,"references":"","type":"aclitem[]","type_modifier":-1,"type_oid":1034,"zh_from":"same-version-manual"}],"description":"The catalog pg_proc stores information about functions, procedures, aggregate functions, and window functions (collectively also known as routines). See CREATE FUNCTION, CREATE PROCEDURE, and Section 36.3 for more information.\n\nIf prokind indicates that the entry is for an aggregate function, there should be a matching row in pg_aggregate."}},"RequestedLocale":"en","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","7.4","8.0","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
