我有一个大约有3000万条记录的表,并且我想像这样循环遍历表中存在的记录:

FOR i IN (SELECT * FROM tbl_items it

Left join location lo

ON lo.id=it.location_id) LOOP

// CHECK some condition

// INSERT INTO LOG TABLE

END LOOP ;

Oracle11g中PL / SQL中的过程内的for循环是否有任何限制?

我认为这是有限制的,我该如何跳过限制?

那可能会非常慢...

不,没有限制(如果有限制,那将是非常愚蠢的)

@a_horse_with_no_name我认为有一个限制,我尝试插入,我想在另一个表中插入数据,它只插入约一百万!

但是,为什么您认为那是PL / SQL循环限制呢? 您遇到什么错误? 循环内部有什么逻辑? 使用PL / SQL代替普通的SQL insert ... select语句(通常会更快,更高效)是否真的有充分的理由?

循环是一个糟糕的选择。 只需做一个insert into target_table (col1, col2, col3) select c1, c2, c3 from source_table,它将更快

PL / SQL对循环中的迭代次数没有任何实际限制。

我无法证明这一点,但这是我说没有限制的原因:

在数据库PL / SQL语言参考的PL / SQL程序限制部分中未列出任何限制。 Oracle通常擅长的一件事是将硬限制保持在最低限度,或者始终采用解决方法。

用编程语言创建这样的限制没有意义。

多年前我开始专注于Oracle SQL和PL / SQL的原因之一是避免使用一种具有迭代限制的编程语言。很少有编程问题比"超出最大循环限制"之类的错误更令人沮丧。如果PL / SQL中存在此问题,很多人都会对此感到愤怒。

在某些时候,每个循环都会消失-您将耗尽资源。但是对于像PL / SQL这样的理智的语言,您可以更担心宇宙射线。

也许"限制"是指LIMIT批量收集选项?如果是这样,Oracle cursor-FOR循环的限制为100。这意味着它将一次获取100行。这是内存与减少开销之间的一个很好的折衷,实际上总是足够的。

正如a_horse_with_no_name所建议的那样,完全避免循环是Oracle SQL中的最佳实践。基于集合的程序几乎总是比逐行更快。

我在循环中有一些逻辑,所以我必须使用循环,并且循环中的select从3,4表联接

@MohammadMirzaeyan很好,它仍然可以正常工作。 无论是什么问题,它都不是由某些PL / SQL循环限制引起的。 您能否添加一些有关到底出了什么问题的详细信息?

我编辑问题,问题是当我调用带有项目ID的过程时,它将插入到日志表中,但是当我不将项目ID放在where子句中时,它将不会插入它。

您的问题中没有"项目ID"或"日志表",因此我仍然不知道您遇到了什么问题。 请添加一个简单的示例来重现该问题。

oracle双重for循环sql,Oracle 11g中for循环中的PL / SQL限制相关推荐

  1. sql如何遍历几百万的表_Oracle PL/SQL调优技巧分享

    原创作者:如人饮水冷暖自知 责任编辑:AcDante 前言 开门见山,今天和大家聊聊如何对PL/SQL代码进行优化,以及如何编写高效的PL/SQL代码,如果您是开发DBA,或者您是数据库开 发人员,对 ...

  2. oracle 游标while循环嵌套,oracle游标循环的嵌套

    完成批量修改user_tables中的所有表的栏位名(从MS SQL导入过来,发现大小写问题,造成很多麻烦) 存储过程见下: -- Created on 2012/3/14 by FREE decla ...

  3. sql for循环_【赵强老师】什么是PL/SQL?

    一.什么是PL/SQL? PL/SQL(Procedure Language/SQL)是oracle在标准的sql语言上的扩展.ql/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许私用条件语 ...

  4. 打破第一范式的要求 (中英对照)Michael Rys 对 SQL Server 2005 中XML 的 评论——对微软SQL Server项目经理Michael Rys博士的采访

    Michael Rys on XML in SQL Server 2005 Michael Rys对SQL Server 2005中XML的评论 Michael Rys is one of two p ...

  5. mysql 导入数据库sql语句_mysql中导入数据与导出数据库sql语句

    本文章来详细介绍关于mysql中导入数据与导出数据库sql语句,在mysql中常用的导入与导出数据的命令有source与mysqldump大家可参考. 1.例1:连接到本机上的MYSQL 首先在打开D ...

  6. android studio hiera,PL/SQL初学者必读:几十个实用的PL/SQL

    第一阶段 Q.编写一个PL/SQL程序块以显示所给出雇员编号的雇员的详细信息. A. DECLARE erec emp%ROWTYPE; BEGIN SELECT * INTO erec from e ...

  7. oracle 查询cpu 100%,Oracle 11g中查询CPU占有率高的SQL

    oracle版本:oracle11g 背景:今天在Linux中的oracle服务上,运用top命令发现许多进程的CPU占有率是100%. 操作步骤: 以进程PID:7851为例 执行以下语句: 方法一 ...

  8. oracle嵌套三层循环语句,在存储过程中执行3种oracle循环语句

    http://www.cnblogs.com/coprince/p/3443219.html create or replace procedure pr_zhaozhenlong_loop /* 名 ...

  9. oracle存储过程for循环跳出循环,oracle跳出循环方法

    记录 exit 和 return 的用法 1.exit用来跳出循环 Oracle代码: declare V_KBP varchar2(10);beginloop IF V_KBP IS NULL TH ...

最新文章

  1. spring cloud gateway之服务注册与发现
  2. linux网络管理证书,计算机网络管理工程师技术水平证书有什么用
  3. (转)启动linux远程图形界面登录,vnc!!
  4. 表单提交时submit验证非空return false没用_开发这样一个复杂的表单你需要用多久...
  5. jmeter上传文件搞了一天,才搞定,没高人帮忙效率就是低,赶紧记下来,以备后用...
  6. 电脑音频服务未运行怎么解决_电脑故障维修技巧教程:新手必看的修电脑技巧!...
  7. python期中考试知识点_大学期末考试,有哪些高效复习的技巧?
  8. windows操作系统,python环境下django的自动安装
  9. oracle 体系架构图
  10. 末学者笔记--MariaDB 数据库 三玄
  11. php控制wifi上网时长,腾达路由器家长控制功能怎么控制孩子上网时间
  12. 智能客服搭建(1) - MRCP Server 搭建
  13. 使用python将txt格式的数据转换为csv格式,读取csv数据前几行
  14. http协议工作过程
  15. 鸡啄米VS2010/MFC编程入门教程——学习1初次接触
  16. 1011:2.4将磅转换为千克
  17. 练习之彩票四 计算中奖数(结尾)
  18. Gliffy, 在线Visio 杀手
  19. 八一农垦计算机专业咋样,黑龙江八一农垦大学(专业学位)计算机技术考研难吗...
  20. .NET6运行时动态更新限流阈值

热门文章

  1. 吴恩达|机器学习作业2.1正则化的Logistic回归
  2. 机器学习实战(十二)降维(PCA、SVD)
  3. mysql 5.6.41编译安装详细步骤
  4. 第十五:Pytest-html报告修改与汉化
  5. 第十四:Pytest进阶之html测试报告
  6. python开发环境有哪些特点_快速了解Python开发环境Spyder
  7. vue-count-to插件使用方法
  8. 基于vue + element 的后台管理系统
  9. 字符串校验器 ExcelValidator.java
  10. matlab生成不重复的随机数_怎么生成不重复随机数——《超级处理器》应用