返回首页

gbase数据、南大通用产品文档:GBase8sANSIOWNER 环境变量

更新日期:2024年09月11日

在符合 ANSI 标准的数据库中,您可通过将 ANSIOWNER 环境变量设置为 1 来防止发
生在没有用引号定界的所有者名称中小写字母转换成大写字母的缺省行为。

要防止符合 ANSI 标准的数据库中所有者名称的小写字母转换成大写字母,必须在
初始化 GBase 8s 之前设置 ANSIOWNER。
下表显示了符合 ANSI 标准的 GBase 8s 数据库如何存储或读取称为 oblong 的数据
库对象的指定名称(如果您是 oblong 的所有者并且您的 userid(全部用小写字母)为
owen):
表 1. 隐式的、未加引号的和加引号的所有者名称的字母大小写,有或者无 ANSIOWNER
所有者格式
规范
ANSIOWNER = 1
未设置 ANSIOWNER
隐式:
oblong
owen.oblong
OWEN.oblong
未加引号:
owen.oblong
owen.oblong
OWEN.oblong
加引号:
'owen'.oblong
owen.oblong
owen.oblong


GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 147 -
因为它们不匹配您的 userid 的字母大小写,所以指定了格式(存储为
OWEN.oblong)的任何 SQL 语句都将失败并出错。

操作步骤
步骤1:执行安装
$ ./gcinstall.py --silent=demo.options
******************************************************************
***************
Thank you for choosing GBase product!
………………
******************************************************************
Do you accept the above licence agreement ([Y,y]/[N,n])? y
******************************************************************
Welcome to install GBase products
******************************************************************
Environmental Checking on gcluster nodes.
CoordinateHost:

您可使用 sqlda 结构来保存动态地执行的用户定义的函数返回的值。
要使用 sqlda 结构来处理位置的函数返回值:
声明变量来保存 sqlda 结构的地址。
组装并准备 EXECUTE FUNCTION 语句。
EXECUTE FUNCTION 语句不可包含 INTO 子句。

使用 DESCRIBE...INTO 语句来执行两项任务:
a) 分配 sqlda 结构。将分配的结构的地址存储在您声明的
sqlda 指针中。
b) 确定函数返回值的数目和数据类型。
该 DESCRIBE 语句为每
一返回值填充 sqlvar_struct 结构。
在 DESCRIBE 语句之后,
您可为定义的常量 SQ_EXECPROC 测试 SQLCODE 变量
(sqlca.sqlcode),来检查准备好的 EXECUTE FUNCTION 语句。
在 sqlstype.h 头文件中定义 SQ_EXECPROC 常量。
对于每一返回值,
测试 sqlda 的 sqltype 和 sqllen 字段,
来确定需要为该数据分配的
内存的数量。
执行 EXECUTE FUNCTION 语句,并将返回值存储在 sqlda 结构中。
您用来执行用户定义的函数的语句,依赖于该函数是非游标函数,还是游标函数。
释放您分配给 sqlda 结构的内存。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 585 -

执行非游标函数
非游标函数仅返回一行给应用程序。请使用 EXECUTE...INTO DESCRIPTOR 语句来
执行该函数,并将返回的一个值或多个值保存在 sqlda 结构中。

未显式地定义作为迭代函数的外部函数仅返回单行数据。因此,您可使用
EXECUTE...INTO DESCRIPTOR 来动态地执行最外部的函数,并将它们的返回值保存至
sqlda 结构内。此单行数据仅由一个值组成,因为外部函数仅可返回单个值。sqlda 结构仅
包含带有单个返回值的一个项描述符。

其 RETURN 语句不包括 WITH RESUME 关键字的 SPL 函数仅返回单行数据。因
此,
您可使用 EXECUTE...INTO DESCRIPTOR 来动态地执行大多数 SPL 函数,
并将它们
的返回值保存至 sqlda 结构内。SPL 函数一次可返回一个或多个值,因此,sqlda 结构包
含一个或多个项描述符。

重要: 由于您通常不知道用户定义的函数返回的返回行数,因此,您不可保证仅返
回一行。如果您不使用游标来执行游标函数,则 GBase 8s ESQL/C 生成运行时刻错误。因
此,总是将用户定义的函数与函数游标相关联,是一种好的做法。
执行游标函数
游标函数可将一个或多个返回值的行返回给应用程序。要执行游标函数,您必须将
EXECUTE FUNCTION 语句与函数游标相关联,并使用 FETCH...INTO DESCRIPTOR 语
句来将一个返回值或多个返回值保存在 sqlda 结构中。

要使用 sqlda 结构来保存游标函数返回值:
为用户定义的函数声明函数游标。
使用 DECLARE 语句来将 EXECUTE FUNCTION 语句与函数游标相关联。
使用 OPEN 语句来执行该函数并打开该游标。
使用 FETCH...USING DESCRIPTOR 语句来将返回值从游标检索至 sqlda 结构内。
将行数据从 sqlda 结构检索至带有 C 语言语句的主变量,其访问每一选择列表列的
sqldata 字段。
释放分配给 sqldata 字段和 sqlda 结构的内存。

仅定义作为迭代函数的外部函数可返回多行数据。因此,您必须定义函数游标来动态
地执行迭代函数。每一行数据仅由一个值组成,因为外部函数仅可返回单个值。对于每一
行,sqlda 结构仅包含带有单个返回值的一个 sqlvar_struct 结构。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 586 -

其 RETURN 语句包括 WITH RESUME 关键字的 SPL 函数可返回一行或多行数据。
因此,
您必须定义函数游标来动态地执行这些 SPL 函数。
每一行数据可由一个或多个值组
成,因为 SPL 函数可一次返回一个或多个值。对于每一行,sqlda 结构包含每一返回值的
sqlvar_struct 结构。