返回首页

gbase数据、南大通用产品文档:GBase8sifx_rc_delete() 函数

更新日期:2024年09月11日

ifx_rc_delete() 函数从集合删除元素。
语法
ifx_rc_delete(rchandle, action, jump)
参数
该函数接受以下参数。
参数
类型
用于
描述
rchandle
HINFX_RC
输入
集合缓冲区的句柄
action
SQL_SMALLINT
输入
元素相对于查找位置的位置。值可能为:

SQL_INFX_RC_ABSOLUTE :: 元素
jump ,缓冲区中的第一个元素是元素 1

SQL_INFX_RC_CURRENT:当前元素

SQL_INFX_RC_FIRST:第一个元素

SQL_INFX_RC_LAST:最后一个元素

SQL_INFX_RC_NEXT:下一个元素

SQL_INFX_RC_PRIOR:上一个元素

SQL_INFX_RC_RELATIVE:: jump 跳
过当前元素的元素
jump
SQL_SMALLINT
输入
当 action 是 SQL_INFX_RC_ABSOLUTE
或 SQL_INFX_RC_RELATIVE 的偏移量
用法
ifx_rc_delete() 函数从 action 和 jump 指定的位置删除集合中的元素。该函数将查找位置
设置为被删除的值的位置。从行中删除元素是不可能的。

行类型列是在已命名 ROW 类型或未命名 ROW 类型上定义的列。
使用相同的 SQL 语法
来查询已命名 ROW 类型和未命名行类型列。

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

对行类型列的查询返回 ROW 类型的所有字段的数据。
字段是 ROW 类型中的组件数据类
型。例如:employee 表的 address 列包含 street、city 、state 和 zip 字段。下列查询显示如何
构造返回 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))

要访问列包含的个别字段,使用单个点符号表示法来投影列的个别字段。例如:假设您要
访问 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


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


字段投影
不要混淆列和字段。
列只与表相关联,
并且列投影将格式为 name_1.name2 的常规点符号表
示法分别用于表和列。
字段是 ROW 类型中的组件数据类型。
使用 ROW 类型
(和将 ROW
类型指定给单个列的能力),您可以使用形式为 name_a.name_b.name_c.name_d 的单点符
号表示法来投影列的各个字段。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 字段的行。但是,可以指定查询只返回特定嵌套字段。以下查

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

询显示如何使用点符号表示法来构造只返回 address 列中 z_code 字段的行的 SELECT 语
句。
图: 查询
SELECT address.zip.z_code FROM employee
图: 查询结果
z_code

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 语句的信息,请参阅修改数据。
重要: 只能对使用 .* 符号表示法的表达式求值一次。


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

 摘要:
回滚当前事务。
 语法:
gs_bool gbase_rollback(GBASE * gbase);
 参数:
 返回值:
如果成功,返回0,如果出现错误,返回非0 值。