你说你看不懂openGauss我都不信(三十七)

48 阅读1分钟

#openGauss #入门 #安装 #数据库 #开源

知识来源:docs-opengauss.osinfra.cn/zh/

声明用C编写的函数(不管是内置的还是动态装载的)都可以接受或者返回任何这样的伪数据类型。当伪类型作为参数类型使用时,用户需要保证函数的正常运行。

用过程语言编写的函数只能使用实现语言允许的伪类型。目前,过程语言都不允许使用作为参数类型的伪类型,并且只允许使用void和record作为结果类型。一些多态的函数还支持使用anyelement、anyarray、anynonarray anyenum和anyrange类型。

伪类型internal用于声明那种只能在数据库系统内部调用的函数,他们不能直接在SQL查询里调用。如果函数至少有一个internal类型的参数,则不能从SQL里调用他。建议不要创建任何声明返回internal的函数,除非他至少有一个internal类型的参数。

示例:

--创建表
openGauss=# create table t1 (a int);

--插入两条数据
openGauss=# insert into t1 values(1),(2);

--创建函数showall()。
openGauss=# CREATE OR REPLACE FUNCTION showall() RETURNS SETOF record
AS $$ SELECT count(*) from t1; $$
LANGUAGE SQL;

--调用函数showall()。
openGauss=# SELECT showall();
 showall 
---------
 (2)
(1 row)

--删除函数。
openGauss=# DROP FUNCTION showall();

--删除表
openGauss=# drop table t1;

#openGauss #入门 #安装 #数据库 #开源

知识来源:docs-opengauss.osinfra.cn/zh/