关键字
pg_get_function_arg_default,regproc
问题描述
如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数获取函数或者存储过程中相应位置的参数?
解决方案
????1)获得函数数据类型:oid、integer
????2)将创建对象转换为oid模式
????3)select pg_get_function_arg_default('pr1'::regproc,1);
????执行结果:???pg语法(oracle语法同)
test=# \set SQLTERM /
test=# CREATE OR REPLACE PROCEDURE pr1(a1 int :=10,a2 varchar(50) :='beijing') AS $$
test$# BEGIN
test$# INSERT INTO t1 VALUES(1,'kingbase');
test$# INSERT INTO t1 VALUES(a1,a2);
test$# END;
test$# $$
test-# LANGUAGE PLPGSQL;
test-# /
CREATE PROCEDURE
test=# select pg_get_function_arg_default('pr1'::regproc,1);
test-# /
pg_get_function_arg_default
-----------------------------
10
(1 row)
注:
????test=# \df pg_get_function_arg_default
????List of functions
????Schema??????| Name?????????????????????????????????????????| Result data type | Argument data types | Type
????----------------+-------------------------------------------+-------------------------+--------------------------------+------
????pg_catalog | pg_get_function_arg_default | text????????????????????????| oid, integer??????????????????| func
????'object_name'::regproc???将创建对象转化为oid形式???
? ? ?integer? ?填写具体数字 对应参数的位置
????pg_get_function_arg_default? ?函数是获取对应位置参数的默认值
|