oracle双重for循环sql,Oracle 11g中for循环中的PL / SQL限制
我有一个大约有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限制相关推荐
- sql如何遍历几百万的表_Oracle PL/SQL调优技巧分享
原创作者:如人饮水冷暖自知 责任编辑:AcDante 前言 开门见山,今天和大家聊聊如何对PL/SQL代码进行优化,以及如何编写高效的PL/SQL代码,如果您是开发DBA,或者您是数据库开 发人员,对 ...
- oracle 游标while循环嵌套,oracle游标循环的嵌套
完成批量修改user_tables中的所有表的栏位名(从MS SQL导入过来,发现大小写问题,造成很多麻烦) 存储过程见下: -- Created on 2012/3/14 by FREE decla ...
- sql for循环_【赵强老师】什么是PL/SQL?
一.什么是PL/SQL? PL/SQL(Procedure Language/SQL)是oracle在标准的sql语言上的扩展.ql/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许私用条件语 ...
- 打破第一范式的要求 (中英对照)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 ...
- mysql 导入数据库sql语句_mysql中导入数据与导出数据库sql语句
本文章来详细介绍关于mysql中导入数据与导出数据库sql语句,在mysql中常用的导入与导出数据的命令有source与mysqldump大家可参考. 1.例1:连接到本机上的MYSQL 首先在打开D ...
- android studio hiera,PL/SQL初学者必读:几十个实用的PL/SQL
第一阶段 Q.编写一个PL/SQL程序块以显示所给出雇员编号的雇员的详细信息. A. DECLARE erec emp%ROWTYPE; BEGIN SELECT * INTO erec from e ...
- oracle 查询cpu 100%,Oracle 11g中查询CPU占有率高的SQL
oracle版本:oracle11g 背景:今天在Linux中的oracle服务上,运用top命令发现许多进程的CPU占有率是100%. 操作步骤: 以进程PID:7851为例 执行以下语句: 方法一 ...
- oracle嵌套三层循环语句,在存储过程中执行3种oracle循环语句
http://www.cnblogs.com/coprince/p/3443219.html create or replace procedure pr_zhaozhenlong_loop /* 名 ...
- oracle存储过程for循环跳出循环,oracle跳出循环方法
记录 exit 和 return 的用法 1.exit用来跳出循环 Oracle代码: declare V_KBP varchar2(10);beginloop IF V_KBP IS NULL TH ...
最新文章
- spring cloud gateway之服务注册与发现
- linux网络管理证书,计算机网络管理工程师技术水平证书有什么用
- (转)启动linux远程图形界面登录,vnc!!
- 表单提交时submit验证非空return false没用_开发这样一个复杂的表单你需要用多久...
- jmeter上传文件搞了一天,才搞定,没高人帮忙效率就是低,赶紧记下来,以备后用...
- 电脑音频服务未运行怎么解决_电脑故障维修技巧教程:新手必看的修电脑技巧!...
- python期中考试知识点_大学期末考试,有哪些高效复习的技巧?
- windows操作系统,python环境下django的自动安装
- oracle 体系架构图
- 末学者笔记--MariaDB 数据库 三玄
- php控制wifi上网时长,腾达路由器家长控制功能怎么控制孩子上网时间
- 智能客服搭建(1) - MRCP Server 搭建
- 使用python将txt格式的数据转换为csv格式,读取csv数据前几行
- http协议工作过程
- 鸡啄米VS2010/MFC编程入门教程——学习1初次接触
- 1011:2.4将磅转换为千克
- 练习之彩票四 计算中奖数(结尾)
- Gliffy, 在线Visio 杀手
- 八一农垦计算机专业咋样,黑龙江八一农垦大学(专业学位)计算机技术考研难吗...
- .NET6运行时动态更新限流阈值
热门文章
- 吴恩达|机器学习作业2.1正则化的Logistic回归
- 机器学习实战(十二)降维(PCA、SVD)
- mysql 5.6.41编译安装详细步骤
- 第十五:Pytest-html报告修改与汉化
- 第十四:Pytest进阶之html测试报告
- python开发环境有哪些特点_快速了解Python开发环境Spyder
- vue-count-to插件使用方法
- 基于vue + element 的后台管理系统
- 字符串校验器 ExcelValidator.java
- matlab生成不重复的随机数_怎么生成不重复随机数——《超级处理器》应用