首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在Toad中匿名块包含output cursor时会执行两次?

在Toad中,当一个匿名块(anonymous block)包含output cursor时会执行两次的原因是因为Toad在执行匿名块时会先预编译(precompile)匿名块的代码,然后再执行。

在预编译阶段,Toad会检查匿名块中是否包含output cursor,如果有的话,Toad会执行一次预编译操作,以获取output cursor的元数据信息。这个预编译操作会导致匿名块被执行一次。

接下来,在实际执行匿名块的阶段,Toad会再次执行匿名块的代码,这时候才是真正的执行过程。因此,匿名块中包含output cursor时会导致匿名块被执行两次。

这种设计是为了确保在匿名块中使用output cursor时,Toad能够正确地获取到cursor的元数据信息,并且能够正常地执行匿名块中的代码。

需要注意的是,这个执行两次的特性只存在于Toad这个工具中,不同的数据库工具可能会有不同的行为。如果你不希望匿名块被执行两次,可以考虑使用其他的数据库工具或者调整代码逻辑来避免这个问题。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云数据库(https://cloud.tencent.com/product/cdb)
  • 腾讯云云服务器(https://cloud.tencent.com/product/cvm)
  • 腾讯云云原生容器服务(https://cloud.tencent.com/product/tke)
  • 腾讯云人工智能(https://cloud.tencent.com/product/ai)
  • 腾讯云物联网(https://cloud.tencent.com/product/iot)
  • 腾讯云移动开发(https://cloud.tencent.com/product/mobdev)
  • 腾讯云对象存储(https://cloud.tencent.com/product/cos)
  • 腾讯云区块链(https://cloud.tencent.com/product/baas)
  • 腾讯云元宇宙(https://cloud.tencent.com/product/mu)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Oracle之PLSQL学习笔记

并且定义以declare关键字开头的定义部分 二:可执行部分:(begin) 是PL/SQL的主题,包含的可执行语句,该部分定义了的功能,是必须的部分。...,这个过程单次调用完成,降低了网络拥挤   2、    可重用性:只要有Oracle的地方都能运行   3、    模块化:程序的每一都实现一个逻辑操作,有效的进行了分割。...PL/SQL的类:   1、    匿名:只能存储一次,不能存储在数据库   2、    过程,函数和包(procedure,function,package):是命了名的PL/SQL,被存储在数据库...3、    触发器:是命名的PL/SQL,被存储在数据库,当触发某事件时自动执行。...3、    游标的声明:     a)  语法:CURSOR cursor_name IS select_statement;     b)  游标声明SELECT语句不能使用INTO语句,可以字句子中使用

1.1K80

初探 Golang 代码混淆

附一段从编译过程截取的命令( go build -n 参数可以输出执行的命令)方便理解,比如我们指定了 -toolexec=/home/atom/go/bin/garble,那么编译时实际执行的就是:...除此之外还要标记各个依赖包是否 env.GOPRIVATE 目录下,只有此目录下的文件才会被混淆(特例是使用了 -tiny 参数时会处理一部分 runtime)。...go build -n 参数可以输出执行的命令,我们可以使用 garble 时传入这个参数来更直观的了解编译过程。...首先整个 const 符合 ast.GenDecl 类型,然后遍历其 Specs(每个定义),对每个 spec 遍历其 Values(等号右边的表达式),再对 val 的元素使用 ast.Inspect...将通过筛选的常量的 token 由 const 改为 var,方便后续用匿名函数代替常量值,但如果一个 const 中有一个不能被改为 var,则整个都不会被修改。

4K30
  • Oracle学习笔记四

    一、PL/SQL编程 游标(光标Cursor为什么使用游标 ? 写java程序中有集合的概念,那么pl/sq也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据。..._ output.put_line('其他错误'); end: 用户也可以自定义异常,声明来定义异常 DECLARE   My_job char(10);   v_sal emp.sal%type...)是大型数据库系统,一组为了完成特定功能的SQL句集,经编译后存储在数据库,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。...每当一个特定的数据操作语句( insert, update, delete)指定的表上发出时, Oracle自动地执行触发器定义的语句序列。...’) then       raise_application_error(-20001,’不能在非法时间插入员工’);     end if; end validInsertPerson: 当执行插入时会报错

    1.3K31

    oracle补充

    ,要一个嵌套另一个 PL/SQL由三个部分组成:定义部分、执行部分、异常处理部分 declare /*定义部分——定义常量、变量、游标、例外、复杂数据类型*/ begin /*执行部分...——要执行pl/sql语句和sql语句*/ exception /*异常处理部分——处理运行的各种错误*/ end; 实例1:只包括执行部分的pl/sql /*只要涉及输入就需要打开输出选项...'); end; /--命令窗口上执行最后得加/ /*相关说明: dbms_output是oracle所提供的包(类似java的开发包),该包包含一些过程,put_line就是dbms_output...函数接受零个或多个输入参数,有一个返回值,返回值的数据类型创建函数时定义用于返回特定的数据,当建立函数时,函数头部必须包含return子句,而在函数体内必须包含return语句返回的数据 需求:创建一个...,以临时表的形式存放在内存游标中有一个数据指针,初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标的数据进行各种操作,然后将操作结果写回数据表

    3.1K30

    JavaScript闭包原理与用法实例

    闭包的原理 后台执行环境,闭包的作用域链包含着自己的作用域、函数的作用域和全局作用域。 通常,函数的作用域和变量会在函数执行结束后销毁。...它一共运行了两次,第一次的值是999,第二次的值是1000。这证明了,函数f1的局部变量n一直保存在内存,并没有f1调用后被自动清除。...并且闭包引用该变量消除了循环引用,但是仅仅做到这一步还不能解决内存泄漏的问题,闭包会引用包含函数的所有活动对象,包含element,即使闭包不直接引用element,包含函数的活动对象也仍然会保存一个引用...用作级作用域的匿名函数:将函数声明包含在一对圆括号,表示它实际上是一个函数表达式,紧随其后的另一对圆括号会立即调用这个函数。...(function() { //这里是级作用域; }) (); 可以使用匿名函数表达式来模拟级作用域,任何定义匿名函数的变量匿名函数执行完之后都将被销毁,匿名函数外访问这些变量将会产生错误

    58840

    PLSQL --> 语言基础

    一、PL/SQL程序语言的组成 主要由组成 一个由三个基本部分组成:声明、执行体、异常处理 PL/SQL匿名和命名 命名会将代码保存到服务器 典型的结构如下 [ DECLARE...、@、#等 PL/SQL字符集不区分大小写 标识符: 变量、常量、子程序的名称 以字母开头、最大长度个字符 包含空格等特殊符号时,要用英文双引号括起来 文字 数值型 可用常规表示,也可以用科学计数法和幂的形式...default false; v_ename emp.ename%type; --使用表列来定义数据类型 v_sal emp.sal%type; 2.复合类型(存放多个值的变量) plsql包含...|| ename_table(-1)); end; / PL/SQL表类似于高级语言中的数组,且PL/SQL表的下表可以为负值,元素的个数没有限制.注意必须首先定义PL/SQL表类型及表变量 本例...通常包括游标变量(REF CURSOR)和对象类型变量(REF obj_type) 4.LOB变量 存储大批量数据的变量,通常分为内部LOB以及外部LOB 5.使用SQL*Plus变量 必须首先使用

    88330

    一文读懂 Linux mmap 内存映射

    各个 vm_area_struct 结构使用链表或者树形结构链接,方便进程快速访问,如下图所示: vm_area_struct 结构包含区域起始和终止地址以及其他相关信息,同时也包含一个 vm_ops...父子进程间通信一般使用匿名映射,此时,不必指定具体的文件,只要设置相应的标志(MAP_ANONYMOUS)即可。父进程先调用 mmap(),然后调用 fork()。...假设有三个程序A、B、C依赖一个静态库,那么链接器在生成可执行程序 A、B、C 时会把该静态库 copy 到 A、B、C 假设你本身要写的代码只有2MB大小,但却依赖了一个100MB的静态库,那么最终生成的可执行程序就是...可执行程序 A、B、C 中都有一部分静态库的副本,这里面的内容是完全一样的,那么很显然,这些可执行程序放在磁盘上会浪费磁盘空间,加载到内存运行时会浪费内存空间。...很简单,可执行程序A、B、C为什么都要各自保存一份完全一样的数据呢?

    3.9K01

    Kotlin的对象表达式和对象声明的具体使用

    Kotlin的对象表达式与Java匿名内部类的主要区别:匿名内部类只能指定一个父类型,但对象表达式可以指定0~N个肤类型。...一、对象表达式 对象表达式的语法格式如下: object [: 0~N个父类型]{ //对象表达式的类体部分 } 对象表达式还有如下规则: 对象表达式不能是抽象类,因为系统创建对象表达式时会立即创建对象...但对象表达式可以定义初始化,可以通过初始化来完成构造器需要完成的事情。 对象表达式可以包含内部类,不能包含嵌套类。...对象声明可包含嵌套类,不能包含内部类;而对象表达式可包含内部类,不能包含嵌套类。 对象声明不能定义函数和方法内;但对象表达式可嵌套在其他对象声明或非内部类。...三、伴生对象和静态成员 定义的对象声明,可使用companion修饰,这样该对象就变成了伴生对象。

    1.2K31

    Oracle-PLSQL基础

    要完成相对简单的应用功能,可能只需要编写一个pl/sql;但是如果想要实现复杂的功能,可能需要在一个pl/sql嵌套其他的pl/sql。...---- 结构示意图 pl/sql由三个部分构成:定义部分、执行部分、例外处理部分。 declear:定义部分是从declare开始的,这部分是可选的。定义常量、变量、游标例外、复杂数据类型。.../ 66666666 PL/SQL procedure successfully completed SQL> / --表示执行上一个PL/SQL。...打开游标 open c1;(打开游标,执行查询 即执行游标的查询语句) 取一行游标的值 fetch c1 into v_name;( 取一行到变量) 最开始时,游标指向集合的第一条记录,记录返回后...---- PL/SQL调测 可以pl/sql工具 新建测试窗口,调测过程和调测存过的方式一样,可以一步一步的跟踪sql执行的过程。 ?

    1.8K20

    匿名函数闭包模仿级作用域,轻松解决开发的两大难题

    大家都知道ES6之前,JavaScript是没有级作用域的,但其实我们是可以通过匿名函数的闭包来模仿实现一个级作用域,并且可以依靠这样的操作来解决平时开发的两大难题。...这个 for循环语句形成的一个作用域就叫做级作用域。 了解过作用域链就能知道,JavaScript能形成作用域的就只有函数以及全局。...此时的匿名函数内部就是一个单独的作用域,这就是我们模仿出来的级作用域,当该匿名函数内部的代码全部执行完毕以后,因为该匿名函数没有被引用,所以垃圾回收机制待会儿会对它进行清除,那么匿名函数定义的临时变量...,如果用到匿名函数自调用,最好在前面加一个分号,因为有时会遇到这样一个情况 function input() { return function(n) { alert(n) } } var output...= input() (function() { //相关代码 })() 这个例子匿名函数自调用的上一行是 input() ,有时解析代码时可能会把它解析成下面这种情况 var output =

    70620

    给 Number 打 Call

    本文作者:IMWeb elvin 原文出处:IMWeb社区 未经同意,禁止转载 最近“打 call”这个词突然流行起来,我想到 call JavaScript可是个重要的方法,那么能不能用...; // output is true 关于原型链更深入的知识,可以参考我之前写的博客 - __proto__ 与 prototype 的关系 虽然有了一些收获,但是为什么对于相同的函数 Function.prototype.call...在上图中,绿和蓝的输出相同,可以把它们俩儿归为一类,所以接下来主要对红和绿的结果进行分析。...Number.myCall.myCall 从绿,我们可以看出函数调用发生了两次: 对于第一次调用,将输出的 this、obj 和 arguments 带入到 myCall ,可以发现其实是执行了...想当初我看到这个执行结果,到最后弄明白的一个多小时里,我是一直处于懵逼的状态

    43610

    Oracle数据库之第四篇

    begin --打开游标 open emp_cursor; --提取游标(判断下一个是否有值) fetch emp_cursor into emp_row ; --有值就执行...); end loop; close emp_cursor; end; /* 错误信息开发的异常 数据库叫做 例外 异常的分类 1.系统异常 系统定义好的异常...--提取游标的数据 loop fetch cursor_emp into emp_row; exit when cursor_emp%notfound; dbms_output.put_line...('编号'||emp_row.empno||'姓名'||emp_row.ename); end loop; close cursor_emp; end; /* 存储函数 是一段封装好的代码...,可以调用函数 90%情况下 函数和过程通用 过程可以调用函数,函数同样可以调用过程 */ /* 触发器 是一个监视器,监视对表数据的操作 如果对数据的操作满足触发器的执行条件

    94010

    【DB笔试面试577】Oracle,游标有哪几类?

    ♣ 答案部分 游标(Cursor)是Oracle数据库SQL解析和执行的载体,它可以分为共享游标(Shared Cursor)和会话游标(Session Cursor)。...共享游标是指缓存在库缓存(Library Cache)里的一种库缓存对象,其实就是指缓存在库缓存里的SQL语句和匿名PL/SQL所对应的库缓存对象。...Oracle解析目标SQL时去库缓存查找匹配Shared Cursor的过程如下图所示: ?...从上图可以看出,Oracle解析目标SQL时去库缓存查找匹配共享游标(Shared Cursor)的过程包含如下几个步骤: (1)根据目标SQL的SQL文本的哈希值去库缓存查找匹配的Hash Bucket...匹配的父游标查找匹配的子游标时,如果找到了匹配的子游标,那么Oracle就会把存储于该子游标的解析树和执行计划直接拿过来重用,而不用再从头开始解析。

    79710
    领券