GaussDB SQL基础语法示例-GOTO语句
目录
一、前言
二、在GaussDB数据库中的概念及语法
1、基本概念
2、语法
三、在GaussDB数据库中的基础示例和限制场景说明
1、基础示例
2、限制场景说明
四、小结
一、前言
SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。
本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。
GOTO 语句是直观基本的控制流语句,会导致控制流发生无条件更改。它用于分流至使用 SQL 过程中定义的标签的特定用户定义位置。
使用 GOTO 语句通常被视为缺乏编程技巧,并且不推荐这样做。大量使用 GOTO 会导致代码可读性不好,特别是在过程变长时。此外,因为有更好的语句可用于控制执行路径,所以 GOTO 并非必需。没有需要使用 GOTO 的特定情况;使用它通常只是为了方便。
二、在GaussDB数据库中的概念及语法
1、基本概念
GOTO语句是一种控制语句,它用于无条件地将程序的执行跳转到指定的位置。在GaussDB数据库的SQL实现中,GOTO语句通常被用于存储过程和触发器等数据库对象中,以实现复杂的逻辑控制。
GOTO语句可以实现从GOTO位置到目标语句的无条件跳转。GOTO语句会改变原本的执行逻辑,因此应该慎重使用。当执行GOTO语句时,目标Label必须是唯一的。
2、语法
BEGIN--some code hereIF condition THENGOTO label;END IF;-- some code here GOTO label;<<label>>
-- code to jump toEND;
/
三、在GaussDB数据库中的基础示例和限制场景说明
1、基础示例
创建一个函数,在满足一定条件时,通过GOTO语句进行跳转。
CREATE OR REPLACE FUNCTION proc_goto(i in integer,j in integer)
RETURNS TEXT
LANGUAGE plpgsql
AS $$BEGIN LOOPINSERT INTO test_1(id,date) VALUES(i,current_date) ;i := i+1; IF i=j THEN GOTO label; END IF; END LOOP;<<label>> INSERT INTO test_1(id,date) VALUES(i,'3000-12-31') ;RETURN 'succeed';END $$;CALL proc_goto(1,5);select * from test_1;
2、限制场景说明
GOTO使用有以下限制场景:
1、不支持有多个相同的GOTO labels目标场景,无论是否在同一个block中。
BEGINGOTO label 1; << label 1>>SELECT * FROM ...<< label 1>>UPDATE t1 SET ...
END;
2、不支持GOTO跳转到IF语句,CASE语句,LOOP语句中。
BEGINGOTO label 1; IF valid THEN<< label 1>>SELECT * FROM ...END IF;END;
3、不支持GOTO语句从一个IF子句跳转到另一个IF子句,或从一个CASE语句的WHEN子句跳转到另一个WHEN子句。
BEGIN IF valid THENGOTO label 1;SELECT * FROM ...ELSE<< label 1>>UPDATE t1 SET ...END IF;END;
4、不支持从外部块跳转到内部的BEGIN-END块,即禁止从外层跳转到内层。
BEGINGOTO label 1; BEGIN<< label 1>>UPDATE t1 SET ...END;END;
5、不支持从异常处理部分跳转到当前的BEGIN-END块。但可以跳转到上层BEGIN-END块。
BEGIN<< label 1>>UPDATE t1 SET ...EXCEPTIONWHEN condition THENGOTO label 1;END;
6、如果从GOTO到一个不包含执行语句的位置,需要添加NULL语句。
DECLAREdone BOOLEAN;
BEGINFOR i IN 1..50 LOOPIF done THENGOTO end_loop;END IF;<<end_loop>> NULL; END LOOP;
END;
/
四、小结
在本文中,我们介绍了GOTO语句在云数据库GaussDB SQL中的使用特点,通过一系列的示例,可以更好地组织代码,避免一些不必要的计算和操作,从而提高SQL语句的执行效率。 但同时需要注意的是,GOTO语句虽然可以用于实现复杂的逻辑控制,但也容易导致代码的可读性降低和维护困难。因此,在实际开发中,应该根据具体情况慎重使用GOTO语句。
——结束
相关文章:

GaussDB SQL基础语法示例-GOTO语句
目录 一、前言 二、在GaussDB数据库中的概念及语法 1、基本概念 2、语法 三、在GaussDB数据库中的基础示例和限制场景说明 1、基础示例 2、限制场景说明 四、小结 一、前言 SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、…...
ClickHouse 物化视图
ClickHouse的物化视图是一种查询结果的持久化,它确实是给我们带来了查询效率的提升。用户查起来跟表没有区别,它就是一张表,它也像是一张时刻在预计算的表,创建的过程它是用了一个特殊引擎,加上后来 as select…...

原理Redis-ZipList
ZipList 1) ZipList的组成2) ZipList的连锁更新问题3) 总结 1) ZipList的组成 ZipList 是一种特殊的“双端链表” ,由一系列特殊编码的连续内存块组成。可以在任意一端进行压入/弹出操作, 并且该操作的时间复杂度为 O(1)。 ZipListEntry: ZipList 中的Entry并不像…...
小迪安全笔记——Web架构篇语言中间件数据库系统源码获取
1、信息搜集搜集哪些东西? 架构信息收集,主要包括:操作系统、开发语言、中间件容器、数据库类型、第三方软件等; web源码信息收集,CMS开源?闭源?售卖?自主研发? 进行web…...

Linux从 全栈开发 centOS 7 到 运维
Linux从 全栈开发centOS 7 到 运维 一 Linux 入门概述1.1 操作系统1.2 Linux 简介1.3 Linux 系统组成1.4 Linux 发行版1.4 Linux 应用领域1.5 Linux vs Windows 二 环境搭建【狂神说Java】服务器购买及宝塔部署环境说明为什么程序员都需要一个自己的服务器服务器如何购买买完服…...

Harmony Ble 蓝牙App (一)扫描
Harmony Ble 蓝牙App (一)扫描 前言正文一、创建工程二、工程配置① 权限配置② Debug配置③ UI配置 三、扫描① 扫描接口② 扫描类 四、业务处理① Slice的生命周期② 蓝牙开关和动态权限请求 五、扫描设备六、显示设备① 自定义蓝牙类② 提供者③ 显示…...

录制第一个jmeter性能测试脚本2(http协议)——webtour
我们手工编写了一个测试计划,现在我们通过录制的方式来实现那个测试计划。也就是说‘’测试计划目标和上一节类似:让5个用户在2s内登录webtour,然后进入 页面进行查看。 目录 欢迎访问我的免费课程 PPT、安装包、视频应有尽有! …...

时间序列与 Statsmodels:预测所需的基本概念(1)
后文:时间序列与 statsmodels:预测所需的基本概念(2)-CSDN博客 一、说明 本博客解释了理解时间序列的基本概念:趋势、季节性、白噪声、平稳性,并使用自回归、差分和移动平均参数进行预测示例。这是理解任何…...

计算机网络(持续更新…)
文章目录 一、概述1. 计网概述⭐ 发展史⭐ 基本概念⭐ 分类⭐ 数据交换方式🥰 小练 2. 分层体系结构⭐ OSI 参考模型⭐TCP/IP 参考模型🥰 小练 二、物理层1. 物理层概述⭐ 四个特性 2. 通信基础⭐ 重点概念⭐ 极限数据传输率⭐ 信道复用技术🎉…...

BetterDisplay Pro for Mac(显示器校准软件)
BetterDisplay Pro是一款由waydabber开发的Mac平台上的显示器校准软件,可以帮助用户调整显示器的颜色和亮度,以获得更加真实、清晰和舒适的视觉体验。 以下是BetterDisplay Pro的主要特点: - 显示器校准:可以根据不同的需求和环境…...

Node.js之TCP(net)
Hi I’m Shendi Node.js之TCP(net) 最近使用Nodejs编写程序,需要用到自己编写的分布式工具,于是需要将Java版的用NodeJs重新写一遍,需要使用到TCP通信,于是在这里记录下Node.js TCP 的使用方法 依赖 需要使…...
何时使用Elasticsearch而不是MySql?
何时使用Elasticsearch而不是MySql? MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景。本文将从以下几个方面对它们进行比较和分析: 数据模型查询语言索引和搜索分布式和高可用性能和扩展性使用…...

nodejs微信小程序 +python+PHP+图书销售管理系统的设计与实现-网上书店-图书商城-计算机毕业设计
目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…...
云原生周刊:Istio 1.20.0 发布 | 2023.11.20
开源项目推荐 DevPod DevPod 是一款纯客户端工具,可在任何后端基于 devcontainer.json 创建可重现的开发人员环境。每个开发者环境都在一个容器中运行,并通过 devcontainer.json 进行指定。通过 DevPod 提供商,这些环境可以在任何后端创建&…...

Ajax基础(应用场景|jquery实现Ajax|注意事项)
文章目录 一、Ajax简介二、基于jquery实现Ajax三、使用Ajax注意的问题1.Ajax不要与form表单同时提交2.后端响应格式问题3、使用了Ajax作为请求后的注意事项 一、Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。…...

【SpringCloud】Eureka基于Ribbon负载均衡的调用链路流程分析
文章目录 前言1.调用形式2.LoadBalancerInterceptor3.负载均衡流程分析3.1 调用流程图3.2 intercept()方法3.3 execute()方法3.4 getServer()方法3.4 子类的chooseServer()方法3.5 getLoadBalancerStats().…...
Springboot和Vue+MYSQL项目(基本介绍+前后端结合初步项目)+maven+mybatis
一、基本知识 当我们谈论全栈开发时,通常指的是一个开发者能够处理整个应用程序的开发,包括前端(Front-End)和后端(Back-End)的所有层面。这三个基本的领域是: 前端开发(Front-End …...

基于单片机K型热电偶温度采集报警系统
**单片机设计介绍, 基于单片机K型热电偶温度采集报警系统 文章目录 一 概要简介系统特点系统组成工作原理应用领域 二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 # 基于单片机K型热电偶温度采集报警系统介绍 简介 该系统是基于单片…...

利用OpenCV做个熊猫表情包 二
之前写了一篇 利用OpenCV做个熊猫表情包吧_Leen的博客-CSDN博客 回想起来觉得有点太弱了,意犹未尽,每次使用需要自己去手动截取人脸,清除黑边什么的才能使用demo去合成表情,无奈之前由于安装的vs,opencv版本都比较低…...
华纳云服务器怎么清理cdn缓存?
清理 CDN(内容分发网络)缓存通常需要通过 CDN 提供商的管理界面或 API 进行操作。不同的 CDN 提供商可能有不同的方法和步骤,以下是一个通用的清理 CDN 缓存的一般步骤: 1. 登录到 CDN 提供商的管理界面: 打开你所使用的 CDN 提供商的网站。 …...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...