openGauss学习笔记-44 openGauss 高级数据管理-存储过程

文章目录

    • [openGauss学习笔记-44 openGauss 高级数据管理-存储过程](#openGauss学习笔记-44 openGauss 高级数据管理-存储过程)
      • [44.1 语法格式](#44.1 语法格式)
      • [44.2 参数说明](#44.2 参数说明)
      • [44.3 示例](#44.3 示例)

openGauss学习笔记-44 openGauss 高级数据管理-存储过程

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

44.1 语法格式

  • 创建存储过程

    sql 复制代码
    CREATE PROCEDURE procedure_name
        [ ( {[ argname ] [ argmode ] argtype [ = expression ]}[,...]) ]
        { IS | AS } 
        BRGIN
          procedure_body
        END
    /
  • 调用存储过程

    sql 复制代码
    CALL procedure_name ( param_expr );
  • 删除存储过程

    sql 复制代码
    DROP PROCEDURE procedure_name ;

44.2 参数说明

  • procedure_name

    创建的存储过程名称。

  • argname

    参数的名称。

  • argmode

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

    • IN

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

    • OUT

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

    • INOUT

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

  • argtype

    参数的数据类型。

  • expression

    设定缺省值。

  • IS、AS

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

  • BRGIN、END

    语法格式要求,必须写。

  • procedure_body

    存储过程内容。

  • param_expr

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

44.3 示例

bash 复制代码
--创建表格
openGauss=# CREATE TABLE graderecord  
(  
  number INTEGER,  
  name CHAR(20),  
  class CHAR(20),  
  grade INTEGER
);

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

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

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

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

相关推荐
SkyWalking中文站4 小时前
SkyWalking 11 与 BanyanDB 0.11:在存储引擎内部实现 Trace 尾部采样
运维·监控·自动化运维
SkyWalking中文站4 小时前
BanyanDB 0.11.0:新特性与升级指南
数据库
姚不倒5 小时前
etcd 学习系列(二):集群架构 —— 3 节点是如何工作的
运维·架构·etcd
论文复现现场5 小时前
ComfyUI部署MiniMax H3:8G本地卡、RTX 4090和RTX 5090怎么选?
人工智能·云计算·音视频·gpu算力
pt10435 小时前
网络自动化Python课程:Cisco PyATS网络自动化测试框架
运维·自动化
₍˄·͈༝·͈˄*₎◞ ̑̑码6 小时前
MyBatis操作数据库
数据库·mybatis
Johny_Zhao6 小时前
网络安全等级保护测评实施方案
linux·网络·人工智能·网络安全·信息安全·云计算·等保测评·系统运维·itsm
小袁拒绝摆烂7 小时前
Jenkins部署经验
运维·jenkins
刚入门的大一新生7 小时前
Linux-进程控制
linux·运维·服务器·c++
上火的金鱼妹7 小时前
K8S基础组件作用和关系整理
linux·运维·服务器·kubernetes