orcale 之 PL/SQL的游标】的更多相关文章

根据我们之前了解到的情况,SQL是面向集合的,我们的查询结果一般包含多条数据,而在PL/SQL 中的变量一般只能存放一条数据,因此变量是无法满足我们的需求的.这时候我们就需要引入游标来为我们解决问题了. 我们知道在 PL/SQL 中可以使用数据控制语言(DML)对数据进行操作,而在使用这些的时候 Orcale 会在内存中为其分配一个缓存区.而游标就是指向该缓存区的指针.它可以对查询结果集的每一行数据分别进行单独的处理. 游标分为显式游标和隐式游标.显式游标是由用户声明操作的一种游标,而隐式游标是…
一.使用游标 对于DML语句和单行select into ,oracle自动分配隐形游标.处理select返回多行语句,可以使用显式游标. 使用显示游标处理多行数据,也可使用SELECT..BULK COLLECT INTO 语句处理多行数据. 1.定义游标 cursor cursor_name is select_statement; 2.打开游标: 执行对应的SELECT语句并将SELECT语句的结果暂时存放到结果集中. open cursor_name; 3.提取数据 打开游标后,SELE…
orcale 中的例外我们可以看作是其他编程语言中的异常,是为了增强语言的健壮性和容错性. 在orcale中常见的有以下几种: No_data_found 很容易理解就是没有数据返回. Too_many_rows 在我们使用 select ... into 的时候这种错误经常的会发生,就是因为其返回了多条内容. Zero_Divide 被零除. Value_error 算数或者转换错误,比如说我们想把一个字符串 “abc” 转换成一个整数类型的数据 Time_on_resource 等待资源的时…
一.游标简介 在PL/SQL中执行SELECT.INSERT.DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),也称为缓冲区.游标是指向该区的一个指针.它提供了一种在多行结果集中对每一行数据分别进行单独处理的方法.用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理. oracle中游标有如下两种: 静态游标:分为显式游标和隐式游标. ref游标:引用类型,类似于C中的指针. 二.静态游标 静态游标分为显式游标和隐式游标…
1.PL/SQL  语法相关 -- SQL 语言只是访问,操作数据库的语言,而比并不是程序设计语言,因此不能用于程序开发. -- PL/SQL 是在标准SQl语言上进行过程性扩展后形成的程序设计语言,是一种Oracle数据库特有的,支持应用开发语言: ------------if-------------- DECLARE address VARCHAR2(10) :='Y1'; BEGIN IF (address ='Y') THEN dbms_output.put_line('yes');…
Oracle中的游标有两种: 显式游标 用CURSOR...IS 命令定义的游标,它可以对查询语句(SELECT)返回的多条记录进行处理. 隐式游标 是在执行插入(INSERT).删除(DELETE).修改(UPDATE)和返回单条记录的查询(SELECT)语句时有PL/SQL自动定义的. 1.显式游标操作 显式游标在块定义部分.包或子程序中声明.当声明了显式游标后,可通过下面三条命令控制显式游标操作. 1)打开游标 2)推进游标 3)关闭游标 --声明显式游标 声明显式游标就是指定游标名和与它…
一.游标的相关概念: 定义: 游标它是一个服务器端的存储区,这个区域提供给用户使用,在这个区域里 存储的是用户通过一个查询语句得到的结果集,用户通过控制这个游标区域当中 的指针 来提取游标中的数据,然后来进行操作. 实质: 是用户在远程客户端上对服务器内存区域的操作,由数据库为用户提供这样的 一个指针,使得用户能够去检索服务器内存区的数据. (1). 指向上下文区域的句柄或指针 (2).上下文区域-用于SQL处理的内存区 (3).上下文区域的内容 - 语句处理的行数 -指向语句的语法分析表示的指…
--游标 declare  cursor 游标名字  is  查询语句;begin  其他语句;end; --游标的属性%FOUND%NOTFOUND%ISOPEN%ROWCOUNT(当前游标的指针位移量) --FETCH的两种形式FETCH cursor_name INTO var1, var2, …;FETCH cursor_name INTO record_var; --游标的FETCH循环LOOP  FETCH cursor INTO…  EXIT WHEN cursor%NOTFOUN…
1.游标概念: 当在PL/SQL块中执行DML(增删改)时,Oracle会为其分配上下文区(Context Area),游标是指向上下文区的指针 2.  游标分类: A.  隐式游标 a.  在PL/SQL中使用DML语句时自动创建隐式游标 b.  隐式游标自动声明.打开和关闭,其名为 SQL c.  通过检查隐式游标的属性可以获得最近执行的DML 语句的信息 d.  隐式游标的属性有: %FOUND – SQL 语句影响了一行或多行时为 TRUE %NOTFOUND – SQL 语句没有影响任…
控制语句是PL/SQL 的关键所在.只有学好这些控制语句才能在工作中更好的实现各种的功能. 选择结构 1. IF 语句 和其他的编程语言很类似.它的具体机构如下: IF(条件)THEN {语句} ELSIF(条件)THEN {语句} ELSE {语句} END IF; 注意上面的第二个条件那里是ELSIF 并不是 ELSEIF. 对于IF语句的情况请看如下的例子: --IF...THEN THEN INSERT INTO man values(Name,Birthday); ELSE INSER…
显示游标 一.定义语法:        CURSOR <游标名> IS         <SELECT 语句>         [FOR UPDATE | FOR UPDATE OF 字段]; [FOR UPDATE | FOR UPDATE OF 字段] --给游标加锁,既是在程序中有"UPDATE","INSERT","DELETE"语句对数据库操作时.游标自动给指定的表或者字段加锁,防止同时有别的程序对指定的表或字段…
基本结构 不多说直接来看下它的结构: DECLARE -- 此处声明一些变量.常量.或者用户自定的数据类型 -- 这一部分是可选的,如果不需要可以不写 BEGIN -- 程序的主体,这里可以写一些合法的语句 EXCEPTION -- 处理异常 END; 从上面的结构中可以看出,由三部分组成:声明部分.执行部分和异常处理部分.其中执行部分是必须的,其他的部分都是可选的,记住最后 end 之后的分号是必须的. 注释 单行注释 由两个链接字符开始( -- ), 分号结束. 多行注释 由 /* 开始,…
引言:PLSQL数据类型标量数据类型:数字类.字符类.日期类.布尔类(boolean).复合数据类型:记录(%rowtype).表.数组引用类型:REF CURSORLOB类型:BLOB.CLOB 1.系统定义的记录:%rowtype使用%rowtype属性定义记录变量:可以基于表或视图定义记录变量当使用%ROWTYPE属性定义记录变量时,记录成员个数,名称,类型与表或视图列的个数, 名称,类型完全相同. 1.1 在select语句中使用PL/SQL记录declare v_emp emp%row…
1. 实现参照完整性      指若两个表之间具有主从关系(即主外键关系),当删除主表数据时,必须确保相关的从表数据已经被删除.  当修改主表的主键列数据时,必须确保相关从表数据已经被修改.为了实现级联删除,可在定义外部键约束时指定ON DELETE CASCADE关键字  alter table emp add constraint fk_deptno foreign key (deptno) references dept(deptno) on delete cascade; 实现级联更新,…
参考文献:<Oracle完全学习手册>第11章 1.PL/SQL概述 PL/SQL(Procedure Language/Structuer Query Language)是Oracle对标准SQL规范的扩展,全面支持SQL的数据操作.事务控制等.PL/SQL完全支持SQL数据类型,减少了在应用程序和数据库之间转换数据的操作. 构成PL/SQL程序的基本单位是程序块.程序块由过程.函数和无名块3种形式组成,它们之间可以互相嵌套. PL/SQL的运行工具有:SQL*Plus.PL/SQL dev…
一.概述 过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储于数据库中. 并通过输入.输出和输入输出参数与其调用者交换信息.唯一区别是函数总向调用者返回数据. 二.存储过程详解 创建过程语法: CREATE [ OR REPLACE ] PROCEDURE [ schema. ] procedure_name [ ( parameter_declaration [, parameter_declaration ]... ) ] [ invoker_rights_clause…
  1>>>>>异常错误处理 1 >预定义的异常处理 预定义说明的部分 ORACLE 异常错误对这种异常情况的处理,只需在PL/SQL块的异常处理部分,直接引用相应的异常情况名,并对其完成相应的异常错误处理即可.例1:更新指定员工工资,如工资小于1500,则加100: DECLARE v_empno employees.employee_id%TYPE := &empno; v_sal employees.salary%TYPE;BEGIN SELECT sal…
游标 Cursors--Conception 每一条被Oracle服务器执行的SQL语句都有一个独立的游标与之相关联:隐式游标 Implicit cursors: 用于所有的DML和PL/SQL的SELECT语句.显示游标 Explicit cursors: 被程序显示声明和命名.所定义的SQL语句必须只包含select语句,并且不能用insert.update或delete关键字.当select语句可能返回零或多于一行时,必须用显式游标.当Select语句预计只返回一行时,隐式游标将做得更好.…
一.隐式游标的定义及其属性 定义 隐式游标由系统自动定义,非显示定义游标的DML语句即被赋予隐式游标属性.其过程由oracle控制,完全自动化.隐式游标的名称是SQL,不能对SQL游标显式地执行OPEN,FETCH,CLOSE语句. 属性 类似于显示游标,隐式游标同样具有四种属性,只不过隐式游标以SQL%开头,而显示游标以Cursor_name%开头通过SQL%总是只能访问前一个DML操作或单行SELECT操作的游标属性,用于判断DML执行的状态和结果,进而控制程序的流程 SQL%ISOPEN …
一.游标的相关概念及特性 1.定义 通过游标方式定位到结果集中某个特定的行,然后根据业务需求对该行进行相应特定的操作. 2.分类 显示游标: 用户自定义游标,用于处理select语句返回的多行数据. 隐式游标: 系统自动定义的游标,记录集只有单行数据,用于处理select into 和DML语句. 3.游标使用的一般过程: 显示游标:声明, 打开, 读取, 关闭. 隐式游标:直接使用,读取,声明.打开.关闭都是系统自动进行的. 4.显示游标的过程描述 a.声明游标    CURSOR curso…
原文参考:http://plsql-tutorial.com/ 两种类型:     隐式:         执行INSERT.UPDATE.DELETE 或者只返回一条结果的SELECT语句时默认创建.     显式:          执行返回多条结果的SELECT语句时才能创建显式游标,创建时游标可以存储多行记录,但是同一个时间点上只能对一条记录进行处理. 隐式游标 隐式游标属性: 属性    返回类型 例子 %FOUND 至少一条记录受影响(或者返回)时返回TRUE SQL%FOUND 没…
1. 游标概念 字面意思是游动的光标,是指向上下文区域的句柄或指针. 在PL/SQL块中执行CRUD操作时,ORACLE会在内存中为其分配上下文区.用数据库语言来描述游标就是:映射在上下文区结果集中一行数据上的位置实体. 用户可以使用游标访问结果集中的任意一行数据,将游标指向某行后,即可对该行数据进行操作.游标为应用提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法,是设计嵌入式SQL语句的应用程序的常用编程方式. 在每个用户会话中,可以同时打开多个游标,其最大数量由数据库初…
在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个工作区(Work Area),或是一种结构化数据类型. 在每个用户会话中,可以同时打开多个游标,其数量由数据库初始化参数文件中的OPEN_CURSORS参数定义. 对于不同的 SQL 语句,游标的使用情况不同: SQL语句 游标 非查询语句 隐式的 结果是单行的查询语句 隐式的或显示的 结果是多行的…
 游标的使用 ①游标概念 为了处理SQL 语句,ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息, 当中包含要处理的行的数目.一个指向语句被分析以后的表示形式的指针以及查询的活动集(active set). 游标是一个指向上下文的句柄( handle)或指针. 通过游标,PL/SQL能够控制上下文区和处理语句时上下文区会发生些什么事情 ②显式游标处理 1.显式游标处理需四个PL/SQL步骤: 定义游标:就是定义一个游标名,以及与其相相应的SELECT…
原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) 得到了大家的强力支持,感谢.接下来再下猛药,介绍下一篇,大家一定要支持与推荐呀~!我也才有动力写后面的. 本篇主要内容如下: 4.1 游标概念 4.1.1 处理显式游标 4.1.2 处理…
游标--数据的缓存区 游标:类似集合,可以让用户像操作数组一样操作查询出来的数据集,实质上,它提供了一种从集合性质的结果中提取单条记录的手段. 可以将游标形象的看成一个变动的光标,他实质上是一个指针,在一段Oracle存放数据查询结果集或者数据操作结果集的内存中,这个指针可以指向结果集任何一条记录. 游标分静态游标和REF游标两类,静态游标包含显式游标和隐式游标. 显式游标: 在使用之前必须有明确的游标声明和定义,这样的游标定义会关联数据查询语句,通常会返回一行或多行.打开游标后,用户可以利用游…
PL/SQL 游标 emp.dept 目标表结构及数据 要求 基于部门表建立游标dept_cursor1,使用记录变量接收游标数据,输出部门表信息: 显示格式: 部 门 号: XXX 部门名称: XXX 所在位置: XXX 基于部门表建立游标dept_cursor2,使用标量变量接收游标数据,输出部门表信息: 显示格式:部门号:XXX 部门名称:XXX 所在位置:XXX 基于雇员表建立游标emp_cursor,根据用户输入的部门号,输出该部门薪水在5000元上的雇员姓名.薪水. 显示格式:雇员姓…
刚打开游标的时候,是位于一个空行,要用fetch into 才能到第一行. 只是要注意用更新游标的时候,不能在游标期间commit. 否则会报ORA-01002: fetch out of sequence      就是COMMIT;导致错误       在打开有for update的cursor时,系统会给取出的数据加上排他锁(exclusive),       这样在这个锁释放前其他用户不能对这些记录作update.delete和加锁.       而我一旦执行了commit,锁就释放了,…
需求:WebAPI服务端,通过Oracle数据库的存储过程,获取数据. 在PL/SQL 建立存储过程:(先来最简单的,就是把整个表都查出来) create or replace procedure SQL_WX_SP(out_return out sys_refcursor) is begin open out_return for 'select * from wx_sp'; end; C#代码:(这是调用的方法,out_return 这个是和存储过程中的游标参数对应的,类型是OracleDb…
在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,Oracle会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个工作区(Work Area),或是一种结构化数据类型. 在每个用户会话中,可以同时打开多个游标,其数量由数据库初始化参数文件中的OPEN_CURSORS参数定义. 对于不同的SQL语句,游标的使用情况不同: SQL语句 游标 非查询语句 隐式的 结果是单行的查询语句 隐式的或显示的 结果是多行的查询…