首页 > 其他分享 >MogDB-openGauss存储过程的声明

MogDB-openGauss存储过程的声明

时间:2024-03-15 15:24:25浏览次数:19  
标签:存储 MogDB 参数 openGauss 过程 id OUT

MogDB/openGauss 存储过程的声明

存储过程是一组 SQL 语句和逻辑控制的集合。数据库系统需要支持创建、删除和修改存储过程的语法。存储过程相比普通的 SQL 命令,具有如下优点:

  • 创建的存储过程保存在数据库系统中,在使用时被调出并且在数据库系统本地进行编译执行,一次编译,多次执行,具有很好的执行效率。

  • 数据库系统和应用程序之间通常需要有大量的数据交互,而存储过程可以将应用的逻辑“下推”给数据库系统,降低数据的传输量。

  • 存储过程还具有过程化的控制语句,可以实现固定的业务逻辑,并且通过存储过程的封装,应用程序只需要访问存储过程即可,从而可以使部分基本表对用户透明,提高了数据库系统的安全性。

简而言之,存储过程具有简单、安全、高性能等优点。

存储过程的声明

创建一个存储过程可以通过 CREATE PROCEDURE 命令来实现,其主要形式如下:

CREATE [ OR REPLACE ] PROCEDURE 存储过程名(
    [ IN | OUT ] 参数1 数据类型,
    [ IN | OUT ] 参数2 数据类型,
    ...
)
LANGUAGE lang_name
AS
DECLARE
    变量1 数据类型,
    变量2 数据类型,
    ...
BEGIN
    存储过程程序体
END;

下面定义一个存储过程。

统计 warehouse 表中元组的数量,具体语句如下:

MogDB=# CREATE PROCEDURE warehouse_count()
LANGUAGE SQL
AS
SELECT COUNT(*)
FROM warehouse;

存储过程可以带有参数,参数的类型就是 SQL 标准中的多种类型,在向存储过程传递参数时需要保证参数类型的一致,否则存储过程就无法正常执行。

存储过程的参数有 3 种不同的输入/输出模式:IN、OUT、INOUT。

  • IN 参数是存储过程的输入参数,它将存储过程外部的值传递给存储过程使用。

  • OUT 参数是存储过程的输出参数,存储过程在执行时,会将执行的中间结果赋值给 OUT 参数,存储过程执行完毕后,外部用户可以通过 OUT 参数获得存储过程
    的执行结果

  • INOUT 参数则同时具有 IN 参数和 OUT 参数的性质,它既是存储过程的输入参数,同时在存储过程执行中也会通过 INOUT 参数将中间结果输出给外部用户

向 new_orders 基本表中插入数据。具体语句如下:

MogDB=# CCREATE PROCEDURE new_orders_insert(
    IN o_id INTEGER,
    IN d_id INTEGER,
    IN w_id INTEGER,
    )
LANGUAGE SQL
AS
INSERT INTO new_orders VALUES(o_id, d_id, w_id);

调用存储过程,具体语句如下:

MogDB=# CCALL new_orders_insert(1,1,1);

检查存储过程的效果,具体语句如下:

MogDB=# CSELECT * FROM new_orders;
no_o_id | no_d_id | no_w_id
---------+---------+---------
   1   |   1   |   1
(1 row)

标签:存储,MogDB,参数,openGauss,过程,id,OUT
From: https://www.cnblogs.com/renxyz/p/18075448

相关文章

  • MogDB openGauss如何实现事务的rollback
    MogDB/openGauss如何实现事务的rollback本文出处:https://www.modb.pro/db/113262数据库最主要的功能就是存储数据,然而我们在进行数据库操作时,却很容易发生误操作数据的情况,那么在MogDB中该如何实现误操作数据恢复呢?本文通过具体示例简要介绍如何通过回滚还原到误操作前的状......
  • MogDB openGauss数据完整性约束简介
    MogDB/openGauss数据完整性约束简介本文出处:https://www.modb.pro/db/124910创建基本表的同时,还可以指定表中数据完整性约束,例如在创建warehouse基本表时,通过分析可以得到如下结论:不同仓库必须有不同的w_id,且w_id不能为NULL。仓库必须有具体的名称,不能为NULL。仓库......
  • MogDB-openGauss触发器简介(2)
    MogDB/opengauss触发器简介(2)针对触发对象的触发事件一旦发生,就会激活触发器,触发器首先会检查触发条件,只有在满足触发条件的情况下,才会被真正地执行。其中元组级的触发器可以将更新前后的值嵌入到触发器的触发条件中。NEW.column_name:UPDATE或INSERT事件对应“新”元组,colu......
  • 聊一聊 MySQL 的 InnoDB 存储引擎以及三种日志
    楔子上一篇文章我们介绍了MySQL的基本架构,这里再来回顾一下。整个架构还是很好理解的,我们说MySQL分为Server层和存储引擎层。其中Server层包含了MySQL的大多数核心服务功能,而存储引擎层则负责提供数据的存储和读取,并且是插件式的,一个Server层支持不同的存储引擎层......
  • 【PG】ora2pg 分别导出表,索引,存储过程等
    #!/bin/bash#检查ora2pg命令是否可用command-vora2pg>/dev/null2>&1||{echo>&2"ora2pg工具未安装或未在PATH中。请先安装并配置好ora2pg工具。";exit1;}#配置文件路径ora2pg_conf="/path/to/ora2pg.conf"#导出表结构和数据echo"导出表结构和数据..."......
  • 数据在内存中的存储
    一、整数在内存中的存储1.1原码、反码、补码    整数的二进制表示方法有三种,即:原码、反码、补码。    有符号的整数,三种表示方法均有数值位和符号位两部分,其中0表示正,1表示负,最高位的一位被称作是符号位,其余的均为数值位。    正数的原码、反码、......
  • 【MySQL】 深入了解InnoDB存储引擎的限制
    目录前言1.mysql限制1.1列数限制1.2对全列索引键的限制1.3行大小限制1.4表空间大小限制1.5表数量限制2.mysql中的char与varchar2.1varchar类型的变化 2.1.1存储限制2.1.2编码长度限制2.1.3行长度限制2.2CHAR(M),VARCHAR(M)不同之处2.3VARCHAR和TEXT、BlOB类型......
  • zabbix监控MogDB-openGauss之采集prometheus数据
    zabbix监控MogDB/openGauss之采集prometheus数据本文出处:https://www.modb.pro/db/187462前言市场上比较的监控方式有两种:zabbix和prometheus架构,对于MogDB/openGauss数据库来说,已经通过grafana+prometheus+opengauss_exporter的方式完成了监控部署,如何通过zabb......
  • 配置MogDB openGauss的grafana 的dashboard
    配置MogDB/openGauss的grafana的dashboard本文出处:https://www.modb.pro/db/188684概述我们已经介绍了prometheus+grafana+opengauss_exporter完成对MogDB/openGauss数据库的监控,但这只是第一步,我们还需要通过grafana的dashboard查看各个关注的指标项,本文主要......
  • openGauss开机自启动
    openGauss开机自启动在centos7.6操作系统上设置openGauss开机自启动,我们先来了解一下自定义服务的配置文件组成部分,共分为[Unit]、[Service]、[Install]三个部分。[Unit]Description=当前服务的简单描述Documentation=服务配置文件的位置Before=在某服务之前启动Aft......