检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
GaussDB中游标(cursor)是系统为用户开设的一个数据缓冲区,存放着SQL语句的执行结果。每个游标区都有一个名称。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。 游标的操作主要有游标的定义、打开、获取和关闭。 完整的游标操作示例可参考显式游标。 父主题: 其他语句
SQL值的变量,在dynamic_noselect_string中存在占位符时使用,即动态SQL语句执行时,bind_argument将替换相对应的占位符。要注意的是,bind_argument只能是值、变量或表达式,不能是表名、列名和数据类型等数据库对象。如果存储过程需要通过声
define_variable:用于指定存放单行查询结果的变量。 USING IN bind_argument:用于指定存放传递给动态SQL值的变量,即在dynamic_select_string中存在占位符时使用。 USING OUT bind_argument:用于指定存放动态SQL返回值的变量。 查询语句中,into和out不能同时存在;
显式游标 显式游标主要用于对查询语句的处理,尤其是在查询结果为多条记录的情况下。 处理步骤 显式游标处理需六个PL/SQL步骤: 定义静态游标:就是定义一个游标名,以及与其相对应的SELECT语句。 定义静态游标的语法图,请参见图1。 图1 static_cursor_define::=
显式游标 显式游标主要用于对查询语句的处理,尤其是在查询结果为多条记录的情况下。 处理步骤 显式游标处理需六个PL/SQL步骤: 定义静态游标:就是定义一个游标名,以及与其相对应的SELECT语句。 定义静态游标的语法图,请参见图1。 图1 static_cursor_define::=
作,例如:GaussDB可对数值型数据进行加、减、乘、除等操作。 XML类型数据支持作为存储过程的入参、出参、自定义变量和返回值。支持自治事务的存储过程。 用户自定义子类型 父主题: 存储过程
NULL THEN NULL; -- 不需要处理任何数据。 END IF; END; / 参数说明: v_num:变量或表达式。 示例 gaussdb=# DECLARE v_num integer default NULL; BEGIN IF
数据类型转换 数据库中有些数据类型间允许进行隐式类型转换(例如赋值、函数调用的参数等)、有些数据类型间不允许进行隐式数据类型转换(例如int和复合类型),可尝试使用GaussDB提供的类型转换函数,例如CAST进行数据类型强转。 GaussDB数据库常见的隐式类型转换,请参见表1。
嵌套子程序的变量 变量类型包括:基础类型,record类型、table of类型、cursor类型、varray类型等其它PL/SQL支持的变量类型。 可访问的变量: 自身声明的变量。 上层子程序声明的变量。 变量的访问规则: 如果变量不带限定符,首先将在本程序内查找变量,如果变量名不存在,则向上层查找变量,以此类推。
(可选) 指定的栈层数,缺省为最顶层 varname OUT text 变量名 vartype OUT text 变量类型 value OUT text 变量值 package_name OUT text 变量对应的package名,非package时为空 isconst OUT boolean
(可选) 指定的栈层数,缺省为最顶层 varname OUT text 变量名 vartype OUT text 变量类型 value OUT text 变量值 package_name OUT text 变量对应的package名,非package时为空 isconst OUT boolean
debug端调试过程中,调用print_var,打印当前存储过程内变量中指定的变量名及其取值。该函数入参frameno表示查询遍历的栈层数,支持不加入该参数调用,缺省为查看最上层栈变量。 表1 print_var入参和返回值列表 名称 类型 描述 var_name IN text 变量 frameno IN integer(可选)
debug端调试过程中,调用print_var,打印当前存储过程内变量中指定的变量名及其取值。该函数入参frameno表示查询遍历的栈层数,支持不加入该参数调用,缺省为查看最上层栈变量。 表1 print_var入参和返回值列表 名称 类型 描述 var_name IN text 变量 frameno IN integer(可选)
Retry是数据库在SQL或存储过程(包含匿名块)执行失败时,在数据库内部进行重新执行的过程,以提高执行成功率和用户体验。同时也是数据库内部通过检查发生错误时的错误码及Retry相关配置,决定是否进行重试。 失败时回滚之前执行的语句,并重新执行存储过程进行Retry。 示例: 1
define_variable,用于指定存放单行查询结果的变量。 USING IN bind_argument,用于指定存放传递给动态SQL值的变量,即在dynamic_select_string中存在占位符时使用。 USING OUT bind_argument,用于指定存放动态SQL返回值的变量。 查询语句中,into和out不能同时存在;
不支持以SCHEMA.PACKAGE.CURSOR的形式引用cursor变量。 带参数的CURSOR仅支持在当前PACKAGE内打开。 不支持package变量作为函数或存储过程参数的默认值。 父主题: 存储过程
游标概述 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 当存储过程使用returns返回游标时,如果使用JDBC调用该存储过程,返回的游标将不可用,使用out出参不受影响。 在分布
CURSOR的形式引用cursor变量。 带参数的CURSOR仅支持在当前PACKAGE内打开。 不支持package变量作为函数或存储过程参数的默认值。 如果PACKAGE内的存储过程入参包含伪类型(如:anyelement),不支持调用时传入变长类型的参数。 父主题: 存储过程
| Jones (1 row) DROP FUNCTION fun_exp(); DROP TABLE mytab; 当控制到达给y赋值的地方时,会有一个division_by_zero错误失败。这个错误将被EXCEPTION子句捕获。而在RETURN语句里返回的数值将是x的增量值。
在GaussDB中,数组会自动增长,访问越界会返回一个NULL,不会报错。 在存储过程中定义的数组类型,其作用域仅在该存储过程中。 建议选择上述定义方法的一种来自定义数组类型,当同时使用两种方法定义同名的数组类型时,GaussDB会优先选择存储过程中定义的数组类型来声明数组变量。 当data_type为varchar