返回首页

gbase数据、南大通用产品文档:GBase8s选择包含行类型数据的列

更新日期:2024年09月11日

行类型列是在已命名 ROW 类型或未命名 ROW 类型上定义的列。
使用相同的 SQL 语法
来查询已命名 ROW 类型和未命名行类型列。
对行类型列的查询返回 ROW 类型的所有字段的数据。
字段是 ROW 类型中的组件数据类
型。例如:employee 表的 address 列包含 street、city 、state 和 zip 字段。下列查询显示如何
构造返回 address 列的所有字段的查询。
图: 查询
SELECT address FROM employee
图: 查询结果

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 75 -
address ROW(102 Ruby, Belmont, CA, 49932, 1000)
address ROW(133 First, San Jose, CA, 85744, 4900)
address ROW(152 Topaz, Willits, CA, 69445, 1000))

要访问列包含的个别字段,使用单个点符号表示法来投影列的个别字段。例如:假设您要
访问 employee 表的 address 列中的特定字段。以下 SELECT 语句投影 address 列
的 city 和 state 字段。
图: 查询
SELECT address.city, address.state FROM employee
图: 查询结果
city state

Belmont CA
San Jose CA
Willits CA

用对已命名行类型列构造查询所用的方法来对未命名行类型列构造查询。例如:假设您想
要访问图 2中 student 表的 s_address 列的数据。
可以使用点符号表示法来查询对未命名行类
型定义的列的个别字段。以下查询显示如何对 student 表构造返回 s_address 列
的 city 和 state 字段的行的 SELECT 语句。
图: 查询
SELECT s_address.city, s_address.state FROM student
图: 查询结果
city state

Belmont CA
Mount Prospect IL
Greeley CO


字段投影
不要混淆列和字段。
列只与表相关联,并且列投影将格式为 name_1.name2 的常规点符号表
示法分别用于表和列。
字段是 ROW 类型中的组件数据类型。
使用 ROW 类型
(和将 ROW
类型指定给单个列的能力),您可以使用形式为 name_a.name_b.name_c.name_d 的单点符

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 76 -
号表示法来投影列的各个字段。GBase 8s 数据库服务器使用以下优先顺序规则来解释点符
号表示法:
1.
table_name_a . column_name_b . field_name_c . field_name_d
2.
column_name_a . field_name_b . field_name_c . field_name_d
当特定标识的意义有歧义时。数据库服务器使用优先顺序规则来确定标识指定哪个数据库
对象。考虑以下两个语句:
CREATE TABLE b (c ROW(d INTEGER, e CHAR(2)))
CREATE TABLE c (d INTEGER)
在下列 SELECT 语句中,表达式 c.d 引用表 c 的列 d(而不是 b 中列 c 的字段 d),原因是
表标识具有比列标识更高的优先顺序:
SELECT * FROM b,c WHERE c.d = 10
为了避免引用错误的数据库对象,可为字段投影指定完全符号表示法。例如:假定您想要
引用 b 中列 c 的字段 d(而不是表 c 的列 d)。以下语句指定想要引用的对象的表、列和字
段标识:
SELECT * FROM b,c WHERE b.c.d = 10
重要: 虽然优先顺序规则减少了数据库服务器误解字段投影的几率,但是建议对所有表、列
和字段标识使用唯一名称。

使用字段投影来选择嵌套字段
行类型通常是列,但可将任何行类型表达式用于字段投影。当行类型表达式本身包含其它
行类型时,表达式就包含嵌套字段。要访问表达式或个别字段中的嵌套字段,使用点符号
表示法。要访问行类型的所有字段,使用星号(*)。本节描述行类型访问的两种方法。
有关如何将点符号表示法和星号符号表示法与行类型表达式配合使用的讨论,请参阅
《GBase 8s SQL 指南:语法》中的表达式段。
选择行类型的个别字段
考虑 employee 表的 address 列,它包含字段 street 、city 、state 和 zip。此外,zip 字段包含
嵌套字段:z_code 和 z_suffix。(您可能想要复查图 1的行类型和表定义。)对 zip 字段的
查询返回 z_code 和 z_suffix 字段的行。但是,可以指定查询只返回特定嵌套字段。以下查
询显示如何使用点符号表示法来构造只返回 address 列中 z_code 字段的行的 SELECT 语
句。
图: 查询
SELECT address.zip.z_code FROM employee
图: 查询结果
z_code

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 77 -

39444
6500
76055
19004


使用星号表示法来访问行类型的所有字段
星号符号表示法仅在 SELECT 语句的选择列表中受支持。
为投影列表中的行类型列指定列
名时,数据库服务器返回列的所有字段的值。想要投影 ROW 类型内的所有字段时,还可
以使用星号符号表示法。
下列查询使用星号符号表示法来返回 employee 表中 address 列的所有字段。
图: 查询
SELECT address.* FROM employee;
图: 查询结果
address ROW(102 Ruby, Belmont, CA, 49932, 1000)
address ROW(133 First, San Jose, CA, 85744, 4900)
address ROW(152 Topaz, Willits, CA, 69445, 1000))

星号符号表示法使得执行某些 SQL 任务更容易。假设您创建返回行类型值的函
数 new_row() 并且想要调用此函数并将返回的行插入到表中。数据库服务器没有提供处理
此类操作的简便方法。但是,以下查询显示如何使用星号表示法来返回 new_row() 的所有
字段并将返回的字段插入到 tab_2表中。
图: 查询
INSERT INTO tab_2 SELECT new_row(exp).* FROM tab_1
有关如何使用 INSERT 语句的信息,请参阅修改数据。
重要: 只能对使用 .* 符号表示法的表达式求值一次。

Add 方法
把指定的GBaseParameter 对象加入到GBaseParameterCollection 中。

重载列表
1) 把指定的GBaseParameter 对象加入到GBaseParameterCollection



GBase 8a 程序员手册ADO.NET 篇
南大通用数据技术股份有限公司

- 301 -
中。
Add(GBaseParameter)
2) 把指定的GBaseParameter 对象加入到GBaseParameterCollection
中。
Add(Object)
3) 给定参数名和数据类型,把指定的GBaseParameter 对象加入到
GBaseParameterCollection 中。
Add(String, GBaseDbType)
4) 给定参数名、数据类型和列长度,把指定的GBaseParameter 对象加
入到GBaseParameterCollection 中。
Add(String, GBaseDbType, Int32)
5) 给定参数名、数据类型、列长度和源列名,把指定的GBaseParameter
对象加入到GBaseParameterCollection 中。
Add(String, GBaseDbType, Int32, String)
6) 给定参数名和值,把指定的GBaseParameter 对象加入到
GBaseParameterCollection 中。
Add(String, Object)

对于计算机上所有安装的驱动程序,odbcinst.ini 文件都有条目。
安装了的 ODBC 驱动程序使用 odbcinst.ini 样例文件,其位于
$GBASEDBTDIR/etc/odbcinst.ini 中。
要创建您的 odbcinst.ini 文件,
请将 odbcinst.ini 样
例文件复制至您的目录作为 $HOME/.odbcinst.ini(请注意文件名称开始处添加的点)。
当您安装新的驱动程序或驱动程序的新版本时,请更新此文件。下表描述
$HOME/.odbcinst.ini 文件中的部分项。
部分
描述
状态
ODBC 驱动程序
所有安装的 ODBC 驱动程序的名称列表
可选的
ODBC 驱动程序规范 驱动程序属性和值的列表
可选的
ODBC 驱动程序
使用示例来获得关于 ODBC 驱动程序的信息。
下列示例说明关于驱动程序的信息:
[ODBC Drivers]
driver_name1=Installed
driver_name2=Installed

下列示例说明关于安装了的驱动程序的信息:
[ODBC Drivers]
GBase 8s ODBC DRIVER=Installed
驱动程序规范
每个安装了的驱动程序在驱动程序名称下方描述其属性。
下列示例说明驱动程序规范格式:
[driver name1]
Driver=driver_library_path
Setup=setup/driver_library_path
APILevel=api_level_supported
ConnectFunctions=connectfunctions
DriverODBCVer=odbc_version
FileUsage=file_usage
SQLLevel=sql_level

下列示例说明关于驱动程序规范的信息:
[GBase 8s ODBC DRIVER]

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 30 -
Driver=/vobs/tristarm/odbc/iclis09b.so
Setup=/vobs/tristarm/odbc/iclis09b.so
APILevel=1
ConnectFunctions=YYY
DriverODBCVer=03.50
FileUsage=0
SQLLevel=1
下表描述驱动程序规范部分中的关键字。
关键字
描述
状态
API Level
ODBC 接口符合驱动程序支持的级别

0= 无

1= 支持级别 1

2= 支持级别 2
必需的
ConnectFunctions
指示驱动程序是否支持 SQLConnect、
SQLDriverConnect 和 SQLBrowseConnect 的
三字符字符串
必需的
DriverODBCVer
带有驱动程序支持的 ODBC 版本的字符串
必需的
Driver
驱动程序库路径
必需的
FileUsage
指示基于文件的驱动程序如何直接处理 DSN
中文件的数值
必需的
Setup
设置库
必需的
SQLLevel
指示驱动程序支持的 SQL-92 语法的数值
必需的