`
q137681467
  • 浏览: 23271 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

PL/SQL 中的select ..into.. 以及 游标(Cursor)

阅读更多

转:PL/SQL 中的select ..into.. 以及 游标(Cursor)

                                     

Select  empno, ename  from emp;返回的是多于一条数据, 这个是肯定的.但是我们声明两个变量来依次获得每条数据的话, 我们只能获得一条记录,因为他们不是数组.

这种不匹配的现象在电子线路中类似于阻抗不匹配.

 

如果只是检索一条数据,那么我们可以用

declare

   var_empno number(10);

   var_ename varchar2(32);

begin

   select empno , ename into var_empno, var_ename

   from emp

   where empno=7369;

   DBMS_output.put_line(var_empno);

   DBMS_output.put_line(var_ename);

end;

/

 

这是很简单地检索一条数据的方法.

 

但是我们稍微改一下:

declare

   var_empno number(10);

   var_ename varchar2(32);

begin

   select empno , ename into var_empno, var_ename

   from emp;

   DBMS_output.put_line(var_empno);

   DBMS_output.put_line(var_ename);

end;

/

这样就会引发异常:-1422

如果再该一下,检索不到数据就回得到100的异常代码.

 

当然我们可以处理这些异常

When

Condition

Then

Do somethings;

 

但是如果我们要检索多行数据的每一条数据, 那么单单用

Select * from table; 是不行的.

这里我们就需要用游标.

一个很好的比喻是每次取一点冰块的故事.游标cursor 相当于一个指针,这里没有指向内存,而是指向了一个每次能够取得一条记录的select 语句.

 

一个在form 里写的post_query(显示完所有的item 进行的)触发:

declare

            CURSOR a IS select dname from dept where deptno=:emp.deptno;

            a_var varchar2(32);

begin

            open a ;

            fetch a into a_var;

            :emp.department_name:=a_var;

            if a%notfound then

                        :emp.department_name:='error';

                        end if;

            close a;

end;

 

声明不用说了,要先打开,执行,关闭.

游标的属性

Cursor%notfound

Cursor%found

 

具体可以查阅pl/sqlapi , such as : Knowledge Xpert for PLSQL

这两个属性代表找到/找不到, 是个boolean ,所有我们可以用if来判断.

 

关于游标里的局部变量:

a_var varchar2(32);

 

要知道table所查出的栏位的数据类型, 我们可以让oracle 自己去查到这个类型,

a%rowtype.写法比较独特.

 

我们可以理解成select into 是一种隐式cursor

分享到:
评论

相关推荐

    PL/SQL中用到的几种不同类型的游标写法(转)

    在PL/SQL(Procedural Language/Structured Query Language)中,游标是处理单行或一组数据的关键工具,尤其在数据库编程中。游标允许程序员逐行操作数据集,而不仅仅是整个数据集作为一个整体。本篇文章将深入探讨...

    pl/sql精通

    《PL/SQL精通》这本书是针对Oracle数据库管理系统中PL/SQL编程语言的深入学习指南。Oracle SQL是Oracle数据库系统的核心语言,而PL/SQL则扩展了SQL的功能,提供了过程化编程的能力,使得数据库管理和开发更加高效和...

    PL/SQL 基础.doc

    PL/SQL 基础,一个不错的 PL/SQL 参考手册。内容预览: ---- 第一章 PL/SQL 简介 ---- 1. Oracle应用编辑方法概览 1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和...

    oracle pl/sql实例精讲student数据库模式数据和表脚本

    在这个实例精讲中,你将学习如何使用PL/SQL进行数据操作,创建存储过程和函数,以及如何有效地处理错误和事务。通过对"student"数据库模式的实践,你将掌握Oracle数据库管理和应用程序开发的核心技能。通过不断练习...

    PL/SQL语言的编译与游标编程实例(十).pdf

    在PL/SQL中,可以使用显式游标(Explicit Cursor)或隐式游标(Implicit Cursor)。 - 隐式游标是由数据库自动管理的游标,用于处理SELECT语句返回单行数据的情况。 - 显式游标需要用户在PL/SQL代码中声明、打开、...

    PL/SQL基础

    此外,PL/SQL还有游标(CURSOR),用于逐行处理查询结果。游标通常与FOR循环一起使用,以遍历和操作查询结果集。 最后,PL/SQL中的事务管理也是关键。你可以使用`COMMIT`提交事务,`ROLLBACK`回滚事务,或者`...

    第九讲 PL/SQL语言对数据库的交互作用.pdf

    根据提供的文件内容,我们可以从中提取到关于PL/SQL语言及其对数据库交互作用的丰富知识点,本知识点详解将围绕以下几个方面展开:PL/SQL基本操作、PL/SQL处理数据库记录、游标(Cursor)的概念及其在PL/SQL中的使用...

    pl/sql

    在PL/SQL中,你可以编写复杂的数据库应用程序,包括存储过程、函数、触发器、游标和异常处理等。 PL/SQL的语法结构主要由以下部分组成: 1. **声明部分**:在这个部分,我们声明变量、常量、游标、记录类型等。...

    pl/sql学习笔记

    PL/SQL支持多种数据类型,包括数值类型(如NUMBER、INTEGER)、字符类型(VARCHAR2、CHAR)、日期时间类型(DATE)、布尔类型(BOOLEAN)以及复合数据类型(如记录、数组)。 三、PL/SQL变量 变量在声明部分定义,...

    PL/SQL基础一之pl/sql块

    本篇文章主要探讨PL/SQL的基础知识,包括其结构、变量、条件判断、循环以及异常处理。 PL/SQL块是PL/SQL的基本组成单元,它由声明部分、执行部分和异常处理部分组成。声明部分用于定义变量和常量;执行部分包含SQL...

    pl/sql学习文档

    10. **PL/SQL的性能优化**:了解如何优化SQL查询,减少不必要的磁盘I/O,以及合理使用索引,都是提高PL/SQL程序性能的关键。 通过深入学习和实践这些知识点,您将能够熟练地使用PL/SQL进行数据库编程,实现复杂的...

    PL/SQL 基础学习材料

    PL/SQL是Oracle数据库系统中的一个强类型编程语言,它扩展了SQL,使得开发者能够编写复杂的存储过程、函数和触发器。以下是对标题和描述中所提到的知识点的详细解释: 1. **声明变量 (Declaring Variables)** 在...

    pl_sql基本语法例子.rar_SQL2569_oracle_pl/sql_plsql增删改查

    PL/SQL是Oracle数据库系统中的一个重要组成部分,它是一种结合了SQL与过程编程的语言,用于在Oracle环境中编写存储过程、函数、触发器等数据库对象。本资料主要涵盖了PL/SQL的基本语法以及数据的增删改查操作和视图...

    pl/sql及常见实用oracle语句学习

    在本文中,我们将深入探讨PL/SQL以及Oracle数据库中的一些常见实用语句。 PL/SQL全称为Procedural Language/Structured Query Language,它是SQL的扩展,增加了过程化编程元素。它允许开发人员编写复杂的业务逻辑,...

    ORACLE PL/SQL命令集

    - **嵌套SQL**:在PL/SQL块中直接使用SQL语句,如`SELECT INTO`用于将查询结果赋值给变量。 - **动态SQL**:通过字符串拼接生成SQL语句并在运行时执行,如`EXECUTE IMMEDIATE`。 6. **PL/SQL的输入输出** - **...

    PL/SQL Developer8.04官网程序_keygen_汉化

    在PL/SQL中处理显示游标所必需的四个步骤:  1)声明游标;CURSOR cursor_name IS select_statement  2)为查询打开游标;OPEN cursor_name  3)取得结果放入PL/SQL变量中; FETCH cursor_name INTO list_of_...

    PL/SQl超级笔记

    游标(Cursor)是PL/SQL处理SQL查询结果的重要工具。它可以用于逐行处理查询结果,通常与FOR循环结合使用,例如: ```sql DECLARE cursor_name CURSOR FOR SELECT column1, column2 FROM table_name; var1 ...

    pl/ sql code

    PL/SQL是Oracle数据库系统中的一个编程语言,全称为Procedural Language/Structured Query Language,它是SQL的一个扩展,集成了SQL的查询能力与过程性编程语言的控制结构。本压缩包“pl/sql code”中包含的是一些...

    pl/sql的语法帮助

    在PL/SQL中,你可以定义变量、创建过程、函数、触发器,以及处理异常。以下是一些关键的PL/SQL语法点: 1. **声明变量**:在PL/SQL块的声明部分,你可以声明变量,如`DECLARE var_name datatype;`。例如,`DECLARE ...

Global site tag (gtag.js) - Google Analytics