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

45 阅读2分钟

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

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

4. 变量取值

通过指定下标方式可获取变量中对应下标的成员值,若通过下标找不到该成员则会返回no data found的错误信息。

说明:

  • 非兼容A模式下(参数sql_compatibility值不为A),不支持创建带索引集合类型。
  • 支持在匿名块、存储过程、自定义函数、package中定义带索引集合类型,其作用域各不相同。不支持在schema中定义带索引集合类型。
  • NOT NULL只支持语法不支持功能。
  • char、vachar、numeric、float、number等元素类型的范围约束语法创建集合类型,例如:“type t1 is table of numeric(5) index by int; ”只支持语法创建,不支持元素的范围约束功能,功能等同于“create type t1 is table of numeric;”。
  • data_type可以为基础数据类型,或存储过程内定义的record类型,集合类型,数组类型,不支持ref cursor类型。
  • indexby_type仅支持integer和varchar,其中varchar的长度暂不约束。
  • 未初始化的带索引集合类型变量非NULL。
  • 带索引集合类型变量不能赋NULL值,否则报错。
  • 带索引集合类型变量作为入参不能赋NULL值或''。
  • 不同的带索引集合类型的变量不能相互赋值。即使成员类型和下标类型相同,但集合类型名称不同,也是不同的集合类型。如 TYPE t1 IS TABLE OF int index by int; 和 TYPE t2 IS TABLE OF int index by int; 定义的两个集合类型,t1和t2是不同的集合类型,以其定义的变量不支持相互赋值。
  • 带索引集合类型不支持关系运算和算数运算操作。
  • select … bulk collect into 方式赋值带索引集合类型变量时,只支持下标为integer类型的集合类型,下标为varchar类型集合不支持。
  • 支持带索引集合类型变量作为函数的参数和返回值,此时要求参数或者返回值的类型是在package中定义的集合类型。
  • 带索引的集合作为函数入参时,可以传入对应子元素类型相同的数组类型作为入参,不支持多维数组,不支持索引类型为varcahr(过时的方法,不建议使用该功能。可执行“set behavior_compat_options = 'disable_rewrite_nesttable';”禁用)。
  • 类型构造器目前仅支持集合类型,其参数个数的上限与用户自定义函数参数个数上限相同。对于带索引的集合类型,构造器在使用时索引的值仅支持为常量。
  • 不支持对XML类型数据操作。

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

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