PL/SQL语法 - 游标

简介: Oracle中的游标分为显式游标和隐式游标。隐式游标是系统自动为你创建的。显式游标是用户通过创建CURSOR的方式来创建。在Oracle中有三种类型的游标:1)不带参数的游标      eg:      cursor customer_cur is            select * from ...
Oracle中的游标分为显式游标和隐式游标。
隐式游标是系统自动为你创建的。
显式游标是用户通过创建CURSOR的方式来创建。

在Oracle中有三种类型的游标:

1)不带参数的游标
      eg:
       cursor customer_cur is
            select * from customer s;      

2)带参数的游标
      eg:
        cursor customer_cur(customer_id in number) is
            select * from customers
            where customerid = customer_id;

3)有返回结果的游标
      
eg:
        cursor customer_cur return customers%rowtype is
            select * from customers;

游标的五大属性:
1)%FOUND              - 记录找到
2)  %NOTFOUND        - 记录没找到
3)  %ROWCOUNT       - 游标当前记录数
                                    (每取回一条记录,ROWCOUNT将增加1)
4)  %ISOPEN              - 游标是否被打开
5)  %ROWTYPE           - 代表游标取回的某一行记录

游标使用四大步骤:
1) 声明游标
      cursor is select语句

2) 打开游标  
      open 游标名

3) 从游标中取回数据
      fetch 游标名 into 行记录变量

4) 关闭游标
      close 游标名

下面我们就来举个例子:
declare  
  
--  声明游标
   cursor  customer_cur(city_in  char is
    
select   *   from  customers
    
where  city  =  city_in;
  customer_rec customer_cur
% ROWTYPE;
begin
  
--  打开游标
   if   not  customer_cur % ISOPEN  then
    
open  customer_cur( ' Madrid ' );
  
end   if ;
  
  
--  从游标中取回数据
   fetch  customer_cur  into  customer_rec;
  
  
/*
    使用游标
  
*/
  
while  customer_cur % FOUND
  loop
    dbms_output.put_line(TO_CHAR(customer_cur
% ROWCOUNT ||   ' : '   ||  customer_rec.customerid  
      
||   ' '   ||  customer_rec.city);
    
fetch  customer_cur  into  customer_rec;
  
end  loop;
  
  
--  关闭游标
   close  customer_cur;
  
end ;



目录
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础第一篇(SQL通用语法与分类)
MySQL数据库基础第一篇(SQL通用语法与分类)
|
4月前
|
SQL PHP
thinkphp之进阶sql语法,持续更新
thinkphp之进阶sql语法,持续更新
28 0
|
6天前
|
SQL 存储 关系型数据库
mysql SQL必知语法
本文详细介绍了MySQLSQL的基本语法,包括SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY等关键字的使用,以及数据库操作如创建、删除表,数据类型,插入、查询、过滤、排序、连接和汇总数据的方法。通过学习这些内容,读者将能更好地管理和操
8 0
|
14天前
|
SQL 关系型数据库 MySQL
Mysql(2)—SQL语法详解
SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准编程语言。它主要用于数据的查询、插入、更新和删除等操作。SQL最初在1970年代由IBM的研究人员开发,旨在处理关系数据模型。
20 0
|
2月前
|
SQL 关系型数据库 MySQL
INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
【8月更文挑战第7天】INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
37 5
|
3月前
|
SQL 关系型数据库 数据库
sql语法
【7月更文挑战第30天】sql语法
42 12
|
2月前
|
SQL Oracle 关系型数据库
SQL与PL/SQL:数据库编程语言的比较
【8月更文挑战第31天】
50 0
|
2月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
228 0
|
3月前
|
SQL Java 数据库连接
mybatis动态SQL常用语法总结
MyBatis 使用 OGNL 表达式语言处理动态SQL,如 `if` 标签进行条件判断,`choose`、`when`、`otherwise` 实现多条件选择,`where`、`set` 管理SQL关键字,`trim` 提供通用修剪功能,`foreach` 遍历集合数据。`sql` 和 `include` 用于代码重用,`selectKey` 处理插入后的返回值。参数传递支持匿名、具名、列表、Map、Java Bean和JSON方式。注意SQL转义及使用合适的jdbcType映射Java类型。
81 7
|
3月前
|
SQL 数据库 索引
SQL SELECT语句的语法与查询优化技巧
SQL SELECT语句的语法与查询优化技巧