问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

pl/sql中游标的数据是可以改变的

发布网友 发布时间:2022-05-02 03:56

我来回答

2个回答

懂视网 时间:2022-05-02 08:17

游标 :是一个指向上下文的句柄( handle)或指针。通过游标,PL/SQL可以控制上下文区和处理语句时上下文区会发生些什么事情。
定义游标:就是定义一个游标名,以及与其相对应的SELECT 语句 ,     其    一般形式为:
   CURSOR cursor_name IS  select_statement;
打开游标:就是执行游标所对应的SELECT 语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。
OPEN cursor_name;

提取游标:就是检索结果集合中的数据行,放入指定的输出变量中。
FETCH cursor_name INTO {variable_list | record_variable };

关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用FETCH 语句取其中数据

CLOSE cursor_name;

例如:DECLARE
     v_ename  emp.ename%TYPE;
       v_sal      emp.sal%TYPE;
       CURSOR c_cursor IS SELECT ename, sal FROM emp WHERE rownum<11;
BEGIN
OPEN c_cursor;
FETCH c_cursor INTO v_ename, v_sal;
WHILE c_cursor %FOUND LOOP
   DBMS_OUTPUT.PUT_LINE(v_ename||’---‘||to_char(v_sal) );
   FETCH c_cursor INTO v_ename, v_sal;
END LOOP;
CLOSE c_cursor;
END;
PL/SQL语言提供了游标FOR循环语句,自动执行游标的OPEN、FETCH、CLOSE语句和循环语句的功能。

FOR index_variable IN cursor_name[value[, value]…] LOOP
    -- 游标数据处理代码
END LOOP;
例如:DECLARE
       CURSOR c_sal IS SELECT empno, ename, sal FROM emp ;
BEGIN
--隐含打开游标
   FOR v_sal IN c_sal LOOP
   --隐含执行一个FETCH语句
   DBMS_OUTPUT.PUT_LINE( to_char(v_sal.empno)||’---‘||v_sal.ename||’---‘||to_char(v_sal.sal)) ;
   --隐含监测c_sal%NOTFOUND
   END LOOP;
--隐含关闭游标
END;
游标变量也是一个指向多行查询结果集合中当前数据行的指针。但与游标不同的是,游标变量是动态的,而游标是静态的。
游标变量为一个指针,它属于参照类型,所以在声明游标变量类型之前必须先定义游标变量类型。在PL/SQL中,可以在块、子程序和包的声明区域内定义游标变量参照类型。
TYPE ref_type_name IS REF CURSOR [ RETURN return_type]
 打开游标变量时使用的是OPEN…FOR 语句。格式为:
OPEN {cursor_variable_name | :host_cursor_variable_name}
    FOR select_statement;

使用FETCH语句提取游标变量结果集合中的数据。格式为:
FETCH {cursor_variable_name | :host_cursor_variable_name}
    INTO {variable [, variable]…| record_variable};

CLOSE语句关闭游标变量,格式为:
CLOSE {cursor_variable_name | :host_cursor_variable_name

游标变量应用举例:

例:BEGIN
    IF selection=’D’ THEN
        OPEN refcur FOR SELECT deptno, dname FROM dept;
        DBMS_OUTPUT.PUT_LINE(‘Department data’);
    ELSIF selection=’E’ THEN
        OPEN refcur FOR SELECT empno, ename||’ is a ‘||job FROM emp;
        DBMS_OUTPUT.PUT_LINE(‘Employee data’);
    ELSE
        DBMS_OUTPUT.PUT_LINE(‘Please enter ‘‘D’’ or ‘‘E’’ ’);
        RETURN;
    END IF;
    DBMS_OUTPUT.PUT_LINE(‘----------------------‘);
    FETCH refcur INTO sample;
    WHILE refcur%FOUND LOOP
        DBMS_OUTPUT.PUT_LINE(sample.id||’: ‘||sample.description);
        FETCH refcur INTO sample;
    END LOOP;
    CLOSE refcur;
    END;


 

PL/SQL中的游标

标签:sample   otf   close   tput   动态   不同   释放   script   for循环语句   

热心网友 时间:2022-05-02 05:25

肯定是可变的啊。因为游标支持where条件啊,有where条件即满足条件才能进入游标循环。然而满足条件的数据肯定是不同的了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...时间会发作,很痛的,请问是这样吗?会痛多久? ...已经坏了,如今全身浮肿,尿排不出,医生说就这 我爷爷得了肝癌晚期,腹水,不能手术.听说氩氦超冷刀技术能治.哪里有... 父亲59岁得了肝癌晚期,医生说最多半年时间了,上面还有80多岁的爷爷... 长春跑大连的列车员,怎么区分正式分和临时工呢? 员工刚怀孕就被开除,开除负责人拒不认错,你如何看待该公司的态度?_百 ... 员工在职期间怀孕,老板可以无故迟退吗? 老板开除怀孕女员工违法吗 如何选购蚊帐 什么样的蚊帐最好 你好,微信每天加好友上限是多少 搜索加好友,每天限制多少? 搜索加好友,每天限制多少? 手淫时间长,做爱时间短,这是怎么回事? 手淫导致时间短怎么治疗 手淫时间过短怎么办?需要停止手淫多久才能完全康复呢? 以前手淫频繁现在时间短硬度不够 用力补金秋管用吗 本人18,手淫次数多了,手淫的时间越来越短,需要停止多久才能恢复呢? 王广允女朋友是谁 *时间过短怎么办?需要停止*多久才能完全康复呢?谢谢了,大神帮忙啊 王广允是谁?能发几张照片过来吗? 本人18,手淫时间太短了怎么办,不用药物能不能恢复,需要多久才能恢复 虎年央视春晚的节目中,你最喜欢哪一个节目呢? 由于手淫过度引起的性交时间过短怎么办 以前经常*,现在有点腰酸痛,过正常性生活时间短,现应该怎样改善? 公司年夜饭需要表演节目4-6人,有什么好点的舞蹈,,搞笑点的..谢谢 2021年朱一龙跨年在哪个台? 过度手淫导致我现在性时间过短怎么办 公司年夜饭的节目表演 手淫过度时间短怎么治 女生背后摇什么意思 女生在我后面摇我凳子什么意思? 风尘三侠讲的是什么? 为什么世界上许多国家宁愿跟着美国背后摇尾乞怜? 《督军的第七夫人》txt下载在线阅读全文,求百度网盘云资源 DOTA中沙王这个英雄怎么能提高放大成功率 电影史上有哪些动人的镜头? 蓝凤凰的人物样貌 两人一起喝酒回家我开的电瓶车他在后面摇一起摔跤都到医院他严重一点要开刀那? 两人一起喝酒回家我开的电瓶车他在后面摇一起摔跤都到医院他严重一点要开刀那? 雾谷传奇小说txt全集免费下载 雾谷传奇小说txt全集免费下载 哪位P图高手能给我P张小说封面啊? 哪位P图高手能给我P张小说封面啊? 我的自传400字 经纪人证多长时间发一次? 梦见已故的姥爷在梦里活着很健康 还和我说话 我告诉姥爷 我很想你 全国房地产经纪人证书是属于中级职称吗? 马鞍山如何报考房地产经纪人证?? plsql里游标有什么作用,查询为什么用游标而不直接用select语句