plsql过程语言之uxdb与oracle语法差异
序号 | 场景 | uxdb | oracle |
1 | 在存储过程中使用goto子句 | create or replace procedure uxdbc_oracle_extension_plsql_goto_0001_procedure01(t1 int) language plsql as $$ begin if t1%2=0 then goto even_number; else goto odd_number; end if; <<even_number>> raise info 'this is a even number'; goto end_lb; <<odd_number>> raise info 'this is a odd number'; <<end_lb>> null; end; $$; call uxdbc_oracle_extension_plsql_goto_0001_procedure01(10); | create or replace procedure uxdbc_oracle_extension_plsql_goto_0001_procedure01(t1 in int) is begin if t1 mod 2 = 0 then goto even_number; else goto odd_number; end if; <<even_number>> dbms_output.put_line('this is a even number'); goto end_lb; <<odd_number>> dbms_output.put_line('this is a odd number'); <<end_lb>> null; end; / call uxdbc_oracle_extension_plsql_goto_0001_procedure01(10); |


序号 | 场景 | uxdb | oracle |
2 | 在函数中使用goto子句 | create or replace function uxdbc_oracle_extension_plsql_goto_0002_function01(t1 int) returns text language plsql returns null on null input as $$ declare p varchar(30); begin if t1%2=0 then goto even_number; else goto odd_number; end if; <<even_number>> p := cast($1 as text) || ' is a even number'; goto end_lb; <<odd_number>> p := cast($1 as text) || ' is a odd number'; <<end_lb>> return p; end; $$; select uxdbc_oracle_extension_plsql_goto_0002_function01(10); | create or replace function uxdbc_oracle_extension_plsql_goto_0002_function01(t1 in int) return varchar is p varchar(30); begin if t1 mod 2 =0 then goto even_number; else goto odd_number; end if; <<even_number>> p := t1 || ' is a even number'; goto end_lb; <<odd_number>> p := t1 || ' is a odd number'; <<end_lb>> return p; end; / select uxdbc_oracle_extension_plsql_goto_0002_function01(10) from dual; |

序号 | 场景 | uxdb | oracle |
3 | 在匿名块中使用goto子句 | declare t1 int:=7; begin if t1%2=0 then goto even_number; else goto odd_number; end if; <<even_number>> raise info 'this is a even number'; goto end_lb; <<odd_number>> raise info 'this is a odd number'; <<end_lb>> null; end; / do language plsql $$ declare t1 int:=10; begin if t1%2=0 then goto even_number; else goto odd_number; end if; <<even_number>> raise info 'this is a even number'; goto end_lb; <<odd_number>> raise info 'this is a odd number'; <<end_lb>> null; end; $$; | declare t1 int:=10; begin if t1 mod 2 =0 then goto even_number; else goto odd_number; end if; <<even_number>> dbms_output.put_line('this is a even number'); goto end_lb; <<odd_number>> dbms_output.put_line('this is a odd number'); <<end_lb>> null; end; / |


序号 | 场景 | uxdb | oracle |
4 | 标签可以出现在子块前 | declare p text; n int := 39; begin for j in 2..round(sqrt(n)) loop if n % j = 0 then p := 'is not a prime number'; goto check_odd; end if; end loop; p := ' is a prime number'; <<check_odd>> --here begin raise info '% %',n,p; if n%2=0 then p := 'is a even number'; else p := 'is a odd number'; raise info '% %',n,p; end if; end; end; / | declare p varchar(30); n int := 39; begin for j in 2..round(sqrt(n)) loop if n mod j = 0 then p := 'is not a prime number'; goto check_odd; end if; end loop; p := ' is a prime number'; <<check_odd>> --here begin dbms_output.put_line(n||p); if n mod 2=0 then p := 'is a even number'; else p := 'is a odd number'; dbms_output.put_line(n||p); end if; end; end; / |

序号 | 场景 | uxdb | oracle |
5 | 标签可以出现在if语句之前 | declare p text; n int := 39; begin for j in 2..round(sqrt(n)) loop if n % j = 0 then p := 'is not a prime number'; goto check_odd; end if; end loop; p := ' is a prime number'; raise info '% %',n,p; <<check_odd>> --here if n%2=0 then p := 'is a even number'; else p := 'is a odd number'; end if; raise info '% %',n,p; end; / | declare p varchar(30); n int := 39; begin for j in 2..round(sqrt(n)) loop if n mod j = 0 then p := 'is not a prime number'; goto check_odd; end if; end loop; p := ' is a prime number'; dbms_output.put_line(n||p); <<check_odd>> --here if n mod 2=0 then p := 'is a even number'; else p := 'is a odd number'; end if; dbms_output.put_line(n||p); end; / |


序号 | 场景 | uxdb | oracle |
6 | goto语句可以从一个子if语句跳到父if语句中 | declare i int :=7; begin if i != 0 then if i > 0 then raise info 'is zhengshu.'; goto lb; else raise info 'is fushu.'; end if; <<lb>> raise info 'outer'; else raise info 'is 0.'; end if; end; / | declare i int :=7; begin if i != 0 then if i > 0 then dbms_output.put_line('is zhengshu.'); goto lb; else dbms_output.put_line('is fushu.'); end if; <<lb>> dbms_output.put_line('outer'); else dbms_output.put_line('is 0.'); end if; end; / |


序号 | 场景 | uxdb | oracle |
7 | goto语句可以将控制转移出if判断语句 | create table uxdbc_oracle_extension_plsql_goto_0031_table01(id int, name varchar(10),job varchar(10),hiredate date); insert into uxdbc_oracle_extension_plsql_goto_0031_table01 values (120, 'Weiss','shouyin','2020-09-01'); insert into uxdbc_oracle_extension_plsql_goto_0031_table01 values (121, null,'daogou','2021-05-05'); insert into uxdbc_oracle_extension_plsql_goto_0031_table01 values (122, 'Weiss2',null,'2019-01-10'); insert into uxdbc_oracle_extension_plsql_goto_0031_table01 values (123, 'Weiss3','qingjie',null); create or replace procedure uxdbc_oracle_extension_plsql_goto_0031_procedure01 (v_id int) language plsql as $$ declare v_name varchar(10); v_job varchar(10); v_hiredate varchar(10); begin select name, job, hiredate into v_name, v_job, v_hiredate from uxdbc_oracle_extension_plsql_goto_0031_table01 where id = v_id; if v_name is null then goto invalid_emp; end if; if v_job is null then goto invalid_emp; end if; if v_hiredate is null then goto invalid_emp; end if; raise info 'this is a validated without errors.'; <<invalid_emp>> raise info 'this is not a valid employee.'; end; $$; call uxdbc_oracle_extension_plsql_goto_0031_procedure01(120); call uxdbc_oracle_extension_plsql_goto_0031_procedure01(121); | create table uxdbc_oracle_extension_plsql_goto_0031 _table01(id int, name varchar(10),job varchar(10),hiredate date); insert into uxdbc_oracle_extension_plsql_goto_0031_table01 values (120, 'Weiss','shouyin',to_date('2020-09-01','YYYY-MM-DD')); insert into uxdbc_oracle_extension_plsql_goto_0031_table01 values (121, null,'daogou',to_date('2021-05-05','YYYY-MM-DD')); insert into uxdbc_oracle_extension_plsql_goto_0031_table01 values (122, 'Weiss2',null,to_date('2019-01-10','YYYY-MM-DD')); insert into uxdbc_oracle_extension_plsql_goto_0031_table01 values (123, 'Weiss3','qingjie',null); create or replace procedure uxdbc_oracle_extension_plsql_goto_0031_procedure01 (v_id int) is v_name varchar(10); v_job varchar(10); v_hiredate varchar(10); begin select name, job, hiredate into v_name, v_job, v_hiredate from uxdbc_oracle_extension_plsql_goto_0031_table01 where id = v_id; if v_name is null then goto invalid_emp; end if; if v_job is null then goto invalid_emp; end if; if v_hiredate is null then goto invalid_emp; end if; dbms_output.put_line('this is a validated without errors.'); <<invalid_emp>> dbms_output.put_line('this is not a valid employee.'); end; / call uxdbc_oracle_extension_plsql_goto_0031_procedure01(120); call uxdbc_oracle_extension_plsql_goto_0031_procedure01(121); |


序号 | 场景 | uxdb | oracle |
8 | case语句 | declare season int; temperature int; begin season:=20; temperature:=38; case season when 10 then raise info 'spring'; when 20 then raise info 'summer'; goto temp_start; when 30 then raise info 'autumn'; when 40 then raise info 'winter'; else raise info 'is invalid season'; end case; <<temp_start>> case when temperature>30 then raise info 'so hot'; when temperature>15 then raise info 'so comfortable'; else raise info 'so cold'; end case; end; / | declare season int; temperature int; begin season:=20; temperature:=38; case season when 10 then dbms_output.put_line('spring'); when 20 then dbms_output.put_line('summer'); goto temp_start; when 30 then dbms_output.put_line('autumn'); when 40 then dbms_output.put_line('winter'); else dbms_output.put_line('is invalid season'); end case; <<temp_start>> case when temperature>30 then dbms_output.put_line('so hot'); when temperature>15 then dbms_output.put_line('so comfortable'); else dbms_output.put_line('so cold'); end case; end; / |


序号 | 场景 | uxdb | oracle |
9 | goto语句可以从exception中跳转到父块中 | declare i int :=0; begin <<LB1>> i := i + 1; raise info '%',i; begin <<LB2>> if i =1 then raise exception numeric_value_out_of_range; else raise exception division_by_zero; end if; exception when numeric_value_out_of_range then goto LB1; when division_by_zero then raise info 'division_by_zero'; when others then raise info 'error'; end; end; / | declare i int :=0; numeric_value_out_of_range exception; division_by_zero exception; begin <<LB1>> i := i + 1; dbms_output.put_line(i); begin <<LB2>> if i =1 then raise numeric_value_out_of_range; else raise division_by_zero; end if; exception when numeric_value_out_of_range then goto LB1; when division_by_zero then dbms_output.put_line('division_by_zero'); when others then dbms_output.put_line('error'); end; end; / |


序号 | 场景 | uxdb | oracle |
10 | goto语句在内外循环之间跳转,最后跳出嵌套循环 | declare s int := 0; i int := 0; j int; begin <<outer_loop>> loop i := i + 1; j := 0; <<inner_loop>> loop j := j + 1; s := s + i * j; if j<=5 then goto inner_loop; elsif (i * j) <= 15 then goto outer_loop; else goto end_loop; end if; end loop inner_loop; end loop outer_loop; <<end_loop>> raise info 'end_loop'; raise info 'The sum of products equals:% ',s; end; / | declare s int := 0; i int := 0; j int; begin <<outer_loop>> loop i := i + 1; j := 0; <<inner_loop>> loop j := j + 1; s := s + i * j; if j<=5 then goto inner_loop; elsif (i * j) <= 15 then goto outer_loop; else goto end_loop; end if; end loop inner_loop; end loop outer_loop; <<end_loop>> dbms_output.put_line('end_loop'); dbms_output.put_line('The sum of products equals: '||s); end; / |


序号 | 场景 | uxdb | oracle |
11 | 如果goto语句过早地退出游标for loop语句,游标将关闭 | create table uxdbc_oracle_extension_plsql_goto_0047_table01(id int, name varchar(10),job varchar(10)); insert into uxdbc_oracle_extension_plsql_goto_0047_table01 values (120, 'Weiss','shouyin'); insert into uxdbc_oracle_extension_plsql_goto_0047_table01 values (121, 'Weiss1','daogou'); insert into uxdbc_oracle_extension_plsql_goto_0047_table01 values (122, 'Weiss2','kuaiji'); insert into uxdbc_oracle_extension_plsql_goto_0047_table01 values (123, 'Weiss3','qingjie'); declare p varchar(10); c cursor for select id,name,job from uxdbc_oracle_extension_plsql_goto_0047_table01; begin for v in c loop raise info '%---%---%', v.id,v.name,v.job; if v.id=120 then goto end_loop; end if; end loop; <<end_loop>> raise info 'end_loop,cursor close'; end; / | create table uxdbc_oracle_extension_plsql_goto_0047_table01(id int, name varchar(10),job varchar(10)); insert into uxdbc_oracle_extension_plsql_goto_0047_table01 values (120, 'Weiss','shouyin'); insert into uxdbc_oracle_extension_plsql_goto_0047_table01 values (121, 'Weiss1','daogou'); insert into uxdbc_oracle_extension_plsql_goto_0047_table01 values (122, 'Weiss2','kuaiji'); insert into uxdbc_oracle_extension_plsql_goto_0047_table01 values (123, 'Weiss3','qingjie'); declare p varchar(10); v_id int; v_name varchar(10); v_job varchar(10); cursor c is select id,name,job from uxdbc_oracle_extension_plsql_goto_0047_table01; begin open c; fetch c into v_id,v_name,v_job; dbms_output.put_line(v_id||'---'||v_name||'---'||v_job); if v_id=120 then goto end_loop; end if; <<end_loop>> close c; dbms_output.put_line('end_loop,cursor close'); end; / |


序号 | 场景 | uxdb | oracle |
12 | 函数递归调用 | create or replace function uxdbc_oracle_extension_plsql_goto_0053_function01(x number) returns number language plsql as $$ declare f number; begin if x=0 then f := 1; else goto lb_digui; end if; <<lb_digui>> f := x * uxdbc_oracle_extension_plsql_goto_0053_function01(x-1); return f; end; $$; select uxdbc_oracle_extension_plsql_goto_0053_function01(5); | create or replace function uxdbc_oracle_extension_plsql_goto_0053_function01(x number) return number is f number; begin if x=0 then f := 1; else goto lb_digui; end if; <<lb_digui>> f := x * uxdbc_oracle_extension_plsql_goto_0053_function01(x-1); return f; end; / select uxdbc_oracle_extension_plsql_goto_0053_function01(5) from dual; |
相关文章:

plsql过程语言之uxdb与oracle语法差异
序号场景uxdboracle1在存储过程中使用goto子句create or replace procedure uxdbc_oracle_extension_plsql_goto_0001_procedure01(t1 int) language plsql as $$ begin if t1%20 then goto even_number; else goto odd_number; end if; <<even_number>> raise…...

file_get_contents 打开本地文件报错: failed to open stream: No such file or directory
php 使用file_get_contents时报错 failed to open stream: No such file or directory (打开流失败,没有这样的文件或目录) 1. 首先确保文件路径没问题 最好是直接复制一下文件的路径 2. windows电脑可以右键该文件 → 属性→安全 →对象名称 选中后复制一下 3. 然后…...

Candence allegro 创建等长的方法
随着源同步时序电路的发展,越来越多的并行总线开始采用这种时序控制电路,最典型的代表当属目前炙手可热的DDRx系列。下图这种点到点结构的同步信号,对于攻城狮来说,设置等长约束就非常easy了图片。 But,对于有4、6、8、、、等多颗DDR芯片的ACC同步信号来说,要设置等长约束…...
使用Python批量修改文件名称
下载了一些图片,想要更改其文件的名称。 试了许多方法,都不太理想。 于是想到了使用Python来实现。 需要用到的模块及函数: import osrename() 函数用于改变文件或文件夹的名称。它接受两个参数:原文件名和新文件名。 os.rena…...
【跟我一起读《视觉惯性SLAM理论与源码解析》】第八章 ORB-SLAM2中的特征匹配
特征匹配在ORB-SLAM2中是很重要的内容,函数有多次重载,一般而言分为以下 单目初始化下的特征匹配通过词袋进行特征匹配通过地图点投影进行特征匹配通过Sim(3)变化进行特征匹配 在单目初始化下的特征匹配是参考帧和当前帧之间的特…...

【Leedcode】数据结构中链表必备的面试题(第四期)
【Leedcode】数据结构中链表必备的面试题(第四期) 文章目录【Leedcode】数据结构中链表必备的面试题(第四期)1.题目2.思路图解(1)思路一(2)思路二3.源代码总结1.题目 相交链表: 如下(示例)&…...

【2023】助力Android金三银四面试
前言 新气象,新生机。在2023年的Android开发行业中,又有那些新的面试题出现呢?对于Android面试官的拷问,我们又如何正确去解答?万变不离其宗,其实只要Android的技术层面没变化,面试题也就是差不…...

Leetcode.1801 积压订单中的订单总数
题目链接 Leetcode.1801 积压订单中的订单总数 Rating : 1711 题目描述 给你一个二维整数数组 orders,其中每个 orders[i] [pricei, amounti, orderTypei]表示有 amounti笔类型为 orderTypei、价格为 pricei的订单。 订单类型 orderTypei 可以分为两种…...

红帽Linux技术-cp命令
cp是一个复制文件或者目录的命令,其作用是将一个或多个文件或目录从源位置复制到目标位置。 格式:cp [选项] 源文件或目录 目标文件或目录 常用选项: -r:复制目录及其子目录下的所有文件和目录; -p:保留…...

代码随想录算法训练营day41 | 动态规划 01背包问题基础 01背包问题之滚动数组
01背包问题基础 问题描述 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 举个栗子 背包最大重量为4。 物品为: 重量价值…...

MyBatis学习笔记(三) —— MyBatis核心配置文件详解
3、核心配置文件详解 id是唯一标识,不能重复,但是在真正开发过程中,不可能一个项目中同时使用两个环境,肯定会使用其中的某一个,这时候它的default就比较重要了。 default是设置我们当前使用的默认环境的id <?x…...

使用GDAL进行坐标转换
1、地理坐标系与投影坐标系空间参考中主要包含大地水准面、地球椭球体、投影坐标系等几部分内容。地图投影就是把地球表面的任意点,利用一定数学法则,转换到地图平面上的理论和方法,一般有两种坐标系来进行表示,分别是地理坐标系和…...

日常编程中和日期相关的代码和bug
本文主要是Java中和日期时间相隔的几个常用代码函数代码,做了总结,希望在日常编码中,可以帮到大家。 1.计算闰年 记住一个短语,“四年一润,百年不闰,四百再润”,不管换啥语言,相信…...
ATT与Intel汇编语法区别
寄存器、变量(常量)与立即数 在Intel汇编中,无论是寄存器、变量(常量)还是立即数,都是直接使用的,例如下列例子中分别加载一个变量(常量)与立即数到寄存器中:…...

Spring Cloud Alibaba全家桶(一)——Spring Cloud Alibaba介绍
前言 本文为 Spring Cloud Alibaba介绍 相关知识,下边将对微服务介绍(包括:系统架构演变、微服务架构介绍、常见微服务架构),Spring Cloud Alibaba介绍(包括:Spring Cloud Alibaba 的定位、Spri…...

2023年网红营销10大趋势解读:品牌出海必看
前不久influencermarketinghub发布了《2023年影响者营销基准报告》,报告总结了3500多家营销机构、品牌和其他相关专业人士对当前网红营销现状的看法,以及预测了未来网红营销的一个发展趋势。本期Nox聚星就带领大家详细解读关于2023年网红营销的10大趋势。…...

Java学习笔记 --- 正则表达式
一、体验正则表达式 package com.javase.regexp;import java.util.regex.Matcher; import java.util.regex.Pattern;/*** 体验正则表达式,给文本处理带来哪些便利*/ public class Regexp_ {public static void main(String[] args) {//假设,编写了爬虫&…...

【基础算法】字符串哈希
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...
unity 多个模型或物体无限循环拖拽 类似无限列表循环
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ModelAnimal : MonoBehaviour { //需滑动的物体 public GameObject m_objA; //音乐 public GameObject m_objB; //电话 public GameObject m_objC; //导航 public GameObject m…...

GroupDocs.Merger for Java
GroupDocs.Merger for Java GroupDocs.Merger for Java是一个文档操作API,可帮助您合并、拆分、交换或删除文档页面。API通过启用或禁用密码提供保护,并允许开发人员加入PDF、Microsoft Word、Excel和Powerpoint文档。 支持的文件格式 Microsoft Office格…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...