返回首页

gbase数据、南大通用产品文档:GBase8s使用%TYPE属性

更新日期:2024年09月11日

%TYPE可以用来声明与先前声明的变量或者列具有同样数据类型的变量,而不需要知
道具体数据类型。
如果被引用的成员改变了,声明的引用成员随之改变。
referencing_item referenced_item%TYPE;
引用成员从被引用成员继承了:
l
数据类型和大小
l
约束(除了被引用衬衣是表或视图的列)
引用成员不继承别引用成员的初始值,如果引用成员被指定了NOT NULL约束,那就
必须在声明时指定初始值。
variable_name table_name.column_name%TYPE;

DECLARE
surname employees.last_name%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE('surname=' || surname);
END;

--Result:
--surname=

DECLARE
name VARCHAR(25) NOT NULL := 'Smith';
surname name%TYPE := 'Jones';
BEGIN
DBMS_OUTPUT.PUT_LINE('name=' || name);
DBMS_OUTPUT.PUT_LINE('surname=' || surname);
END;


GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 10 -

--Result:
--name=Smith
--surname=Jones

聚集函数对一组查询返回一个值。聚集函数取用依赖于 SELECT 语句的 WHERE 子句返
回的一组行的值。没有 WHERE 子句时,聚集函数取用依赖于 FROM 子句组成的所有行
的值。
不能将聚集函数用于包含下列数据类型的表达式中:

TEXT

BYTE

CLOB

BLOB

集合数据类型(LIST 、MULTISET 和 SET)

ROW 类型

不透明数据类型(支持不透明数据类型的用户定义的聚集函数除外)
聚集通常用于总结有关表中的行组的信息。
此用法在编写高级 SELECT 语句中讨论。
当将
聚集函数应用于整个表时,结果将包含总结所有选择的行的一行。
所有的 GBase 8s 数据库服务器都支持下列聚集函数。


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 85 -
AVG 函数
下列查询计算 stock 表中所有行的平均值 unit_price。
图: 查询
SELECT AVG (unit_price) FROM stock;
图: 查询结果
(avg)

$197.14
下列查询只计算 stock 表中 manu_code 为 SHM 的那些行的平均值 unit_price。
图: 查询
SELECT AVG (unit_price) FROM stock WHERE manu_code = 'SHM';
图: 查询结果
(avg)

$204.93

COUNT 函数
下列查询对 stock 表中的总行数进行计数和显示。
图: 查询
SELECT COUNT(*) FROM stock;
图: 查询结果
(count(*))

73
下列查询包含 WHERE 子句来对 stock 表中的特定行(在此示例中,
是 manu_code 为 SHM 的那些行)进行计数。
图: 查询
SELECT COUNT (*) FROM stock WHERE manu_code = 'SHM';
图: 查询结果
(count(*))

17

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 86 -
通过包含 DISTINCT 关键字(或它的同义词 UNIQUE)和列名,可以计算 stock 表中不同
制造商代码的数目。
图: 查询
SELECT COUNT (DISTINCT manu_code) FROM stock;
图: 查询结果
(count)

9

MAX 和 MIN 函数
可以在同一 SELECT 语句中组合聚集函数。例如,可以同时在选择列表中包
括 MAX 和 MIN 函数。如下所示。
图: 查询
SELECT MAX (ship_charge), MIN (ship_charge) FROM orders;
该查询查找并显示 orders 表中的最大和最小 ship_charge。
图: 查询结果
(max) (min)

$25.20 $5.00

RANGE 函数
RANGE 函数计算所选行的最大值与最小值之差。
只能将 RANGE 函数应用于数字列。下列查询查找 stock 表中商品的价格范围。
图: 查询
SELECT RANGE(unit_price) FROM stock;
图: 查询结果
(range)

955.50
对于其它聚集函数,
当查询包括 GROUP BY 子句时,RANGE 函数适用于组的行,
如下所
示。
图: 查询
SELECT RANGE(unit_price) FROM stock

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 87 -
GROUP BY manu_code;
图: 查询结果
(range)

820.20
595.50
720.00
225.00
632.50
0.00
460.00
645.90
425.00

STDEV 函数
STDEV 函数计算所选行的标准偏差。它是 VARIANCE 函数的平方根。.
可将 STDEV 函数应用于数字列。下列查找入口的标准偏差:
SELECT STDEV(age) FROM u_pop WHERE age > 21;
对于其它聚集,当查询包括 GROUP BY 子句时,STDEV 函数适用于组的行。如下所示:

SELECT STDEV(age) FROM u_pop
GROUP BY state
WHERE STDEV(age) > 21;
除非指定列中的每个值都是空值,
否则会忽略空值。
如果每个列值都是空值,
那么 STDEV 函
数对该列返回空值。有关 STDEV 函数的更多信息,请参阅《GBase 8s SQL 指南:语法》
中的表达式段。

SUM 函数
下列查询计算 1998 年 7 月 13 日交付的所有订单的总 ship_weight。
图: 查询
SELECT SUM (ship_weight) FROM orders
WHERE ship_date = '07/13/1998';
图: 查询结果
(sum)


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

VARIANCE 函数
VARIANCE 函数返回值样本的方差作为所有选择行的方差的无偏估计。它计算以下值:
(SUM(Xi**2) - (SUM(Xi)**2)/N)/(N-1)
在此示例中,Xi 是列中的每个值,N 是列中值的总数。只能将 VARIANCE 函数应用于数
字列。以下查询查找入口的标准偏差:
SELECT VARIANCE(age) FROM u_pop WHERE age > 21;
对于其它聚集,当查询包括 GROUP BY 子句时,VARIANCE 函数适用于组的行。如下所
示:
SELECT VARIANCE(age) FROM u_pop
GROUP BY birth
WHERE VARIANCE(age) > 21;
除非指定列中的每个值都是空值,否则会忽略空值。如果每个列值都是空值,那
么 VARIANCE 函数对该列返回空值。
有关 VARIANCE 函数的更多信息,
请参阅
《GBase 8s
SQL 指南:语法》中的表达式段。

将函数应用于表达式
下列查询显示如何将函数应用于算术表达式并为其结果提供显示标签:
图: 查询
SELECT MAX (res_dtime - call_dtime) maximum,
MIN (res_dtime - call_dtime) minimum,
AVG (res_dtime - call_dtime) average
FROM cust_calls;
该查询查找和显示收到和处理客户来电之间的最长、最短和平均时间(以日、小时和分钟
计)并相应地标记派生值。该查询结果显示这些时间量。
图: 查询结果
maximum minimum average

5 20:55 0 00:01 1 02:56

当 GBase 8s 产品访问环境变量时,通常下列优先级规则适用:
1. 最高优先级授予在环境 (shell) 中定义的值(通过在 shell 提示符下显式设
置该值)。
2. 第二优先级授予在用户主目录 (~/.gbasedbt) 中的专用环境配置文件中定
义的值。
3. 下一优先级授予在公共环境配置文件 ($GBASEDBTDIR/etc/gbasedbt.rc)
中定义的值。
4. 最低优先级授予缺省值(如果存在的话)。
有关 GLS 环境变量的优先级信息,请参阅《GBase 8s GLS 用户指南》。
要点: 如果在启动数据库服务器之前设置了一个或多个环境变量,而且未对客户机产
品显式设置相同的环境变量,那么客户机将采用原始设置。
环境设置
可以下列方式为命令提示符实用程序设置环境变量:
使用“控制面板”中的“系统”applet
在命令行会话中
使用系统 applet 来更改环境变量

要使用控制面板中的“系统”applet 更改环境变量
1. 从“控制面板”窗口中双击“系统”applet 图标。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 140 -

2. 单击靠近窗口顶部的“环境”选项卡。
两个列表框显示“系统环境变量”和“用户环境变量”。“系统环境变量”适
用于整个系统,而“用户环境变量”仅适用于个别用户的会话。
3.
4. 要更改现有变量的值,选择该变量。 该变量的名称及其当前值在窗口底部
的框中。
5. 要添加新变量,突出显示现有变量并在窗口底部的框中输入新的变量名。
6. 接着,在窗口底部输入新变量的值并单击设置。
7. 要删除变量,请选择该变量并单击删除。
要点:
为了使用
“系统”
applet 来更改
“系统”
环境变量,
您必须属于 Administrators
组。有关将用户指定给组的信息,请参阅操作系统文档。