检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
当游标作为存储过程的返回值时,如果使用JDBC调用该存储过程,返回的游标将不可用。 存储过程不能和普通SQL在同一条语句中执行。 存储过程中inout类型参数必须注册出参。 创建和调用存储过程(入参为复合数据类型) 以下用例展示A兼容模式下,入参为复合数据类型的存储过程创建和调
结构如下: 声明部分:声明PL/SQL用到的变量、类型、游标、局部的存储过程和函数。 DECLARE 不涉及变量声明时声明部分可以没有。 对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。 对存储过程来说,没有DECLARE, AS相当于DECLARE。即便没有变量声明的部分,关键字AS也必须保留。
子程序 存储在数据库中的存储过程、函数、操作符和高级包等。当在数据库上建立好后,可以在其他程序中调用它们。 父主题: 声明语法
id%TYPE; my_id_copy my_id%TYPE; %ROWTYPE属性 %ROWTYPE属性主要用于对一组数据的类型声明,用于存储表中的一行数据或从游标匹配的结果。假如,需要一组数据,该组数据的字段名称与字段类型都与employee表相同。可以通过如下定义: my_employee
引用嵌套的列值时,若存在数组下标,目前仅支持在前三层列中只存在一个小括号情况,建议使用方括号[ ]引用下标; INTO/BULK COLLECT INTO 将存储过程内语句返回的值存储到变量内,BULK COLLECT INTO允许将部分或全部返回值暂存到数组内部。 示例: openGauss=# DROP TABLE
IF; RETURN; END; / CALL proc_control_structure(3); --删除存储过程 DROP PROCEDURE proc_control_structure; 父主题: 控制语句
'pi_return : %',pi_return ; END; / CALL proc_case_branch(3,0); --删除存储过程 DROP PROCEDURE proc_case_branch; 父主题: 控制语句
锁操作 GaussDB提供了多种锁模式用于控制对表中数据的并发访问。这些模式可以用在MVCC(多版本并发控制)无法给出期望行为的场合。同样,大多数GaussDB命令自动施加恰当的锁,以保证被引用的表在命令的执行过程中不会以一种不兼容的方式被删除或者修改。比如,在存在其他并发操作的时候,ALTER
PROCEDURE CALL cursor_proc2(); cursor_proc2 -------------- (1 row) --删除存储过程 DROP PROCEDURE cursor_proc2; DROP PROCEDURE DROP TABLE hr.staffs_t1;
语句中不必明确定义游标。 兼容O模式下,GUC参数behavior_compat_options为compat_cursor时,隐式游标跨存储过程有效。 属性 隐式游标属性为: SQL%FOUND布尔型属性:当最近一次读记录时成功返回,则值为TRUE。 SQL%NOTFOUND布尔型属性:与%FOUND相反。
ab2 2 3 ANONYMOUS BLOCK EXECUTE %ROWTYPE属性 %ROWTYPE属性主要用于对一组数据的类型声明,用于存储表中的一行数据或从游标匹配的结果。假如,需要一组数据,该组数据的字段名称与字段类型都与employee表相同。可以通过如下定义: my_employee
EXECUTE INTO方式赋值仅支持对第一层列赋值,且不支持二维及以上数组。 INTO/BULK COLLECT INTO 将存储过程内语句返回的值存储到变量内,BULK COLLECT INTO允许将部分或全部返回值暂存到数组内部。 支持返回空结果集。 语法格式 1 2 3 SELECT
/ CREATE PROCEDURE --调用存储过程 gaussdb=# CALL proc_while_loop(10); proc_while_loop ----------------- (1 row) --删除存储过程和表 gaussdb=# DROP PROCEDURE
INFO: pi_return : 333 pi_return ----------- 333 (1 row) --删除存储过程 gaussdb=# DROP PROCEDURE proc_case_branch; DROP PROCEDURE 父主题: 控制语句
空语句 在PL/SQL程序中,可以用NULL语句来说明“不用做任何事情”,相当于一个占位符,可以使某些语句变得有意义,提高程序的可读性。 语法 空语句的用法如下: 1 2 3 4 5 6 7 8 9 DECLARE … BEGIN … IF v_num IS
游标操作 GaussDB中游标(cursor)是系统为用户开设的一个数据缓冲区,存放着SQL语句的执行结果。每个游标区都有一个名称。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。 游标的操作主要有游标的定义、打开、获取和关闭。 完整的游标操作示例可参考显式游标。
如下: 声明部分:声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数。 DECLARE 不涉及变量声明时声明部分可以没有。 对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。 对存储过程来说,没有DECLARE, AS相当于DECLARE。即便没有变量声明的部分,关键字AS也必须保留。
%ROWTYPE属性主要用于对一组数据的类型声明,用于存储表中的一行数据,或从游标匹配的结果。假如,需要一组数据,该组数据的字段名称与字段类型都与employee表相同。可以通过如下定义: my_employee employee%ROWTYPE 多个CN的环境下,存储过程中无法声明临时表的%ROWT
空语句 在PL/SQL程序中,可以用NULL语句来说明“不用做任何事情”,相当于一个占位符,可以使某些语句变得有意义,提高程序的可读性。 语法 空语句的用法如下: 1 2 3 4 5 6 7 8 9 DECLARE … BEGIN … IF v_num IS
ab2 2 3 ANONYMOUS BLOCK EXECUTE %ROWTYPE属性 %ROWTYPE属性主要用于对一组数据的类型声明,用于存储表中的一行数据,或从游标匹配的结果。假如,我们需要一组数据,该组数据的字段名称与字段类型都与employee表相同。我们可以通过如下定义: