首页 > 其他分享 >openGauss学习笔记-44 openGauss 高级数据管理-存储过程

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

时间:2023-08-19 12:36:07浏览次数:42  
标签:存储 name 44 数据管理 参数 openGauss 过程 procedure

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

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

44.1 语法格式

  • 创建存储过程

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

    CALL procedure_name ( param_expr );
    
  • 删除存储过程

    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 示例

--创建表格
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;

标签:存储,name,44,数据管理,参数,openGauss,过程,procedure
From: https://blog.51cto.com/shuchaoyang/7148092

相关文章

  • 记录Python调用企业微信报错"errcode":44004,"errmsg":"Warning: wrong json format.
    1.通过单独的文件调用接口发送消息无异常;2.通过嵌套调用接口报错:"errcode":44004,"errmsg":"Warning:wrongjsonformat.;3.检查json文本格式无异常;4.怀疑json文本赋值有问题,增加trycache捕获,没有报错,但是可以正常调用接口!!5.打印json文本,比对trycatch的区别,发现多了个空格,依葫......
  • openGauss学习笔记-43 openGauss 高级数据管理-事件触发器
    openGauss学习笔记-43openGauss高级数据管理-事件触发器触发器会在指定的ddl事件发生时自动执行函数。目前事件触发器仅在PG兼容模式下可用。43.1语法格式创建事件触发器。CREATEEVENTTRIGGERnameONevent[WHENfilter_variableIN(filter_value[,...])......
  • nacos权限绕过漏洞(CVE-2021-29441)修复过程
    1、开启服务身份识别功能修改nacos的application.properties配置文件nacos.core.auth.enabled=true,2、重启nacos进入nacos下的bin目录单机模式shstartup.sh-mstandalone集群shstartup.shNacos3、注册及配置中心开启权限认证,所有服务都要改重新发版......
  • openGauss学习笔记-42 openGauss 高级数据管理-触发器
    openGauss学习笔记-42openGauss高级数据管理-触发器触发器会在指定的数据库事件发生时自动执行函数。42.1语法格式创建触发器CREATETRIGGERtrigger_name{BEFORE|AFTER|INSTEADOF}{event[OR...]}ONtable_name[FOR[EACH]{ROW|STATEMENT......
  • 介绍一个工具,可快速自定义各种管理功能,包括数据管理和流程审批
    朋友找到一个叫蓝点通用管理系统的软件,真是太牛B了,普通人都可以三分钟入门,非常方便地自己定制需要的管理功能,像什么人事管理、订单管理、进销存管理、客户管理都是简简单单就可以搞定,并且随时可以调整或扩展管理功能。也可以导入官方提供的或别人发的模板,直接用! 还需要买什么......
  • Qt for ARM_Linux环境搭建-Qt5.7+iTop4412嵌入式平台移植
    原文:https://blog.csdn.net/hechao3225/article/details/52981148经过为期3天的编译、移植,终于将Qt5.7成功移植到iTop4412开发板,板载exynos4412处理器,基于ARMCortex-A9内核。因此,本篇教程以iTop4412示例,适用于Qt5.7在ARM_Linux平台上的移植。---------------------------------......
  • CF1844G Tree Weights
    题面传送门这个真的很容易想到吗?首先定\(1\)为根,设每个点的深度是\(d_i\),则两个点之间的距离是\(d_{i}+d_{i+1}-2d_{LCA(i,i+1)}\)。题目中相当于给出了\(n-1\)个方程和\(n-1\)个限制,要解出一个\(n-1\)元的方程。因为限制是从\(1\ton-1\)给出的,所以不可能包含,因此......
  • YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
    YUV模型是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间,常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,其中比较常见的YUV420分为两种:YUV420P和YUV420SP。我们在android平台下使用相机默认图像格式是NV21属......
  • CF446B DZY Loves Modification
    题目大意给出一个\(n\timesm\)的矩阵,并进行\(k\)次操作,每次操作将矩阵的一行或一列的所有元素的值减\(p\),得到的分数为这次修改之前这一列或一行的元素和,求分数最大值。思路先说一下假贪心为什么是错的。有一个很显然的贪心思路,分别用两个堆分别维护行与列的和,每次在两......
  • openGauss学习笔记-40 openGauss 高级数据管理-锁
    openGauss学习笔记-40openGauss高级数据管理-锁如果需要保持数据库数据的一致性,可以使用LOCKTABLE来阻止其他用户修改表。例如,一个应用需要保证表中的数据在事务的运行过程中不被修改。为实现这个目的,则可以对表使用进行锁定。这样将防止数据不被并发修改。LOCKTABLE只在一......