GBase 8c 数据类型——伪类型
伪类型
GBase 8c支持伪类型,是一系列具有特殊用途的类型。伪类型不能作为字段的数据类型,但可以用于声明函数参数或者结果类型。GBase 8c支持的伪类型。
名称 | 描述 |
any | 表示函数接受任何输入数据类型。 |
anyelement | 表示函数接受任何数据类型。 |
anyarray | 表示函数接受任意数组数据类型。 |
anynonarray | 表示函数接受任意非数组数据类型。 |
anyenum | 表示函数接受任意枚举数据类型。 |
anyrange | 表示函数接受任意范围数据类型。 |
cstring | 表示函数接受或者返回一个空结尾的C字符串。 |
internal | 表示函数接受或者返回一种服务器内部的数据类型。 |
language_handler | 声明一个过程语言调用句柄返回language_handler。 |
fdw_handler | 声明一个外部数据封装器返回fdw_handler。 |
record | 标识函数返回一个未声明的行类型。 |
trigger | 声明一个触发器函数返回trigger。 |
void | 表示函数不返回数值。 |
用C编写的函数,无论内置或动态装载的,都可以接受或者返回任何伪数据类型。当伪类型作为参数类型使用时,用户需要保证函数的正常运行。
用过程语言编写的函数,只能使用实现语言允许的伪类型。目前,过程语言都不允许将伪类型作为参数类型,并且只允许使用void和record作为结果类型。一些多态的函数还支持使用anyelement、anyarray、anynonarray anyenum和anyrange类型。
伪类型internal用于声明只能在数据库内部调用而不能在SQL查询调用的函数。如果函数有至少一个internal类型的参数,则不能从SQL里直接调用。建议:除非有参数要求internal类型,否则不要创建任何声明返回internal的函数。
示例:
--创建表
gbase=# create table t1 (a int);
CREATE TABLE
--插入两条数据
gbase=# insert into t1 values(1),(2);
INSERT 0 2
--创建函数showall()。
gbase=# CREATE OR REPLACE FUNCTION showall() RETURNS SETOF record AS $$ SELECT count(*) from t1;
gbase$# $$
gbase-# LANGUAGE SQL;
CREATE FUNCTION
--调用函数showall()。
gbase=# SELECT showall();
(2)
--删除函数。
gbase=# DROP FUNCTION showall();
DROP FUNCTION
--删除表
gbase=# DROP TABLE t1;
DROP TABLE
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526