关键字
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 函数是获取对应位置参数的默认值