检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
CALL proc_control_structure(3); --删除存储过程 DROP PROCEDURE proc_control_structure; 父主题: GaussDB(DWS)存储过程控制语句
游标概述 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 当游标作为存储过程的返回值时,如果使用JDBC调用该存储过程,返回的游标将不可用。 游标的使用分为显式游标和隐式游标。对于不同的SQ
中有效,类型和select_statement的查询结果类型一致。loop_name的取值就是select_statement的查询结果。 游标的属性中%FOUND、%NOTFOUND、%ROWCOUNT在GaussDB(DWS)数据库中都是访问同一个内部变量,事务和匿名块不支持多个游标同时访问。
GOTO语句会改变原本的执行逻辑,因此应该慎重使用,或者也可以使用EXCEPTION处理特殊场景。当执行GOTO语句时,目标Label必须是唯一的。 语法 label declaration ::= goto statement ::= 示例 1 2 3 4 5 6
W类型)。 RAW类型的外部表现形式是十六进制,内部存储形式是二进制。例如一个RAW类型的数据11001011的表现形式为‘CB’,即在实际的类型转换中输入的是‘CB’。 UTL_RAW.CAST_FROM_BINARY_INTEGER 存储过程CAST_FROM_BINARY_
W类型)。 RAW类型的外部表现形式是十六进制,内部存储形式是二进制。例如一个RAW类型的数据11001011的表现形式为‘CB’,即在实际的类型转换中输入的是‘CB’。 UTL_RAW.CAST_FROM_BINARY_INTEGER 存储过程CAST_FROM_BINARY_
中有效,类型和select_statement的查询结果类型一致。loop_name的取值就是select_statement的查询结果。 游标的属性中%FOUND、%NOTFOUND、%ROWCOUNT在GaussDB(DWS)数据库中都是访问同一个内部变量,事务和匿名块不支持多个游标同时访问。
GaussDB(DWS)存储过程数据类型转换 数据库中允许有些数据类型进行隐式类型转换(赋值、函数调用的参数等),有些数据类型间不允许进行隐式数据类型转换,可尝试使用GaussDB(DWS)提供的类型转换函数,例如CAST进行数据类型强转。 GaussDB(DWS)数据库常见的隐式类型转换,请参见表1。
PEN FOR动态绑定SELECT语句。 定义动态游标的语法图,请参见图2和图3。 图2 cursor_typename::= GaussDB(DWS)支持sys_refcursor动态游标类型,函数或存储过程可以通过sys_refcursor参数传入或传出游标结果集合,函数也可
GaussDB(DWS)存储过程数据类型转换 数据库中允许有些数据类型进行隐式类型转换(赋值、函数调用的参数等),有些数据类型间不允许进行隐式数据类型转换,可尝试使用GaussDB(DWS)提供的类型转换函数,例如CAST进行数据类型强转。 GaussDB(DWS)数据库常见的隐式类型转换,请参见表1。
将要读取子串的LOB描述符,对于BLOB类型的返回值是读取的字节个数,对于CLOB类型的返回值是字符个数。 offset 要读取的字节数或者字符数量。 buffer 从开始位置偏移的字符数或者字节数量。 DBMS_LOB.TRIM 这个存储过程用于截断指定长度的LOB,执行完这个存储过程会将LOB的长度设置
指定随机数大小的上边界,生成的随机数小于high。 实际上,只要求这里的参数类型是NUMERIC即可,对于左右边界的大小并没有要求。 示例 生成0到1之间的随机数: 1 SELECT DBMS_RANDOM.VALUE(0,1); 对于指定范围内的整数,要指定参数low和high,并从结果中截取较小的数(最大值不能
要执行的SQL语句。支持一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。 next_date timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 interval text IN 是 用来计算下次作业运行时间的
将要读取子串的LOB描述符,对于BLOB类型的返回值是读取的字节个数,对于CLOB类型的返回值是字符个数。 offset 要读取的字节数或者字符数量。 buffer 从开始位置偏移的字符数或者字节数量。 DBMS_LOB.TRIM 这个存储过程用于截断指定长度的LOB,执行完这个存储过程会将LOB的长度设置
设置一个随机数的种子。 DBMS_RANDOM.VALUE 生成一个大小介于指定的low及high之间的随机数。 DBMS_RANDOM.SEED 存储过程SEED用于设置一个随机数的种子。DBMS_RANDOM.SEED函数原型为: 1 DBMS_RANDOM.SEED (seed IN
CLOSE_CURSOR 该函数用来关闭一个游标,是dbms_sql各项操作的结束。如果在存储过程结束时没有调用该函数,则该游标占用的内存仍然会保存,因此关闭游标非常重要。由于异常情况的发生会中途退出存储过程,导致游标未能关闭,因此建议存储过程中有异常处理,将该接口包含在内。 DBMS_SQL
导入过程存储倾斜即时检测 导入过程中对DN导入行数进行统计,导入完成后计算倾斜率,超过一定阈值时,立即进行告警。倾斜率通过(DN导入行数最大值-DN导入行数最小值)/导入总行数计算。目前,只支持INSERT和COPY导入。 必须设置enable_stream_operator=o
选择GaussDB(DWS)表存储模型 GaussDB(DWS)支持行列混合存储。当创建一个表时,可以选择表的存储格式为行存储或列存储。 行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。默认情况下,创建的表为行存储。行存储和列存储的差异请参见图1。 图1 行存储和列存储的差异
间结果集转储的表,一定要分析清楚,使用合适的表存储类型。 优化前 某局点测试过程遇到如下的执行计划,客户希望将性能提升至3s内返回结果。 优化后 经过分析发现计划走了行引擎。根本原因是:临时计划表input_acct_id_tbl和中间结果转储表row_unlogged_table使用了行存表。
选择GaussDB(DWS)表存储模型 GaussDB(DWS)支持行列混合存储。当创建一个表时,可以选择表的存储格式为行存储或列存储。 行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。默认情况下,创建的表为行存储。行存储和列存储的差异请参见图1。 图1 行存储和列存储的差异