`

使用Cursor

阅读更多

使用Cursor:

 

--测试一下,今天才申请使用itpub.net 的blog

 

declare

 

RoomID Room.RoomID%Type;

 

RoomName Room.RoomName%Type;

 

cursor crRoom is

 

select RoomID,RoomName

 

from Room;

 

begin

 

open crRoom;loop;

 

fetch crRoom into RoomID,RoomName;

 

exit when crRoom%notFound;

 

end loop;

 

close crRoom;

 

end;

 

 

 

 

 

 


3.1在游标使用入口参数

 

SQL语句的Where 子句中恰当使用 相关语句简化逻辑,本来需要使用两个游标,把相关入口参数放入到SQL语句的Where 子句中,一个就搞定了:

 

cursor crRoom is
select 
distinct 楼层,房屋用途
from TT_没有处理的房屋 t
where 数据级别>= 
0 and 房屋处理类别= 3 and 产权编号=p_产权编号
and 拆迁房屋类别=p_拆迁房屋类别
and 面积>
0 and (not p_房屋用途 is null
and 房屋用途=p_房屋用途
or p_房屋用途 is null);

 

另外一个例子:

 

CREATE OR REPLACE PROCEDURE PrintStudents(
p_Major IN students.major%TYPE) AS
CURSOR c_Students IS
SELECT first_name, last_name
FROM students
WHERE major = p_Major;
BEGIN
FOR v_StudentRec IN c_Students LOOP
DBMS_OUTPUT.PUT_LINE(v_StudentRec.first_name || ' ' ||
v_StudentRec.last_name);
END LOOP;
END;

 

 

 

Oracle带的例子examp6.sql

 

DECLARE CURSOR bin_cur(part_number NUMBER) IS SELECT amt_in_bin
FROM bins
WHERE part_num = part_number AND 
amt_in_bin > 
0 ORDER BY bin_num
FOR UPDATE OF amt_in_bin;
bin_amt bins.amt_in_bin%TYPE;
total_so_far NUMBER(
5) := 0;
amount_needed CONSTANT NUMBER(
5) := 1000;
bins_looked_at NUMBER(
3) := 0;
BEGIN
OPEN bin_cur(
5469);
WHILE total_so_far < amount_needed LOOP
FETCH bin_cur INTO bin_amt;
EXIT WHEN bin_cur%NOTFOUND;
/* If we exit, there's not enough to *
* satisfy the order. */
 bins_looked_at := bins_looked_at + 1;
IF total_so_far + bin_amt < amount_needed THEN
UPDATE bins SET amt_in_bin = 
0 WHERE CURRENT OF bin_cur; 
-- take everything in the bin
 total_so_far := total_so_far + bin_amt;
ELSE -- we finally have enough
 UPDATE bins SET amt_in_bin = amt_in_bin
- (amount_needed - total_so_far)
WHERE CURRENT OF bin_cur;
total_so_far := amount_needed;
END IF;
END LOOP;
CLOSE bin_cur;
INSERT INTO temp VALUES (NULL, bins_looked_at, 
'<- bins looked at');
COMMIT;
END;

 

 

 

 

-- Created on 2004-8-9 by ADMINISTRATOR 
declare 
--带有变量的Cursor

 

cursor crBooks(c_bookTitle varchar2) is 
select *
from books a
where a.title like c_bookTitle||
'%'
;
begin
for v_Books in crBooks(
'Oracle8'
) loop
dbms_output.put_line(v_Books.author1); 
end loop;
end;


 

3.2.使用对象的属性

 

-- Author : XJG

 

-- Created : 2002.03.01 20:52:22

 

-- Purpose : 产生拆迁数据的报表数据

 

procedure GenConCQReport (

 

p_UserID in Common.SEQType, ---0 =使用权,1 = 高级使用权,2 = 机团

 

p_UserType in Common.THundred) is

 

type TTitleArr is varray (5) of varchar2 (20);

 

v_Title TTitleArr

 

:= TTitleArr ('可以签订的财产',

 

'已经签订的财产',

 

'可能可以签定的财产',

 

'不能签订的财产',

 

'已签定的合同'

 

);

 

v_DateLevel TTitleArr := TTitleArr ('1', '2', '3', '4', '5');

 

begin

 

forall i in v_Title.first .. v_Title.last

 

update TT_拆迁数据分类 T

 

set T.数据级别 = to_number (v_DateLevel (i))

 

where (T.财产编号 is not null)

 

and (T.财产编号, T.财产类别) in (

 

select TT.财产编号, TT.财产类别

 

from TT_拆迁数据分类 TT

 

start with TT.标题 = v_Title (i)

 

connect by prior TT.拆迁数据分类编号 =

 

TT.上级编号);

 

end;

 

 

 

 

3.3匿名游标

 

匿名游标,是我自己给的一个称呼。在游标FOR循环中可以定义查询,由于没有显式声明所以游标没有名字,记录名通过游标查询来定义。

 

 

DECALRE

 

v_tot_salary EMP.SALARY%TYPE;

 

BEGIN

 

FOR r_dept IN (SELECT deptno,dname FROM dept ORDER BY deptno) LOOP

 

DBMS_OUTPUT.PUT_LINE('Department:'|| r_dept.deptno||'-'||r_dept.dname);

 

v_tot_salary:=0;

 

DBMS_OUTPUT.PUT_LINE('Toltal Salary for dept:'|| v_tot_salary);

 

END LOOP;

 

END;

 

3.4游标指针

 

-- Author : wdz
-- Created : 2003-10-22
-- Purpose : 使用系统定义的游标指针类型作为参数

分享到:
评论

相关推荐

    android 使用 Cursor 访问数据库 生成 ListView 并获取选中项的值

    android 使用 Cursor 访问数据库 生成 ListView 并获取选中项的值

    Cursor下载安装包-win

    6. **文档与支持**:随安装包一起提供的readme.txt文件通常包含了软件的使用说明、许可协议、系统需求等重要信息,确保用户正确安装和使用Cursor。 Cursor的出现,结合了最新的AI技术,预示着编程辅助工具的一个新...

    matlab开发-cursor

    总结来说,"matlab开发-cursor"项目是关于如何在MATLAB环境中创建和使用cursor,以及如何响应用户的点击事件,获取图形上的精确数据点。通过掌握这些技巧,开发者可以更高效地进行数据探索和应用开发。

    Cursor 0.2.1安装包

    在使用Cursor 0.2.1时,用户应该注意软件的系统要求,确保自己的操作系统、硬件配置和依赖库能满足运行需求。同时,安装前备份重要数据是个好习惯,以防万一安装过程中出现问题。安装完成后,用户应按照软件提供的...

    Android cursor的用法

    对于新手而言,理解 Cursor 的工作原理以及如何正确使用它至关重要。 #### 二、Cursor 类的基础概念 1. **Cursor 对象**:表示一个指向数据的指针,通常用于存储查询结果。每个 Cursor 都有一个位置指针,初始时...

    Cursor:AI 驱动的编程工具

    【使用 Cursor 的优势】 1.提高开发效率:通过智能补全、自动错误修复和优化建议,开发者可以更快地完成代码编写和调试工作。 2.降低错误率:Cursor 的代码审查和自动修复功能,有助于避免常见的编程错误,确保代码...

    使用cursor+vercel搭建个人网页,并部署访问

    Cursor的一款基于 VS Code 二次开发的 AI 编辑器,它结合GPT3.5和4.0功能; vercel 是一个云计算和部署平台,它提供了一系列工具和服务,旨在帮助开发者更轻松地构建、部署和管理他们的应用程序(网站部署:Vercel ...

    mybatis-cursor-demo.zip

    使用Cursor的关键在于调用`selectList`方法时传入`ExecutorType.SIMPLE`或`ExecutorType.BATCH`,并确保返回值类型是`List`的子类,比如`ArrayList`或`LinkedList`,这样MyBatis就会自动启用Cursor模式。 以下是一...

    Android App调试内存泄露之Cursor.zip

    3. **AsyncTask或其他后台线程持有Cursor**:如果在异步任务或其他后台线程中使用Cursor,并且未正确关闭,当主线程销毁时,Cursor可能仍然活跃,导致内存泄漏。 4. **CursorAdapter和ListView/RecyclerView**:当...

    在不使用CURSOR的情况下遍历MSSQL表

    标题提到的“在不使用CURSOR的情况下遍历MSSQL表”是一种更高效的数据处理策略。 首先,我们可以使用T-SQL的内置函数和结构来实现无游标遍历。一种常见的方法是使用窗口函数(Window Functions),如ROW_NUMBER()、...

    Matplotlib使用Cursor实现UI定位的示例代码

    以下是一个使用Cursor的简单示例代码: ```python import matplotlib.pyplot as plt import numpy as np from matplotlib.widgets import Cursor # 创建示例数据 lineprops = dict(color="red", lw=2) fig, ax = ...

    oracle笔记游标的使用

    oracle笔记游标的使用,游标的详细代码案例,游标知识点笔记!

    cursor多版本安装包

    本文将深入探讨Cursor这款软件/插件及其不同版本的安装包,以及在开发环境中如何管理和使用这些版本。 Cursor是一款可能用于文本编辑、数据库操作或图形用户界面设计的开发工具。它可能包含各种功能,如代码高亮、...

    保姆级Cursor-Vscode使用教程

    保姆级Cursor-Vscode使用教程

    行业教育软件-学习软件-Cursor Translator 3.1.0 Build 396 英文版.zip

    在使用Cursor Translator时,用户只需将鼠标光标悬停在任何文本上,软件就会自动识别并翻译选中的单词或短语。这在浏览网页、阅读电子邮件或文档时非常方便。此外,软件可能还支持多种语言之间的互译,不仅限于英文...

    axure中继器的使用

    最后,我们使用Cursor函数获取鼠标的当前位置,并设置动态面板的绝对位置为[[Cursor.X-15]],[[Cursor.Y-15]],从而实现动态面板跟随鼠标的点击效果。 Math函数的应用 Math函数可以用于实现各种数学运算,例如圆周...

    Android开发笔记之:深入理解Cursor相关的性能问题

    CursorWindow对Cursor中的内容大小有限制,限制为1024*1024也就是1M,换句话说Cursor中数据的大小不能超过1M,如果超过1M会引发如下的错误: 代码如下:08-23 05:48:31.838: DEBUG/Cursor(1805): skip_rows row 14908...

    Android检测Cursor泄漏的原理以及使用方法

    2. 在异步任务或线程中使用Cursor,当任务完成或线程结束,Cursor可能仍然保持活动状态。 3. 将Cursor引用保存在非局部变量中,导致Cursor生命周期超出其应有的范围。 Android检测Cursor泄漏的原理基于Java对象的...

    全新代码编辑器 Cursor Linux版本0.1.11

    11. **跨平台兼容**:尽管是Linux版本,Cursor编辑器可能也考虑到了跨平台兼容性,使得在Windows和macOS上也能使用。 12. **文档与教程**:Cursor很可能提供了详细的用户手册和在线教程,帮助新手快速上手。 总的...

Global site tag (gtag.js) - Google Analytics