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格…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...