返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

数组类型的使用
在使用数组之前,需要自定义一个数组类型。
在存储过程中紧跟AS 关键字后面定义数组类型。定义方法如下。
TYPE array_type IS VARRAY(size) OF data_type;
其中:

array_type:要定义的数组类型名。

VARRAY:表示要定义的数组类型。

size:取值为正整数,表示可以容纳的成员的最大数量。

data_type:要创建的数组中成员的类型。
说明

在GBase 8c 中,数组会自动增长,访问越界会返回一个NULL,不会报错。

在存储过程中定义的数组类型,其作用域仅在该存储过程中。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
624

建议选择上述定义方法的一种来自定义数组类型,
当同时使用两种方法定义同名的
数组类型时,GBase 8c 会优先选择存储过程中定义的数组类型来声明数组变量。

data_type 也可以为存储过程中定义的record 类型(匿名块不支持),但不可以为
存储过程中
定义的数组或集合类型。
GBase 8c 支持使用圆括号来访问数组元素,
且还支持一些特有的函数,
如extend、
count、
first、last、prior、exists、trim、next、delete 来访问数组的内容。
说明

存储过程中如果有DML 语句(SELECT、UPDATE、INSERT、DELETE),DML
语句推荐使用
中括号来访问数组元素,使用小括号默认识别为数组访问,若数
组不存在,则识别为函数表达式。

如果clob 类型大于1GB,则存储过程中的table of 类型、record 类型、clob 作为出
入参、游标、raise info 等功能不支持。

GBA-02DD-0025
错误码
错误标识
错误信息
GBA-02DD-002
5

The
user
named
gbase
can't
be
operated.
错误出现原因
基于目前的设计,不允许对gbase 用户进行更改【会在合适的时机去掉此限制】
分析与建议
gbase 作为内建用户,
暂时不允许对其进行操作,
因此检查SQL 是否正要对gbase
用户做更改。

缺省情况下,分隔标识符在通过 ODBC 连接时被禁用。
有三种方式启用它们,按优先级递减的顺序如下所示:
DELIMIDENT 连接字符串关键字
如果使用连接字符串连接,可以将关键字 DELIMIDENT 设置为启用或禁用分隔标识符。
如果关键字设置为 y则为连接启用分隔标识符。
如果关键字设置为 n 则为连接禁用分隔标
识符。如果关键字存在但是没有设置值,则对是否启用分隔标识符没有影响。
例如,该连接字符串使用数据源(DSN)mydsn连接,并为此连接启用分隔标识符。
"DSN=mydsn;DELIMIDENT=y;"
该连接字符串还使用 DSN mydsn连接,但是对是否使用分隔标识符没有影响。
"DSN=mydsn;DELIMIDENT=;"
在连接字符串中设置 DELIMIDENT 关键字会覆盖任何启用或禁用分隔标识符的连接属性
或环境变量。
SQL_INFX_ATTR_DELIMIDENT 连接属性
可以在连接之前通过设置 SQL_INFX_ATTR_DELIMIDENT 连接属性来启用或禁用给出
连接的分隔标识符。SQL_INFX_ATTR_DELIMIDENT 连接属性接受下表列出的值。
表 1. SQL_INFX_ATTR_DELIMIDENT 连接属性允许的值

影响
SQL_TRUE
为此连接启用分隔标识符。

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 188 -

影响
SQL_FALSE
为此连接禁用分隔标识符。
SQL_IFX_CLEAR
清除之前的设置,以便该连接属性对是否使用分隔
标识符没有影响。
例如,该调用导致在创建连接时启用分隔标识符:
SQLSetConnectAttr(hdbc, SQL_INFX_ATTR_DELIMIDENT, SQL_TRUE,
SQL_IS_INTEGER);
如果该连接属性设置为 SQL_TRUE 或 SQL_FALSE,则该设置覆盖 DELIMIDENT 环境
变量,但是不覆盖 DELIMIDENT 连接字符串关键字。
DELIMIDENT 环境变量
在一些 GBase 8s API 中,
例如 ESQL/C,
通过将 DELIMIDENT 环境变量设置为任何值来
启用分隔标识符。但是,在 ODBC 中,通过将 DELIMIDENT 环境变量设置为 y 来启用
分隔标识符,将它设置为 n 来禁用分隔标识符。