返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

EXECUTE IMMEDIATE
语法图请参见图18-7。
图18-7 EXECUTE IMMEDIATE dynamic_select_clause::=
using_clause 子句的语法图参见图18-8。
图18-8 using_clause::=

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
638
对以上语法格式的解释如下:

define_variable:用于指定存放单行查询结果的变量。

USING IN bind_argument :用于指定存放传递给动态SQL 值的变量,即在
dynamic_select_string 中存在占位符时使用。

USING OUT bind_argument:用于指定存放动态SQL 返回值的变量。
须知

查询语句中,into 和out 不能同时存在;

占位符命名以“:”开始,后面可跟数字、字符或字符串,与USING 子句的
bind_argument 一一对应;

bind_argument 只能是值、变量或表达式,不能是表名、列名、数据类型等数

库对象,
即不支持使用bind_argument 为动态SQL 语句传递模式对象。
如果存储过
程需要通过声明参数传递数据库对象来构造动态SQL 语句
(常见于执行DDL 语句
时),建议采用连接运算符“||”拼接dynamic_select_clause;

动态PL/SQL 块允许出现重复的占位符,即相同占位符只能与USING 子句的一个
bind_argument 按位置对应。

使用 GBASEDBTCONCSMCFG 环境变量可以指定 concsm.cfg 文件的位置
(该文件描述通
信支持模块)。

pathname 指定 concsm.cfg 文件的全路径名。
以下命令指定 concsm.cfg 文件在 /usr/myfiles 中:
setenv GBASEDBTCONCSMCFG /usr/myfiles
还可对该文件指定不同名称。以下示例在同一目录中指定 csmconfig 的文件名。
setenv GBASEDBTCONCSMCFG /usr/myfiles/csmconfig
concsm.cfg 文件的缺省位置位于 $GBASEDBTDIR/etc 中。有关通信支持模块和
concsm.cfg 文件内容的更多信息,请参阅 GBase 8s 管理员参考。

DENSE_RANK OVER 函数
语法
DENSE_RANK( ) over([PARTITION BY col_name1,col_name2,…] ORDER BY
col_name1 [ASC/DESC], col_name2 [ASC/DESC],…)
功能描述
基本功能和rank 类似,区别是如果两行得到同样的排序,则后面的序数不跳跃。
例如,两行序数为1,序列将给组中的下一行分配值2。
仅Express 引擎支持。
使用说明和使用约束同RANK() OVER()。
示例
示例1:rank,DENSE_RANK() OVER (partition by i order by j desc)
gbase> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected
gbase> CREATE TABLE t1(i int, j int);
Query OK, 0 rows affected
gbase> INSERT INTO t1 VALUES(2,1),(2,3),(2,3),(2,5),(3,2),(3,2),(3,2),(3,4),
(3,1),(3,5);
Query OK, 10 rows affected
Records: 10
Duplicates: 0
Warnings: 0
gbase> SELECT *,RANK() OVER(PARTITION BY i ORDER BY j DES
C) AS rank,DENSE_RANK() OVER (partition by i order by j desc) AS
dense_rank FROM t1;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
893
+------+------+------+------------+
| i
| j
| rank | dense_rank |
+------+------+------+------------+
|
2 |
5 |
1 |
1 |
|
2 |
3 |
2 |
2 |
|
2 |
3 |
2 |
2 |
|
2 |
1 |
4 |
3 |
|
3 |
5 |
1 |
1 |
|
3 |
4 |
2 |
2 |
|
3 |
2 |
3 |
3 |
|
3 |
2 |
3 |
3 |
|
3 |
2 |
3 |
3 |
|
3 |
1 |
6 |
4 |
+------+------+------+------------+
10 rows in set