返回首页

gbase数据、南大通用产品文档:GBase8s集合派生的表

更新日期:2024年09月11日

集合派生的表使您能都处理集合表达式的元素(例如虚拟表中的行)。在 SELECT 语句的
FROM 子句中使用 TABLE 关键字来创建集合派生的表。数据库服务器支持 SELECT 、
INSERT 、UPDATE 和 DELETE 语句中的集合派生的表。
以下查询使用名为 c_table 的集合派生表访问 superstores_demo 数据库中 sales_rep 表
的 sales 列的元素。sales 列是其中两个字段 month 和amount 存储销售数据的未命名行类型
的集合。当 sales.month 等于 98-03 时,下列查询返回 sales.amount 的元素。由于内部选择
本身就是表达式,所以它不能对外部查询的每个迭代返回多个列值。外部查询指定
对 sales_rep 表的多少行进行求值。
图: 查询
SELECT (SELECT c_table.amount FROM TABLE (sales_rep.sales) c_table
WHERE c_table.month = '98-03')
FROM sales_rep;
图: 查询结果
(expression)

$47.22
$53.22
下列查询使用集合派生的表访问 sales 集合列中 rep_num 列等于 102 的元素。使用集合派
生的表,可以为表和列指定列名。如果没有为集合派生的表指定表名,那么数据库服务器
会自动创建表名。此示例为集合派生的表 c_table 指定派生列列表 s_month 和 s_amount。
图: 查询
SELECT * FROM TABLE((SELECT sales FROM sales_rep
WHERE sales_rep.rep_num = 102)) c_table(s_month, s_amount);

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

图: 查询结果
s_month s_amount

1998-03 $53.22
1998-04 $18.22
下列查询创建集合派生的表但不指定派生表或派生列名。除派生列采用 sales_rep 表中
的 sales 列的缺省自动名之外,该查询返回与图 3相同的结果。
图: 查询
SELECT * FROM TABLE((SELECT sales FROM sales_rep
WHERE sales_rep.rep_num = 102));
图: 查询结果
month amount

1998-03 $53.22
1998-04 $18.22
限制: 集合派生的表是只读的,因此它不能是 INSERT 、UPDATE 或 DELETE 语句的目标表或
可更新游标或视图的基础表。
有关集合派生的表的语法和限制的完整描述,请参阅《GBase 8s SQL 指南:语法》。

以下示例显示了添加到 SPL 例程 items_pct 中的 TRACE 语句。SET DEBUG FILE TO 语
句将跟踪输出定向至路径名所指定的文件。
TRACE ON 语句开始跟踪过程中的语句和变量。

CREATE PROCEDURE items_pct(mac CHAR(3))
DEFINE tp MONEY;
DEFINE mc_tot MONEY;
DEFINE pct DECIMAL;
SET DEBUG FILE TO 'pathname';

TRACE 'begin trace';
TRACE ON;
LET tp = (SELECT SUM(total_price) FROM items);
LET mc_tot = (SELECT SUM(total_price) FROM items
WHERE manu_code = mac);
LET pct = mc_tot / tp;
IF pct > .10 THEN
RAISE EXCEPTION -745;
END IF
TRACE OFF;
END PROCEDURE;

CREATE TRIGGER items_ins
INSERT ON items
REFERENCING NEW AS post_ins
FOR EACH ROW(EXECUTE PROCEDURE items_pct (post_ins.manu_code));

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

参数说明:在任意时候,如果输入密码错误的次数达到failed_login_attempts 参数设定
的值,则当前帐户会被锁定。password_lock_time 参数设定的天数过后,帐户自动解锁。例

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1167
如,登录时输入密码失败,ALTER USER 时修改密码失败等。关于帐户自动锁定策略请参
见设置密码安全策略。
该参数属于SIGHUP 类型参数,请参考表15-1 中对应设置方法进行设置。
须知:
failed_login_attempts 和password_lock_time 必须都为正数时锁定和解锁功能才能生效。
取值范围:整型,最小值为0,最大值为1000。

0 表示自动锁定功能不生效。

正整数表示当错误密码次数达到failed_login_attempts 设定的值时,当前帐户将被
锁定。
默认值:10