什么是高级?这就叫高级—openGauss(114)

35 阅读2分钟

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

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

可在变量声明时或者声明后使用类型构造器对变量进行初始化。如未初始化,变量var_name的值为NULL。

变量声明和初始化后,可通过下标访问集合成员,或者对成员进行赋值。下标的范围为 [1, upper], upper 的值为当前空间的大小。如访问被删除的成员,会返回no data found的错误信息。

说明:

  • 非兼容A模式下(参数sql_compatibility值不为A),不支持创建集合类型。
  • 在openGauss中,无索引的集合不会自动增长,访问下标越界时会报错。
  • 支持在schema、匿名块、存储过程、自定义函数、package中定义的集合类型,其作用域各不相同。
  • NOT NULL只支持语法不支持功能。
  • char、vachar、numeric、float、number等元素类型的范围约束语法创建集合类型,例如:“create type t1 is table of numeric(5); ”只支持语法创建,不支持元素的范围约束功能,功能等同于“create type t1 is table of numeric;”。
  • data_type可以为基础数据类型、或存储过程内定义的record类型、集合类型、数组类型,不支持ref cursor类型。
  • 不同的集合类型的变量不能相互赋值。即使成员类型相同,但集合类型名称不同,也是不同的集合类型。如TYPE t1 IS TABLE OF int;和TYPE t2 IS TABLE OF int;定义的两个集合类型,t1和t2是不同的集合类型,以其定义的变量不支持相互赋值。
  • 只支持集合的等值(=)与非等值(<>或!=)比较,不支持其他关系运算和算数运算操作。
  • 集合类型与NULL比较时,请使用 IS [ NOT ] NULL,使用 = 操作符与NULL比较的结果不准确。
  • 支持集合类型变量作为函数的参数和返回值,此时要求参数或者返回值的类型是在schema或者package中定义的集合类型。
  • 无索引的集合作为函数入参时,可以传入对应子元素类型相同的数组类型作为入参,不支持多维数组,且要求数组下标从1开始(过时的方法,不建议使用该功能。可执行“set behavior_compat_options = 'disable_rewrite_nesttable';”禁用)。
  • 不支持对XML类型数据操作。
  • 集合类型的构造器不支持浮点数以及表达式作为下标。

openGauss支持使用圆括号来访问集合元素,且还支持一些特有的函数,如extend,count,first,last, prior, next, delete来访问集合的内容。

集合函数支持multiset union/intersect/except all/distinct函数。

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

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