Oracle 遍历变量游标
背景
由于我们的数据库系统中的游标特别多,DBA让我们优化,减少游标的使用。
- 电脑系统:windows
- 数据库:Oracle
- 数据库图形化界面工具:Toad,DBeaver(我測試的時候用的)
- 记录日期:2023-09-04
具体实现
在我目前所了解到的数据库中能够实现遍历的有游标(CURSOR)、FOR循环两种方式,不过都要跟loop...end loop;联合使用。
我这里都用了匿名函数,这些都是可以直接执行的,DBeaver可通過【Ctrl+Shift+O 或者,您可以通过单击“查看服务器输出”】
游标
- 优点
- 可随时打开关闭使用,可全局可局部
- 缺点
- 查询了多少变量,就要承接多少
-- 這是一個匿名循環,可以直接執行DECLAREvar_text VARCHAR(100);var_value1 VARCHAR(100);var_value2 VARCHAR(100);CURSOR GET_VALUE ISSELECT 'value1', 'value2' FROM dualUNION ALLSELECT 'value11', 'value22' FROM dual;BEGINOPEN GET_VALUE;DBMS_OUTPUT.PUT_LINE('CURSOR循環開始');LOOPBEGINFETCH GET_VALUE INTO var_value1, var_value2;EXIT WHEN GET_VALUE%NOTFOUND;-- var_text:=var_text||''''||var_value1||'''';var_text := var_value1;DBMS_OUTPUT.PUT_LINE(var_value1);/** * 具體實現* */END;END LOOP;CLOSE GET_VALUE;
END;
FOR
- 优点
- 类似代码中的foreach(x in collection)循环,取用也与foreach一样,取用方便
- 缺点
- 主要用于局部
- 像from dual这种的要给定栏位,不然会报错,如果是你自己建的表,一般就不会报错
-- 循环
DECLAREvar_text VARCHAR(100);var_value1 VARCHAR(100);var_value2 VARCHAR(100);
BEGINDBMS_OUTPUT.PUT_LINE('FOR循环开始');FOR x IN (SELECT 'value1' value1, 'value2' value2, 'value3', 'value4', 'value5' FROM dualUNION ALLSELECT 'value111', 'value222', 'value333', 'value444', 'value555' FROM dualUNION ALLSELECT 'value911', 'value922', 'value933', 'value944', 'value955' FROM dual)LOOPvar_value1 := x.value1;var_value2 := x.value2;DBMS_OUTPUT.PUT_LINE(var_value1);EXIT WHEN var_value2 = 'value222';-- IF var_value1 LIKE 'US%' THEN-- CONTINUE;END LOOP;
END;
总结
那些优缺点都是我自己用的时候感觉的,这些东西其实有时候也看你如何使用,也有可能是我还没发现好的用法,仅供大家参考。
相关文章:
Oracle 遍历变量游标
背景 由于我们的数据库系统中的游标特别多,DBA让我们优化,减少游标的使用。 电脑系统:windows数据库:Oracle数据库图形化界面工具:Toad,DBeaver(我測試的時候用的)记录日期:2023-09-04 具体实…...
C++11新特性① | C++11 常用关键字实战详解
目录 1、引言 2、C11 新增关键字详解 2.1、auto 2.2、override 2.3、final 2.4、nullptr 2.5、使用delete阻止拷贝类对象 2.6、decltype 2.7、noexcept 2.8、constexpr 2.9、static_assert VC常用功能开发汇总(专栏文章列表,欢迎订阅…...
VUE3学习小记(2)- ref 与 reactive
ref() 在组合式 API 中,推荐使用ref()函数来声明响应式状态: import { ref } from vueconst count ref(0) ref() 接收参数,并将其包裹在一个带有 .value 属性的 ref 对象中返回: const count ref(0)console.log(count) // {…...
基于单片机的万年历温度无线传输控制系统系统
一、系统方案 本设计采用DS1302采集年月日时分秒,DS18B20采集温度值,按键设置温度报警上下限,实际测量温度低于下限或高于上限,蜂鸣器报警,同时将测量温度上传到蓝牙助手。 二、硬件设计 原理图如下: 三…...
ElementUI浅尝辄止19:Badge 标记
出现在按钮、图标旁的数字或状态标记。 1.如何使用? 可展示新消息数量。 //定义value属性,它接受Number或者String。<el-badge :value"12" class"item"><el-button size"small">评论</el-button> <…...
nginx两台负载均衡服务器之间使用keepalived实现高可用
目录 高可用HAkeepalived实现高可用VRRP协议单VIP架构VIP飘移脑裂双VIP架构(互为主从)keepalived监控 、执行脚本notify 高可用HA 单点故障:某个重要的功能只有一份,如果他出现问题,会导致全局不能使用 “高可用性”…...
如何将Express项目部署到Vercel
什么是Vercel? 想必好多前端同学都知道Vercel吧!如果还不了解的同学也没关系,好好看这篇文章,认识认识Vercel,我想对你部署项目有一定帮助。 Vercel 是一个云平台,用于托管和部署静态网站、前端应用程序以…...
Java作业3
1.下面代码的运行结果是(C) public static void main(String[] args){String s;System.out.println("s"s);}A.代码编程成功,并输出”s” B.代码编译成功,并输出”snull” C.由于String s没有初始化,代码不…...
ARM编程模型-寄存器组
Cortex A系列ARM处理器共有40个32位寄存器,其中33个为通用寄存器,7个为状态寄存器。usr模式和sys模式共用同一组寄存器。 通用寄存器包括R0~R15,可以分为3类: 未分组寄存器R0~R7分组寄存器R8~R14、R13(SP) 、R14(LR)程序计数器PC(R15)、R8_fiq-R12_fir为快中断独有 在不同模…...
C++ string
目录 string类介绍访问:[ ] 遍历迭代器遍历范围for遍历 容量相关:修改相关:编码表的了解写时拷贝的了解string的模拟 STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库&a…...
百亿级访问量,如何做缓存架构设计
说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如阿里、网易、有赞、希音、百度、网易、滴滴的面试资格,遇到一几个很重要的面试题:: 分布式缓存系统,如何架构?百亿级访…...
(数字图像处理MATLAB+Python)第十一章图像描述与分析-第三、四节:几何表述和形状描述
文章目录 一:几何描述(1)像素间几何关系A:邻接与连通B:距离 (2)像素间几何特征A:位置B:方向C:尺寸 (3)程序 二:形状描述&a…...
20230901工作心得:IDEA列操作lambda表达式加强版用法
今天是中小学开学时间,亦是9月的开始,继续努力。 今日收获较大的有四个地方,先说这四点。 1、IDEA列操作 使用场景:需要批量将Excel表格里的数据插入到数据库中,此时需要写大量的insert SQL语句。 比如像这样的&am…...
macOS Sonoma 14beta 7(23A5337a)更新发布,附黑/白苹果系统镜像
系统介绍(镜像请前往黑果魏叔官网下载) 黑果魏叔8 月 31 日消息,苹果今日向 Mac 电脑用户推送了 macOS 14 开发者预览版 Beta 7 更新(内部版本号:23A5337a),本次更新距离上次发布隔了 8 天。 …...
QT基础教程之九Qt文件系统
QT基础教程之九Qt文件系统 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力。下面是 I/O 设备的类图(Qt5)&#…...
OpenCV(十八):图像直方图
目录 1.直方图统计 2.直方图均衡化 3.直方图匹配 1.直方图统计 直方图统计是一种用于分析图像或数据的统计方法,它通过统计每个数值或像素值的频率分布来了解数据的分布情况。 在OpenCV中,可以使用函数cv::calcHist()来计算图像的直方图。 calcHist(…...
mac pro 查看隐藏文件夹
在Mac上查看隐藏文件夹可以使用以下方法: 使用终端: 打开终端应用程序,位于“应用程序”文件夹的“实用工具”子文件夹中。 在终端中,输入以下命令,然后按回车键: defaults write com.apple.finder AppleS…...
软件测试/测试开发丨Selenium 高级定位 Xpath
点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27036 一、xpath 基本概念 XPATH是一门在XML文档中查找信息的语言 XPATH使用路径表达式在XML文档中进行导航 XPATH的应用非常广泛,可以用于UI自…...
各类注意力机制Attention——可变形注意力
目录 《Attention is all you need 》稀疏Attention残差Attention通道注意力空间注意力时间注意力可变形注意力 《Attention is all you need 》 稀疏Attention 残差Attention 通道注意力 空间注意力 时间注意力 实际上序列类任务也属于时间注意力,比如transformer…...
桥接模式:连接抽象与实现
欢迎来到设计模式系列的第八篇文章!在之前的几篇文章中,我们已经学习了许多常见的设计模式,今天我们将继续探讨另一个重要的设计模式——桥接模式。 桥接模式简介 桥接模式是一种结构型设计模式,它主要用于将抽象部分与实现部分…...
如何高效构建视频数据集:video2frame终极实战指南
如何高效构建视频数据集:video2frame终极实战指南 【免费下载链接】video2frame Yet another easy-to-use tool to extract frames from videos, for deep learning and computer vision. 项目地址: https://gitcode.com/gh_mirrors/vi/video2frame 在计算机…...
AI Agent Harness Engineering 产品经理指南:如何定义智能体的“人设”与能力边界?
AI Agent Harness Engineering 产品经理指南:如何定义智能体的「人设」与能力边界 关键词:AI Agent、智能体管控工程(Harness Engineering)、产品经理、人设对齐、能力边界、智能体治理、生成式AI落地 摘要 随着生成式AI技术的成熟,AI Agent已经从概念验证阶段进入大规…...
从零到一:在个人PC上部署并集成ChatGLM-6B到Unity应用
1. 环境准备与模型下载 在个人PC上部署ChatGLM-6B需要先搞定三件事:硬件检查、软件环境搭建和模型文件获取。我的老款游戏本(i7-9750H RTX2060 6GB显存)实测可以流畅运行,关键在于正确的量化配置。 硬件检查要点: 显存…...
构建动态技能图谱:从数据模型到自动化可视化的完整实践
1. 项目概述:一个技能图谱的诞生最近在GitHub上看到一个挺有意思的项目,叫dortort/skills。乍一看,这只是一个个人仓库,但点进去你会发现,它远不止是一个简单的代码集合。它更像是一张动态的、可视化的个人技能地图&am…...
可穿戴电子模块化连接方案:5mm微型按扣实现电路板与织物的可插拔连接
1. 项目概述与核心思路在折腾可穿戴电子项目时,最让人头疼的问题之一,就是如何让电路板与衣物既可靠连接,又能方便地拆下来。传统的做法要么是用导电胶带粘(不牢靠、易氧化),要么是直接把线焊死在板子上然后…...
为AI编程助手构建安全防线:Cursor自定义规则实战指南
1. 项目概述:为AI编程助手装上“安全护栏” 如果你和我一样,深度使用Cursor这类AI编程助手,那你一定体验过它带来的效率革命。它能帮你生成代码、重构函数、甚至解释复杂的逻辑,就像一个不知疲倦的编程伙伴。但硬币总有另一面——…...
SVG与CSS变量驱动的自动化品牌视觉生成技术实践
1. 项目概述:一分钟品牌塑造的实践宝库在品牌营销和创意设计领域,一个常见的痛点是如何快速、高效地生成高质量的视觉品牌资产。无论是初创公司需要一个临时的Logo,还是内容创作者想为新的系列视频设计一个统一的片头,传统的品牌设…...
构建个人知识库:从碎片化代码到结构化知识体系
1. 项目概述:从“ClawCode”看个人知识库的构建与价值最近在和一些开发者朋友交流时,发现一个普遍现象:大家电脑里都散落着无数代码片段、配置脚本、临时笔记和项目心得。这些“数字碎片”价值巨大,但往往因为缺乏有效的组织&…...
82.人工智能实战:大模型多环境治理怎么做?从开发、测试、预发到生产的 Prompt、模型、知识库隔离方案
人工智能实战:大模型多环境治理怎么做?从开发、测试、预发到生产的 Prompt、模型、知识库隔离方案 一、问题场景:测试环境改了 Prompt,结果生产回答变了 很多大模型项目早期只有一个环境: 一套 Prompt 一个知识库 一个模型地址 一个配置表开发、测试、运营都在同一套配置…...
从Awesome List到个人知识库:开发者如何高效筛选与组织技术资源
1. 项目概述:一份面向开发者的“Awesome List”清单 如果你在GitHub上混迹过一段时间,尤其是热衷于探索前沿技术、寻找优质学习资源或开源项目,那么你大概率见过或者使用过一种特殊的仓库—— Awesome List 。简单来说,这是一个…...
