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

Oracle静态游标动态游标

前言 我们在写Oracle存储过程里面,经常会用到游标Oracle里面的游标分为静态游标动态游标。今天我们在说一下分别有什么不同。...代码演示 使用背景 我们在存储过程输入开始和结束日期,用于查询开始到结束日期这一段时间内销售。 解决思路 这个查询我们就可以用到静态游标动态游标的结合使用。...通过静态游标设置开始和结果日期获取到所涉及到的当前年月。 根据获取到的当前年月生成要查询对应月份分割表动态SQL语句。 用动态游标遍历,然后进行数据处理。 代码 ?...根据输入日期通过静态游标生成对应动态SQL语句。...通过动态sql语句使用动态游标遍历销售进行数据更新。

2.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

【DB笔试面试576】在Oracle,简述Oracle游标

♣ 题目部分 在Oracle,简述Oracle游标。 ♣ 答案部分 在介绍游标之前先介绍一下Oracle数据库库缓存(Library Cache)作用及其组成结构。...例如,Oracle可以通过访问某个库缓存对象Heap 0Child table而依次顺序访问从属于该对象所有子库缓存对象。...② 对每一个库缓存对象而言,都或多或少需要往库缓存存储一些该库缓存对象所特有的动态运行时(runtime)数据,比如SQL语句所对应库缓存对象就需要在库缓存缓存该SQL语句所对应编译好二进制格式执行计划...Oracle会用Data Heap来存储这些动态运行时数据,所谓“Data Heap”,可以简单地理解成是库缓存一块连续内存区域,Data Heap是动态分配,其大小并不固定。...各个Data Heap之间是独立,没有关联关系,Oracle会在Heap 0属性“Data Blocks Pointer”存储指向这些Data Heap指针,这样Oracle通过访问Heap 0

1.3K20

oracle游标 sql语句,sql游标

sql游标 游标的类型: 1、静态游标(不检测数据行变化) 2、动态游标(反映所有数据行改变) 3、仅向前游标(不支持滚动) 4、键集游标(能反映修改,但不能准确反映插入、删除) 游标使用顺序: 1...GLOBAL 全局游标 FORWARD_ONLY 仅向前 SCROLL 滚动 STATIC 静态 KEYSET 键集 DYNAMIC 动态 READ_ONLY 只读 SCROLL_LOCKS...into 变量 把当前行各字段值赋值给变量 游标状态变量: @@fetch_status 游标状态 0 成功 -1 失败 -2 丢失 @@cursor_rows 游标结果集中行数 n 行数...-1 游标动态 0 空集游标 操作游标的当前行: current of 游标名 以下例子,在SQL SERVER 2000 测试成功 use pubs go declare @auid char...删除表多余重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小记录. delete from people where peopleId in (select peopleId

1.4K20

Oracle PLSQL异常高级特性

在OraclePL/SQL语句块exception异常处理部分是非常重要组成部分,它决定了在PL/SQL语句块内部可执行部分在发生异常错误时,程序是友好地提示:程序遇到某些错误而无法执行,还是抛出一堆难以理解...本文只介绍3PL/SQL异常三种高级形态,用于解决Oracle内置异常过少,很多时候不能够满足实际使用需求。...- keep_errors 是可选Boolean参数,默认为FALSE,如果为TRUE,新抛出错误会被添加到已抛出错误列表,这个错误列表称为错误栈,如果为FALSE,新错误会替换已抛出错误栈。...3,SQLCODE 和 SQLERRM  - 在异常处理,当异常名称未知时(比如上面1RAISE_APPLICATION_ERROR),都可以使用others来进行异常捕获处理;  - 由于others...所捕获异常是未知(也可以是已知,但是在程序没有将其枚举出来),因此需要使用Oracle提供两个内置函数SQLCODE、SQLERRM来针对others异常进行处理:  - SQLCODE 会返回

61410

Oracle Apex学习:oracle ebsPLSQL常用时间函数

本文摘自Oracle APEX社区,原文地址:https://www.sqlu.cn/116.html一,获得时间1.Sysdate 当前日期和时间 Select sysdate from dual;...在变量”d”指定日期之后第一个工作日日期。...SELECT next_day(to_date(‘20230610′,’YYYYMMDD’),1) FROM dual; 6.current_date()返回当前会话时区的当前日期 date_value...localtimestamp()返回会话日期和时间 SQL> select localtimestamp from dual; LOCALTIMESTAMP ————————————————————...9.oracle时间运算 内容如下: 1、oracle支持对日期进行运算 2、日期运算时是以天为单位进行 3、当需要以分秒等更小单位算值时,按时间进制进行转换即可 4、进行时间进制转换时注意加括号

82020

PLSQL --> 动态SQL常见错误

本文介绍了动态SQL常见问题。 一、演示动态SQL使用 下面的示例,首先使用动态SQL基于scott.emp创建表tb2,然后里直接使用动态SQL从新表获取记录数并输出。...常见错误 1.使用动态DDL时,不能使用绑定变量 下面的示例,在创建表示,使用了绑定变量:dno,在执行时候收到了错误信息。...SQL语句末尾分号 4.动态PL/SQL块不能使用正斜杠来结束块,但是块结尾处必须要使用分号(;) DECLARE plsql_block VARCHAR2(300); BEGIN plsql_block...7.日期型或字符型在动态SQL处理时,需要注意单引号个数问题,特殊情况下可以使用chr(39)作为单引号使用。...8.动态SQLRETURNING INTO返回DML操作结果,对于SELECT查询返回结果,在执行EXECUTE IMMEDIATE时,直接使用INTO子句来传递。

2.1K20

【DB笔试面试578】在Oracle,什么是会话游标?会话游标和共享游标的区别有哪些?会话游标分为哪几类?

联系1.会话游标是以哈希表方式缓存在PGA,意味着Oracle会通过相关哈希运算来存储和访问在当前会话PGA对应会话游标。...这种访问机制和共享游标是一样,可以简单地认为Oracle是根据目标SQLSQL文本哈希值去PGA相应Hash Bucket找匹配会话游标。...由于在缓存会话游标的哈希表对应Hash BucketOracle会存储目标SQL对应游标的库缓存对象句柄地址,所以,Oracle可以通过会话游标找到对应游标,进而就可以找到对应子游标目标...在上表需要注意是,动态游标Oracle数据库中最灵活一种会话游标,它灵活性表现在:①动态游标的定义方式非常灵活,它可以有多种定义方式。②动态游标可以作为存储过程输入参数和函数输出参数。...需要注意是,若游标属于隐式游标,则在PL/SQL可以直接使用上表属性,若游标属于显式游标,则上表属性里“SQL%”需要替换为自定义显式游标的名称。上表这4个属性对于动态游标依然适用。

1.4K30

PLSQL --> 动态SQL调用包函数或过程

动态SQL主要是用于针对不同条件或查询任务来生成不同SQL语句。最常用方法是直接使用EXECUTE IMMEDIATE来执行动态SQL语句字符串或字符串变量。...有关动态SQL描述,请参考: PL/SQL --> 动态SQL PL/SQL --> 动态SQL常见错误 1、动态SQL调用包过程不正确调用方法 --演示环境 scott@USBO> select...cascade=>true) PL/SQL procedure successfully completed. 2、动态SQL调用包过程正确调用方法 --如下面这段plsql代码,我们在原代码基础上增加了...begin ..与end部分后,该plsql块被成功执行 --注,字符拼接plsql,end; 之后不需要使用斜杠“/” scott@USBO> DECLARE 2 v_sql VARCHAR2...SQL调用包过程带变量情形 --下面这个示例拼接字串,调用了声明变量 --下面给出了错误提示,是由于我们漏掉了两个单引号,即需要使用转义字符,错误如下 scott@USBO> DECLARE

1.5K20

oracle存储过程语法和用法,oracle存储过程 语法 函数 总结

大家好,又见面了,我是你们朋友全栈君。 对于oracle 存储过程是很优秀一种脚本语言。...下面是一些整理: 一,Plsql 调试存储过程: 1、 在oracle 配置和移植工具 àNET MANAGER配置连接 2、 在plsql中新建SQL窗口,编写存储过程 3、 在plsql中新建测试窗口...调试存储过程: 1、 在oracle 配置和移植工具 àNET MANAGER配置连接 2、 在plsql中新建SQL窗口,编写存储过程 3、 在plsql中新建测试窗口,在begin end之间调用...4、 查看编译错误:在命令窗口中show errors procedure procedure_name 或者 编辑方式打开存储过程,在编译时会有错误提示 二,oracle存储过程基本语法 1、 oracle...需要申明,并且循环体,要对i进行改变 5、 游标的使用: 定义游标 打开游标 提取数据 关闭游标 E.g: CREATE OR REPLACE PROCEDURE TEST is v_fid nvarchar2

1.2K30

MySQL游标

什么是游标游标(cursor)是一个存储在MySQL服务器上数据库查询, 它不是一条SELECT语句,而是被该语句检索出来结果集。...在存储了游 标之后,应用程序可以根据需要滚动或浏览其中数据。 注意:MySQL游标只能用于 存储过程(和函数)。...INTO 变量名称[,变量名称]; 4、关闭游标 CLOSE 游标名称; 我们以Customers表来作为示例 示例一 定义一个存储过程,调用时候执行里面的游标 CREATE PROCEDURE...这是因为游标的变量只保留了customers表第一行数据,如果要查看后面的数据,就需要循环往下移动游标,才能继续查看。...cus; 结果: 结果与customers里一致,但是这些结果是循环一条一条往下移动过程插入,即这个循环执行了7次。

12310

shell动态脚本和plsql动态脚本比较

最近项目有一个需求,需要在多个数据库schema上跑一些脚本。希望dba能够提供一个脚本,能够根据需求在环境执行指定脚本。 乍一听,没什么技术难点,为了更明白说明问题,我举个例子。...目前情况只能够得到db schema列表,对于里面是否还有5个表,还没有细粒度管理。 脚本需要从db schema列表筛选出符合 db schema,然后执行脚本内容。.../sql生成动态pl/sql如下, 先判断是否还有T1--T5,如果条数符合,就执行脚本内容,但是有个限制就是执行脚本时候如果脚本中有“set linesize... set define off之类设置的话...生成动态 pl/sql 如下 : conn user1/user1@DB1 set serveroutput on set feedback on set echo on declare tmp_cnt...app_change_tmp.ksh rm $ScriptDir/dynamic_tmp.ksh echo 'app CHANGE ENDED....' rm $ScriptDir/app_change_tmp.ksh 生成动态

1.3K60

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

♣ 题目部分 在Oracle游标有哪几类?...♣ 答案部分 游标(Cursor)是Oracle数据库SQL解析和执行载体,它可以分为共享游标(Shared Cursor)和会话游标(Session Cursor)。...共享游标Oracle缓存在库缓存几十种库缓存对象之一,它所对应库缓存对象句柄Namespace属性值是CRSR(也就是Cursor缩写)。...(3)在步骤(2),如果找到了匹配游标,那么Oracle接下来就会遍历从属于该父游标的所有子游标以查找匹配游标。...在匹配游标查找匹配游标时,如果找到了匹配游标,那么Oracle就会把存储于该子游标解析树和执行计划直接拿过来重用,而不用再从头开始解析。

75210

Oracle总结【PLSQL学习】

PLSQL介绍 PLSQLOracle对SQL99一种扩展,基本每一种数据库都会对SQL进行扩展,Oracle对SQL扩展就叫做PLSQL… SQL99是什么 (1)是操作所有关系型数据库规则...是什么 是专用于Oracle服务器,在SQL基础之上,添加了一些过程化控制语句,叫PLSQL 过程化包括有:类型定义,判断,循环,游标,异常或例外处理。。。...程序:;号表示每条语句结束,/表示整个PLSQL程序结束 PLSQL与SQL执行有什么不同: (1)SQL是单条执行 (2)PLSQL是整体执行,不能单条执行,整个PLSQL结束用/,其中每条语句结束用...Oracle游标其实就是类似JDBCresultSet,就是一个指针概念。...语法已经知道,有一个exception,这个在Oracle称为例外,我们也可以简单看成就是Java异常。。。

2.3K70

【DB笔试面试585】在Oracle,什么是常规游标共享?

♣ 题目部分 在Oracle,什么是常规游标共享?...♣ 答案部分 游标共享(Cursor Sharing)是指共享游标(Shared Cursor)之间共享,游标共享可以实现重用存储在子游标(Child Cursor)解析树和执行计划而不用从头开始做硬解析...下面分别来介绍常规游标共享和自适应游标共享这两个方面。 1、 常规游标共享 常规游标共享是在Oracle 8i引入。...当开启了常规游标共享后,Oracle在实际解析目标SQL之前,会先用系统产生绑定变量来替换目标SQLSQL文本WHERE条件或者INSERTVALUES子句中具体输入值,这样替换后实际执行...Oracle数据库常规游标共享受参数CURSOR_SHARING控制,其值可以被设置为EXACT、SIMILAR或FORCE,它们各自含义如下所示: l EXACT表示Oracle不会用系统产生绑定变量来替换目标

82940

oracle PLSQL重载 (r3笔记27天)

在java,有方法重写,方法重载,重载一个典型例子就是类构造函数,可以根据自己需求定义多个构造函数,默认是一个无参数空函数。...重写是基于父类子类之间多态性体现上,父类一个方法,在子类可以重写. oracle也可以有重载实现。自己在总结时候归纳了一下两种。 一种是通过包来实现,一种是通过pl/sql块来实现。...相比两者实现,包是静态,而pl/sql块是动态。 可以通过如下例子来说明一下。 我们现在又一个需求,需要根据输入参数得到对应累计值,输入参数从2个到4个不等,需要直接调函数来实现。...,是运行时,代码也是运行时编译。...我们可以指定两个同名函数,但是参数类型不同,同名存储过程,在调用时候根据参数和条件进行调用。

82170

【DB笔试面试587】在Oracle,常规游标共享和自适应游标共享联系和区别有哪些?

♣ 题目部分 在Oracle,常规游标共享和自适应游标共享联系和区别有哪些? ♣ 答案部分 从严格意义上来说,常规游标共享和自适应游标共享是各自独立,两者之间没有必然联系。...常规游标共享目的是通过使用系统产生绑定变量替换目标SQLSQL文本具体输入值,以达到在不改一行应用代码情况下,使那些仅仅是SQL文本WHERE条件或者VALUES子句(适用于INSERT语句...)具体输入值不同目标SQL彼此之间共享解析树和执行计划。...在Oracle 11g,对于使用了绑定变量目标SQL而言,不管这个绑定变量是该SQL自带还是开启常规游标共享后系统产生,只要满足一定条件(比如绑定变量窥探被开启,该SQL中使用绑定变量数量不超过...在自适应游标共享被开启情况下,Oracle并不推荐将CURSOR_SHARING值设为SIMILAR,因为当把CURSOR_SHARING值设为SIMILAR后,对自适应游标共享可能有不好影响,

55510

【DB笔试面试387】简述Oracle存储过程,游标和函数区别。

Q 题目 简述Oracle存储过程,游标和函数区别。 A 答案 游标类似指针,游标可以执行多个不相关操作。...存储过程和函数区别如下所示: ① 函数可以理解为是存储过程一种; ② 函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值; ③ 函数和存储过程都可以通过OUT参数返回值,如果需要返回多个参数那么建议使用存储过程...DB笔试面试历史连接 http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w About Me:小麦苗 ● 本文作者:小麦苗,只专注于数据库技术,更注重技术运用...● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/ ● 本系列题目来源于作者学习笔记,部分整理自网络,若有侵权或不当之处还请谅解 ● 版权所有,欢迎分享本文

65920

【DB笔试面试444】OraclePLSQL流程控制语句包括哪些?

题目部分 OraclePL/SQL流程控制语句包括哪些?...Language & Structured Query Language)是Oracle在标准SQL语言上扩展。...如果不使用PL/SQL语言,那么Oracle一次只能处理一条SQL语句。每条SQL语句都导致客户向服务器调用,从而在性能上产生很大开销,尤其是在网络操作。...一个基本PL/SQL块由三部分组成:定义部分、可执行部分以及异常处理部分。 (1)定义部分:包含变量、常量和游标的声明。这部分是可选。 (2)可执行部分:包括对数据进行操作SQL语句。...3 循环 Oracle循环有3种结构:LOOP、WHILE和FOR循环。在这3种结构,最常用就是FOR了,所以,这种结构一定得掌握。

1.1K20
领券