检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
数据类型是一组值的集合以及定义在这个值集上的一组操作。GaussDB数据库是由表的集合组成的,而各表中的列定义了该表,每一列都属于一种数据类型,GaussDB根据数据类型有相应函数对其内容进行操作,例如GaussDB可对数值型数据进行加、减、乘、除操作。 父主题: 存储过程
动态语句 执行动态查询语句 执行动态非查询语句 动态调用存储过程 动态调用匿名块 父主题: 存储过程
子程序 存储在数据库中的存储过程、函数和操作符及高级包等。当在数据库上建立好后,可以在其他程序中调用它们。 父主题: 声明语法
定义动态游标的语法图,请参见图3和图4。 图3 cursor_typename::= GaussDB支持sys_refcursor动态游标类型,函数或存储过程可以通过sys_refcursor参数传入或传出游标结果集合,函数也可以通过返回sys_refcursor来返回游标结果集合。 图4 d
salary); END; / --调用存储过程 openGauss=# CALL dynamic_proc(); --删除存储过程 openGauss=# DROP PROCEDURE dynamic_proc; -- 清除当前数据库模式 openGauss=# SET CURRENT_SCHEMA
salary); END; / --调用存储过程 openGauss=# CALL dynamic_proc(); --删除存储过程 openGauss=# DROP PROCEDURE dynamic_proc; -- 清除当前数据库模式 openGauss=# SET CURRENT_SCHEMA
上的一组操作。GaussDB数据库是由表的集合组成的,而各表中的列定义了该表,每一列都属于一种数据类型,GaussDB根据数据类型有相应函数对其内容进行操作,例如:GaussDB可对数值型数据进行加、减、乘、除等操作。 XML类型数据支持作为存储过程的入参、出参、自定义变量和返回值。支持自治事务的存储过程。
空语句 在PL/SQL程序中,可以用NULL语句来说明“不用做任何事情”,相当于一个占位符,可以使某些语句变得有意义,提高程序的可读性。 语法 空语句的用法如下: 1 2 3 4 5 6 7 8 9 DECLARE … BEGIN … IF v_num IS
其他语句 锁操作 游标操作 父主题: 存储过程
声明语法 基本结构 匿名块 子程序 父主题: 存储过程
控制语句 返回语句 条件语句 循环语句 分支语句 空语句 错误捕获语句 GOTO语句 父主题: 存储过程
/ CALL proc_cursor3(); proc_cursor3 -------------- (1 row) --删除存储过程和临时表 DROP PROCEDURE proc_cursor3; DROP TABLE hr.staffs_t1; DROP TABLE
INFO: pi_return : 333 pi_return ----------- 333 (1 row) --删除存储过程 gaussdb=# DROP PROCEDURE proc_case_branch; DROP PROCEDURE 父主题: 控制语句
失效重编译 失效重编译提供一次性入库、失效重编译和级联失效功能。 一次性入库:新建存储过程、函数和PACKAGE使用未定义的对象。例如表、函数或类型不存在,可新建成功,打印告警。系统表pg_object对应的valid字段为false。 失效重编译功能:当未定义的对象都存在时,运行失效重编译高级包pkg_util
在分布式下,仅支持在ORA兼容性数据库中使用PACKAGE。 在分布式下,当SQL语句中含有package内的变量、package内的函数时,不支持下推。 不支持package变量作为函数或存储过程参数的默认值。 如果PACKAGE内的存储过程入参包含伪类型(如:anyelem
异常。 分类 PL/SQL块可以分为以下几类: 匿名块:动态构造,只能执行一次。语法请参考图1。 子程序:存储在数据库中的存储过程、函数、操作符和高级包等。当在数据库上建立好后,可以在其他程序中调用它们。 父主题: 声明语法
package package是一组相关存储过程、函数、变量、常量、游标等PL/SQL程序的组合,具有面向对象的特点,可以对PL/SQL程序设计元素进行封装。package中的函数具有统一性,创建、删除、修改都统一进行。 package包含包头(Package Specification)和Package
--调用函数 CALL proc_forall(); --查询存储过程调用结果 SELECT * FROM hdfs_t1 WHERE title BETWEEN 100 AND 120; --删除存储过程和表 DROP PROCEDURE proc_forall; DROP
PROCEDURE --调用存储过程 gaussdb=# CALL proc_for_loop_query(); pg_default pg_global proc_for_loop_query --------------------- (1 row) --删除存储过程 gaussdb=#
bind_argument只能是值、变量或表达式,不能是表名、列名、数据类型等数据库对象,即不支持使用bind_argument为动态SQL语句传递模式对象。如果存储过程需要通过声明参数传递数据库对象来构造动态SQL语句(常见于执行DDL语句时),建议采用连接运算符“||”拼接