PLSQL中的FOR循环

2023-11-16

 游标的FOR循环,循环体是查询的表

游标的for循环
    PL/SQL 语言提供了 游标 FOR 循环语句,自动执行游标的 OPEN 、 FETCH 、 CLOSE 语句和 循环 语句的功能;当进入循环时,游标 FOR 循环语句 自动 打开游标,并提取第一行游标数据,当程序处理完 当前所提取的数据而进入下一次循环时,游标 FOR 循环语句自动提取下一行数据供程序处理,当提取完结果集合中的所有数据行后结束循环,并自动关闭游标 。


FOR index_variable IN cursor_name[value[, value]…] LOOP
	--游标数据处理代码
END LOOP;



    index_variable 为游标 FOR 循环语句隐含声明的索引变量,该变量为 记录变量 ,其 结构与游标查询语句返回的结构集合的结构相同 。在程序中可以通过引用该索引记录变量元素来读取所提取的 游标数,index_variable 中各元素的名称与游标查询语句选择列表中所制定的列名相同。 如果在游标查询语句的选择列表中存在计算列,则必须为这些计算列指定别名后才能通过游标 FOR 循环语句中的索引变量来访问这些列数据 。
注:不要在程序中对游标进行人工操作;不要在程序中定义用于控制

 

--PL/SQL 在游标 FOR 循环语句之前定义游标,然后使用。

declare
    cursor c_emp is select last_name,salary*10 sal
                    from employees;
begin 
    for v_emp in c_emp loop
        dbms_output.put_line(v_emp.last_name||'--'||v_emp.sal);
    end loop;
end;



--PL/SQL 在游标 FOR 循环语句中使用子查询来实现游标的功能。

begin 
    for v_emp in (select last_name,salary*10 sal from employees;)
        dbms_output.put_line(v_emp.last_name||'--'||v_emp.sal);
    end loop;
end;

1、知识点

格式:

for -- 开始for循环

parai -- 定义游标 也可以认为是 java中的循环变量

in(sql语句)-- 需要循环的sql结果集

loop -- 开始循环

sql逻辑  -- 此处是需要处理的sql逻辑

end loop 表示结束for循环

2、示例

set serveroutput on ;
declare
salaryD varchar2(30);
begin
    -- 将emp表所有empno存到游标empnoi
  for  empnoi in(select empno from emp ) loop --  循环人员
      begin
       select salary into salary from salaryD where empno = empnoi.empno;
      end;
  -- 输出,需要||拼接
  dbms_output.put_line(empnoi.empno||':'||salary);
 end loop;
end;
/

注意这里用到 into 用法是赋值,将salary赋值给salaryD。
 

循环体是单纯的数字:


/*
语法:
FOR counter IN [reverse] initial_value .. final_value LOOP
   sequence_of_statements;
END LOOP;
*/
declare 
  --保存求和结果
  sum_result integer:=0;
begin
  --求从1到1000的累加和
  for var in 1..1000 loop
      sum_result:=sum_result+var;
  end loop;
  dbms_output.put_line('The result of 1..1000 is : ' || sum_result);
  
  --使用REVERSE关键翻转顺序
  for var in reverse 1..10 loop
     dbms_output.put_line('The '||var || ' loop');
  end loop;
 
end;

循环体是数据库的表中字段:

--------------循环打印a表中的id信息---------------------------------------------
begin
  for aa in (select * from a where id=&id) loop
    --循环体语句,打印部门信息
    dbms_output.put_line(aa.id||'---'||aa.name);
  end loop;    
end;
-------------------------------------------------

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PLSQL中的FOR循环 的相关文章

  • 在Java中清空数组/处理

    除了循环遍历数组中的每个元素并将每个元素设置为 null 之外 Java 处理中是否有一个本机函数可以简单地清空数组 或销毁它 以便能够将其重新声明为新数组 There s Arrays fill myArray null 并不是说它执行的
  • 使用 Spring Data REST 处理自定义异常 (i18n)

    我正在使用 Spring Boot 1 5 4 和 Spring JPA Spring Data REST HATEOAS 我正在寻找一种最佳实践 Spring 方式 来自定义异常 Spring Data REST 正在管理添加 i18n
  • 如何识别 Java 中的不可变对象

    在我的代码中 我正在创建一个对象集合 这些对象将由各种线程以只有在对象不可变的情况下才安全的方式访问 当尝试将新对象插入到我的集合中时 我想测试它是否是不可变的 如果不是 我将抛出异常 我能做的一件事是检查一些众所周知的不可变类型 priv
  • 初级 Java 计数器代码

    我的教授希望我这样做 使用下面的 Counter 接口写入多个可互换计数器 public interface Counter Current value of this counter int value Increment this co
  • 在 Hibernate 中创建 UPDATE RETURNING 查询

    在 Oracle 中 我们可以创建一个更新查询 该查询将使用 RETURNING 子句返回更新的记录 Hibernate中有类似的功能吗 除了数据库生成的值之外 Hibernate 显然不需要返回更新的实例 因为对象传递给Session s
  • 用 java 编写解释器时的 switch 或 if 语句

    当前的作业需要我编写一个程序 以一种非常微小且基本的编程语言 行为有点像 FORTRAN 来读取包含指令的文件并执行这些指令 基本上它是我猜的语言的简单解释器 它是完全线性的 所有语句都是按顺序定义的 并且只有字符串和整数变量 我需要查找和
  • 如何将自定义日志处理程序添加到 Google App Engine?

    我正在尝试向我的 java 应用程序添加自定义日志处理程序 我已经实现了一个扩展 java util Logging Handler 类的 InnerLogger 类 在我的logging properties中声明为处理程序 handle
  • 如何搜索例程的内容/(SP-触发函数)

    我需要在数据库内所有例程的例程主体 存储过程 函数 触发器 中搜索文本 我该怎么做 Thanks SELECT OBJECT NAME object id FROM sys sql modules WHERE definition LIKE
  • HTTP PUT 在 Java 中上传文件

    Edit 我想我已经弄清楚如何执行二进制数据部分 仔细检查代码 但我很确定我做对了 现在 当我尝试按照中所述完成上传时遇到新错误Vimeo API 文档 http vimeo com api docs upload streaming Ed
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • 我们可以使用 for-each 循环来迭代 Iterator 类型的对象吗? [复制]

    这个问题在这里已经有答案了 如果我们执行以下操作 我们会收到错误 class FGH public static Iterator reverse List list Collections reverse list return list
  • 从命令行运行 Maven 插件的语法是什么。

    我看到这里已经有人问过这个问题 如何从命令行执行maven插件 https stackoverflow com questions 12930656 how to execute maven plugin from command line
  • 读/写带有特殊字符的.txt文件

    I open Notepad Windows 并写 Some lines with special characters Special 并前往另存为 someFile txt 与Encoding set to UTF 8 在Java中我有
  • Google Cloud Messaging - 立即收到或长时间延迟收到的消息

    我在大学最后一年的项目中使用谷歌云消息传递 一切正常 但我在使用 GCM 时遇到了一些麻烦 通常 消息要么几乎立即传递 要么有很大的延迟 我读过这篇文章 但我真的认为它不适用于这种情况 GCM 通常会在消息发送后立即传送消息 然而 这并不总
  • 数据库字段中的逗号分隔值

    我有一个产品表 该表中的每一行对应一个产品 并由唯一的 ID 标识 现在 每个产品都可以有多个与该产品关联的 代码 例如 Id Code 0001 IN ON ME OH 0002 ON VI AC ZO 0003 QA PS OO ME
  • 如果抛出RuntimeException,是否可以将其作为异常捕获?

    如果我有一个try抛出一个块RuntimException子类 可以是后续的catch块将其捕获为Exception 具体来说 public class MyAppException extends RuntimeException In
  • JMockit - 初始化问题

    当我使用以下测试时 我收到警告 警告 JMockit 是按需初始化的 这可能会导致某些测试失败 请检查文档以获取更好的初始化方法 这是我的测试实现 package test import static mockit Mockit impor
  • st_intersects 与 st_overlaps

    这两个查询有什么区别 select a gid sum length b the geom from polygons as a roads as b where st intersects a the geom b the geom gr
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • Libgdx 和 Google 应用内购买结果

    我遵循了这些指示 https github com libgdx libgdx wiki Interfacing with platform specific code使用 ActionResolver 接口集成 Libgdx 和原生 An

随机推荐

  • TCP/IP网络江湖——揭秘数据链路层的内功心法(数据链路层上篇:数据链路层的基础与本质)

    目录 0 引言 一 数据链路层的任务与功能 1 1 数据的封装与解封装 1 2 媒介访问控制 MAC
  • 如何快速找到期刊文献的期卷号

    在我们撰写论文时不论是查找下载期刊文献资料还是编辑参考文献都会需要知道该期刊论文的期卷号 那么 期刊论文的期卷号怎么找呢 下面小编就介绍几种论文期卷号的查找方法 注 文中所用的检索工具是 文献党下载器 一 最常见的就是论文的期卷号在参考文献
  • Presto查询Hive无数据解决方法

    1 是否使用了TEZ引擎 2 是否配置好了presto 如果是TEZ引擎 则加上一条配置即可 在hive properties中增加 hive recursive directories true
  • “Required request body is missing”请求体缺失

    昨天遇到一个报错 是这样的 有一个接口 后端和我说是get请求 带两个参数 在body里传递过去 我当时明明带着参数一起发给后端了 但是一直报错 显示请求体缺失 关键的是我用postman测试了 接口是通的 我就以为是前端的问题 就在那改传
  • 伪代码格式

    伪代码描述应该保持简洁 并且不应该超过一页的3 4 关键字和函数名字用粗体字 所有的变量使用小写字母 数组名称大写 元素采用A i 这样的表示形式 伪代码的意图是描述条件语句和循环语句 例如 伪代码计算两个最近点的距离 BruteForce
  • Web自动化 —— Selenium元素定位与防踩坑

    1 基本元素定位一 from selenium import webdriver from selenium webdriver chrome service import Service from selenium webdriver c
  • Mac系统编译Spring源码

    下载Spring源码 Spring源码托管在GitHub 点击进去之后 选择一个版本 然后下载 下载完成后 解压压缩包 然后打开spring framework 5 2 x gradle wrapper gradle wrapper pro
  • ARM学习系列 ---- ARM NEON

    ARM学习系列 ARM NEON 1 NEON概述 1 1 简介 NEON是指适用于Arm Cortex A系列处理器的一种高级SIMD 单指令多数据 扩展指令集 可执行并行数据处理 1 2 发展历史 arm v6 SIMD扩展 arm v
  • 计算器ajax实现代码,用JQuery写一个计算器

    因为觉得segment fault的markdown界面比CSDN漂亮一些 所以最近正在把博客迁移到这边来 这几天多发了两篇 作为一个学习中练手的小demo 选了一个计算器 原因大概只是因为早就想做 比较简单 又确实有很多地方不太清楚 所以
  • PAT 1011 A+B 和 C

    给定区间 2 31 2 31 内的 3 个整数 A B 和 C 请判断 A B 是否大于 C 注意本题数字的范围 是 2 31 2 31 因此要用long long 类型 刚开始用了int 类型 一直提示有错误 注意int 32位 可以包括
  • 开发规范-java代码注释及IDEA配置代码注释模板

    引 阿里巴巴开发规范 注释规约 强制 类 类属性 类方法的注释必须使用 Javadoc 规范 使用 内容 格式 不得使用 xxx 方式 说明 在 IDE 编辑窗口中 Javadoc 方式会提示相关注释 生成 Javadoc 可以正确输出相应
  • python正则表达式从字符串中提取数字的思路详解(转载)

    python从字符串中提取数字 使用正则表达式 用法如下 总结 匹配字符串的开始 匹配字符串的结尾 b 匹配一个单词的边界 d 匹配任意数字 D 匹配任意非数字字符 x 匹配一个可选的 x 字符 换言之 它匹配 1 次或者 0 次 x 字符
  • Unity - 无限循环列表

    效果和UI结构 效果 Tips 免费的视频转GIF网站 UI结构 父节点为一个Panel Panel的Vertical Layout Group方便快捷调整Panel下的Image子物体的位置 使用时取消组件 Image是列表的子物体 只有
  • CSS文字自动换行

    word break属性 normal 只在允许的断字点换行 浏览器保持默认处理 break word 在长单词或 URL 地址内部进行换行 white space属性 normal 默认 空白会被浏览器忽略 pre 空白会被浏览器保留 其
  • Java编程那些事儿88——文件操作之写文件

    Java编程那些事儿88 文件操作之写文件 陈跃峰 出自 http blog csdn net mailbomb 11 3 1 4 写文件 如前所述 将程序内部的数据输出到程序外部的数据源 应该使用IO类体系中的输出流 在实际的编程中 将程
  • MATLAB设计滤波器之新版filterDesigner使用

    一 引言 本篇内容主要介绍新版Matlab的滤波器设计filterDesigner工具的使用 并以设计两个带通滤波器为使用的例子 使用的MATLAB软件版本为MATLAB R2022a 二 filterDesigner设计滤波器 1 在命令
  • C++责任链模式:Chain of Responsibility Pattern

    当你想要让一个以上的对象有机会能够处理某个请求的时候 就可以使用责任链模式 责任链模式 将请求的发送和接收解耦 让多个接收对象都有机会处理这个请求 将这些接收对象串成一条链 并沿着这条链传递这个请求 直到链上的某个接收对象能够处理它为止 通
  • Ubuntu18.04装Miniconda后终端出现base环境

    在 Ubuntu18 04LTS DELL 台式机中安装 Pytorch 由于没有 GPU 只能下载仅使用 CPU 版的 Pytorch 去 Pytorch 官网按照文档 Start Locally PyTorch 一步步下载相应的环境 P
  • tomcat8下启动 jsp报错

    The method getDispatcherType is undefined for the type HttpServletRequest java lang ClassNotFoundException org apache js
  • PLSQL中的FOR循环

    游标的FOR循环 循环体是查询的表 游标的for循环 PL SQL 语言提供了 游标 FOR 循环语句 自动执行游标的 OPEN FETCH CLOSE 语句和 循环 语句的功能 当进入循环时 游标 FOR 循环语句 自动 打开游标 并提取