前言:
Oracle的对表操作中有一种类似于DataSet的对象操作方法CURSOR,它可以通过建立表的操作对象或者说表的指针对象来达到从表里面提取数据的操作。
说明:
一般通过SQL语言可以针对某个表的某一行或多行数据进行操作比如说SELECT,UPDATE等。这些操作必须以SQL语句的语法格式来被解释器解释并执行。在实际变成中经常用到,特别是用编程语言来对数据库操作时更是必不可少。当然数据库也不是不能自己来做一些处理的,简单的数据操作的话,像ORACLE这样的数据库可以用自身的PL/SQL语言来实现。不仅执行速度快,而且节省网络。因为它是直接在数据库端执行的。
CURSOR就是PL/SQL中的一种实现对表的对象化操作方法。
他一共分为两种:
显式型
解释:顾名思义,就是在程序书写过程中利用创建表对象的过程中,明确的使用变量名。
暗式型
解释:不是用变量名,而用简单的语法来完成对象的操作。ORACLE里面已经定义好了,只需要调用就可以使用。
关于PL/SQL的书写格式,这里省略。
显式型的CURSOR在定义过程中必须写在定义区间
也就是说需要写在 IS ..... BEGIN 或者 DECLARE .... BEGIN。
而执行的时候就要写在 BEGIN.....END了。
看不明白的话,就看例子了。
CREATE OR REPLACE PROCEDURE AAA
IS
CURSOR BBB IS
SELECT CCC FROM TABLE ;
vBBB BBB%ROWTYPE;
BEGIN
OPEN BBB;
LOOP
FETCH BBB INTO vBBB;
EXIT WHEN BBB%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(vBBB);
END LOOP;
CLOSE BBB;
END;
/
首相创建了一个PROCEDURE名字为AAA,然后在定义区间里面定义了一个CURSOR名字为BBB,
连接表TABLE并从中读取列CCC。之后定义了一个行类型的变量用于存储每一行的数据。
到此,表的对象以及读取数据的条件还有数据存储用的变量就都定义好了。
然后OPEN这个表对象,进入循环。每循环一次指针便会自动向后移动,将BBB里面的数据以行为单位读出存入vBBB。然后当BBB的指针到最后也就是说数据读到最后没有了的时候便退出循环并且关闭BBB。
DBMS_OUTPUT.PUT_LINE是用来在屏幕上打印vBBB用的。
与之相同 OPEN FETCH CLOSE 的语法格式看来挺麻烦的。这样的话就用FOR来代替也可以
BEGIN
FOR vBBB IN BBB;
LOOP
DBMS_OUTPUT.PUT_LINE(vBBB);
END LOOP;
END;
这就省事多了。意思也一目了然。因为SURSOR定义了变来名字,用几次也OK。
暗式型呢?
BEGIN
FOR vBBB IN (SELECT CCC FROM TABLE)
LOOP
DBMS_OUTPUT.PUT_LINE(vBBB);
END LOOP;
END;
这届这样写就行了,但是每次都要从写。脱离了这个循环就没办法使用了。
例:
create or replace function GETString(device in varchar2) return varchar2 is
wadmin varchar2(250);
begin
declare
cursor userRows is select u.czymc from RMAINT_PERSON p,RMINFO u where p.id = u.czyh and DEVICEID = device;
temp varchar2(250);
begin
open userRows;
-- 循环开始
loop
fetch userRows into temp;
exit when userRows%notfound; -- 跳出条件
wadmin := wadmin||','||temp;
end loop;
-- 循环结束
close userRows;
end;
return(wadmin);
end GETString;
分享到:
相关推荐
《Oracle从入门到精通》是专门为初学者设计的一本学习指南,涵盖了Oracle数据库的基本概念和高级技术。 1. 基本概念 - SQL(Structured Query Language):结构化查询语言是数据库的操作语言,通过使用SQL语句可以...
本资料《Oracle PLSQL 从入门到精通》将引领读者深入理解这一强大的工具。 首先,入门阶段,你需要了解PLSQL的基本结构,包括声明部分(DECLARATION)、执行部分(EXECUTION)和异常处理部分(EXCEPTION)。声明...
本教程“Oracle入门实例”旨在帮助初学者快速理解Oracle的核心概念和技术,包括如何操作表、创建视图、运用函数、掌握游标以及编写存储过程。下面我们将深入探讨这些关键知识点。 一、表的操作 在Oracle中,表是...
这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了帮助读者通过实践来深入理解和掌握Oracle数据库的编程技术。 首先,让我们探讨Oracle PL/SQL的基础知识。PL/SQL是Oracle数据库的内置编程语言,由块构成...
CURSOR c_dept IS SELECT DEPT_NO, DEPT_NAME FROM dept; ln_dno NUMBER; lvs_dname VARCHAR2(40); BEGIN OPEN c_dept; LOOP FETCH c_dept INTO ln_dno, lvs_dname; EXIT WHEN c_dept%NOTFOUND; DBMS_...
以上就是对"ORACLE 存储过程入门范例"中的关键知识点的详细解释。通过学习和实践这些概念,可以深入理解Oracle存储过程的编写和使用,从而在数据库管理、数据处理和业务逻辑实现上更高效地工作。
Oracle游标是PL/SQL编程中的重要组成部分,主要用于处理单行或多行查询结果。游标允许程序员逐行处理查询结果,而不是一次性加载所有数据。在Oracle中,游标分为显式游标和隐式游标。 1. **隐式游标**:在PL/SQL中...
- 游标的使用:DECLARE CURSOR语句的使用方法。 - 游标循环:FETCH、CLOSE等游标操作语句的使用。 4. **触发器**: - 触发器的概念:了解触发器的工作机制。 - 创建触发器:CREATE TRIGGER语句的使用方法。 - ...
### ORACLE 入门基础:本地动态 SQL 执行语句 #### 一、概述 本文旨在为初学者介绍 Oracle 数据库的基本概念,并重点讲解如何在 Oracle 中使用 PL/SQL 进行动态 SQL 的编写与执行。此外,文章还涵盖了 PL/SQL 的...
本入门教程旨在帮助初学者快速理解并掌握Oracle PL/SQL的基础知识,通过丰富的实例来解析其核心概念。 一、PL/SQL简介 PL/SQL是Oracle数据库提供的过程化语言,它允许开发者编写包含SQL语句的程序块,用于执行复杂...
### Oracle入门基础教程知识点概述 #### 一、数据库基础 - **定义与概念**:介绍数据库的基本定义,包括什么是数据库、数据库管理系统(DBMS)、数据模型等。 - **数据库分类**:按照不同的标准对数据库进行分类,...
### Oracle PL/SQL语言入门详解 #### 背景与概览 Oracle PL/SQL(Procedural Language for SQL)是Oracle数据库环境下的一个过程化编程语言,它结合了SQL的强大数据操作能力和传统过程化语言的流程控制能力,提供...
### Oracle 游标入门知识点详解 #### 一、Oracle游标简介 在Oracle数据库中,游标(Cursor)是一种用于处理查询结果集的机制。它允许用户逐行地访问查询结果,这对于处理大量数据时非常有用。游标分为显式游标和...
Oracle PL/SQL是一种强大的编程语言,它扩展了SQL的功能,使得数据库管理更加灵活和高效。以下是对标题和描述中提到的各个知识点的详细说明: **一、块** PL/SQL块是程序的基本构造单位,由声明、执行和异常处理三...
### Oracle教程01-入门:深入理解PL/SQL #### PL/SQL概述 PL/SQL,全称为Procedural Language for SQL,是Oracle数据库的一种强大功能,它将过程化编程特性融入了SQL语言中,使得数据库操作更加高效、灵活且安全。...
本资源"Oracle9i PLSQL 从入门到精通"旨在帮助初学者逐步掌握这个重要的数据库编程语言,并帮助熟练用户深化对PLSQL的理解。 PLSQL全称为Procedural Language/SQL,它是SQL的扩展,添加了流程控制语句、异常处理、...
这个压缩包文件"oracle存储过程学习经典入门.rar_oracle"显然包含了帮助初学者理解并掌握Oracle存储过程的基础教程。下面将详细讲解Oracle存储过程的相关知识点。 首先,存储过程是预编译的SQL语句集合,它在数据库...