返回首页

gbase数据、南大通用产品文档:GBase8sSELECT 语句中的 SPL 例程

更新日期:2024年09月11日

本章前面的示例显示由列名、运算符和 SQL 函数组成的 SELECT 语句表达式。本章提供
了包含 SPL 例程调用的表达式。
SPL 例程包含特定的存储过程语言
(SPL)
语句和 SQL 语句。
有关 SPL 例程的更多信息,
请参阅创建和使用 SPL 例程。
GBase 8s 允许用 C 和 Java™ 编写外部例程。有关更多信息,请参阅《GBase 8s 用户定义
的例程和数据类型开发者指南》 。
当您在投影列表中包含 SPL 例程表达式时,该 SPL 例程必须是返回单个值(一行一列)
的例程。例如:仅当 test_func() 返回单个值时,以下语句才有效:
SELECT col_a, test_func(col_b) FROM tab1
WHERE col_c = "Davis";
当您在 SELECT 语句的 Projection 子句中包含 SPL 例程表达式时,该 SPL 例程必须是
返回单个值(一行一列)的例程。例如:仅当 test_func() 返回单个值时,数据库服务器返
回一个错误消息。returns more than one value, the database server returns an error message.
SPL 例程通过允许您对选择的每行执行子查询来扩展可用函数的范围。
例如,假设您现有客户号、客户的姓和客户已下订单数的列表。下列查询查询了检索此信
息的一种方法。customer 表具有 customer_num 和lname 列,但没有每个客户已下订单数的
记录。可以编写 get_orders 例程,该例程查询每个 customer_num 的 orders 表并返回相应订
单的数目(标记为 n_orders)。
图: 查询

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

SELECT customer_num, lname, get_orders(customer_num) n_orders
FROM customer;
该结果显示了此 SPL 例程的输出。
图: 查询结果
customer_num lname n_orders

101 Pauli 1
102 Sadler 9
103 Currie 9
104 Higgins 4

123 Hanlon 1
124 Putnum 1
125 Henry 0
126 Neelie 1
127 Satifer 1
128 Lessor 0
使用 SPL 例程来封装查询中经常执行的操作。例如:以下查询中的条件包括例
程 conv_price,该例程将库存商品的单击转换为不同的货币并添加任何进口关税。
图: 查询
SELECT stock_num, manu_code, description FROM stock
WHERE conv_price(unit_price, ex_rate = 1.50,
tariff = 50.00) < 1000;

取值:[0|1]
默认值:0
说明:条件下推,是否下推条件中的常量条件到joinstep 中。默认关闭。
修改方式:
可使用set 语句修改值也可在配置文件中修改值。
适用于session、
global

GBase 8a MPP Cluster 参数手册
文档版本2022-06-07
南大通用数据技术股份有限公司
56
范围均可。

GLOBAL_STATIO_ALL_TABLES 视图将包含各节点的数据库中每个表(包括TOAST
表)的I/O 的统计。
名称
类型
描述
node_name
name
数据库进程名称。
relid
oid
表OID。
schemaname
name
该表模式名。
relname
name
表名。
heap_blks_read
bigint
从该表中读取的磁盘块数。
heap_blks_hit
bigint
此表缓存命中数。
idx_blks_read
bigint
从表中所有索引读取的磁盘块数。
idx_blks_hit
bigint
表中所有索引命中缓存数。
toast_blks_read
bigint
此表的TOAST 表读取的磁盘块数(如果存在)。
toast_blks_hit
bigint
此表的TOAST 表命中缓冲区数(如果存在)。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1052
名称
类型
描述
tidx_blks_read
bigint
此表的TOAST 表索引读取的磁盘块数(如果存在)。
tidx_blks_hit
bigint
此表的TOAST 表索引命中缓冲区数(如果存在)。