GaussDB(DWS)存储过程声明语法
基本结构
PL/SQL块中可以包含子块,子块可以位于PL/SQL中任何部分。PL/SQL块的结构如下:
- 声明部分:声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数。
DECLARE
不涉及变量声明时声明部分可以没有。
- 对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。
- 对存储过程来说,没有DECLARE, AS相当于DECLARE。即便没有变量声明的部分,关键字AS也必须保留。
- 执行部分:过程及SQL语句,程序的主要部分。必选。
BEGIN
- 执行异常部分:错误处理。可选。
EXCEPTION
- 结束
END; /
禁止在PL/SQL块中使用连续的Tab,连续的Tab可能会造成在使用gsql工具带“-r”参数执行PL/SQL块时出现异常。
PL/SQL块分类
PL/SQL块可以分为以下几类:
- 匿名块:动态构造,只能执行一次。语法请参考匿名块。
- 子程序:存储在数据库中的存储过程、函数和操作符及高级包等。当在数据库上建立好后,可以在其他程序中调用它们。
匿名块
匿名块(Anonymous Block)一般用于不频繁执行的脚本或不重复进行的活动。它们在一个会话中执行,并不被存储。
语法
匿名块的语法参见图1。
对以上语法图的解释如下:
- 匿名块程序实施部分,以BEGIN语句开始,以END语句停顿,以一个分号结束。输入“/”按回车执行它。
最后的结束符“/”必须独占一行,不能直接跟在END后面。
- 声明部分包括变量定义、类型、游标定义等。
- 最简单的匿名块不执行任何命令。但一定要在任意实施块里至少有一个语句,甚至是一个NULL语句。
示例
下面列举了基本的匿名块程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
--空语句块 BEGIN NULL; END; / --将信息打印到控制台: BEGIN dbms_output.put_line('hello world!'); END; / --将变量内容打印到控制台: DECLARE my_var VARCHAR2(30); BEGIN my_var :='world'; dbms_output.put_line('hello'||my_var); END; / |
子程序
存储在数据库中的存储过程、函数和操作符及高级包等。当在数据库上建立好后,可以在其他程序中调用它们。