存储过程

存储过程是能够完成特定功能的SQL语句集。用户可以进行反复调用,从而减少SQL语句的重复编写数量,提高工作效率。

语法格式

  • 创建存储过程

1. CREATE PROCEDURE procedure_name 2. [ ( {[ argname ] [ argmode ] argtype [ = expression ]}[,...]) ] 3. { IS | AS } 4. BRGIN 5. procedure_body 6. END 7. / - 调用存储过程

1. CALL procedure_name ( param_expr ); - 删除存储过程

1. DROP PROCEDURE procedure_name ;

参数说明

  • procedure_name

创建的存储过程名称。 - argname

参数的名称。 - argmode

参数的模式。取值范围: IN,OUT,INOUT或VARIADIC。VARIADIC用于声明数组类型的参数。缺省值是IN。

  • IN

    输入参数。表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回。 - OUT

    输出参数。该值可在存储过程内部被改变,并可返回 - INOUT

    输入输出参数。调用时指定,并且可被改变和返回 - argtype

参数的数据类型。 - expression

设定缺省值。 - IS、AS

语法格式要求,必须写其中一个。两个相同。 - BRGIN、END

语法格式要求,必须写。 - procedure_body

存储过程内容。 - param_expr

参数列表。参数间用符号“,”隔开;参数名和参数值用符号 “:=”或者“=>”隔开。

示例

1. --创建表格
2. openGauss=# CREATE TABLE graderecord
3. (
4. number INTEGER,
5. name CHAR(20),
6. class CHAR(20),
7. grade INTEGER
8. );

10. --定义存储过程
11. openGauss=# CREATE PROCEDURE insert_data  (param1 INT = 0, param2 CHAR(20),param3 CHAR(20),param4 INT = 0 )
12. IS
13. BEGIN
14. INSERT INTO graderecord VALUES(param1,param2,param3,param4);
15. END;
16. /

19. --调用存储过程
20. openGauss=# CALL  insert_data(param1:=210101,param2:='Alan',param3:='21.01',param4:=92);

22. --删除存储过程
23. openGauss=# DROP PROCEDURE insert_data;