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

pl/sql存储过程中 如何建立临时表的游标?

发布网友 发布时间:2022-04-10 02:58

我来回答

2个回答

懂视网 时间:2022-04-10 07:20

游标 :是一个指向上下文的句柄( 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-04-10 04:28

一楼回答正确,另外再说一个简单点的:
FOR
REC
--(rec是游标名,可以自己定义)
IN
(select
*
from
temp1)
loop
后用到temp1的哪些信息就取REC的相应信息就行.
结束时用
END
LOOP;(循环结束)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
红米手机怎么设置仅在wifi下载 映泰A770L3 6.x详细参数 映泰A770L3 6.x重要参数 问心诗集电子书txt全集下载 《第26局世界大学生运动会诗歌集》txt全集下载 自由体诗的欣赏txt全集下载 徐志摩诗全集txt全集下载 站立的近义词有哪些 站立的近义词是什么 小学语文教师工作评价1000字 吉林电气工程学院什么样 梦见汽车掉进水里我爬上很高的墙头下不来? 野生每天喝蜂蜜柠檬水对肌肤有好处吗? 全国房地产经纪人资格证取得后多长时间内必须注册,如果一直没注册,是不是会失效? plsql里游标有什么作用,查询为什么用游标而不直接用select语句 马鞍山如何报考房地产经纪人证?? 全国房地产经纪人证书是属于中级职称吗? 梦见已故的姥爷在梦里活着很健康 还和我说话 我告诉姥爷 我很想你 经纪人证多长时间发一次? 我的自传400字 哪位P图高手能给我P张小说封面啊? 哪位P图高手能给我P张小说封面啊? 雾谷传奇小说txt全集免费下载 雾谷传奇小说txt全集免费下载 两人一起喝酒回家我开的电瓶车他在后面摇一起摔跤都到医院他严重一点要开刀那? 两人一起喝酒回家我开的电瓶车他在后面摇一起摔跤都到医院他严重一点要开刀那? 蓝凤凰的人物样貌 电影史上有哪些动人的镜头? DOTA中沙王这个英雄怎么能提高放大成功率 《督军的第七夫人》txt下载在线阅读全文,求百度网盘云资源 为什么世界上许多国家宁愿跟着美国背后摇尾乞怜? 怎么查询车牌制作进度? 01053772688是华夏银行的客服吗? 南京交强险查询系统 南京交强险 价格 12123车牌制作进度怎么查? 南京交强险标志必须贴 南京交强险在哪交 我从12123平台办理了一个机动车号牌补办业务!也不知道从哪里查询一下进度_百度问一问 南京只买汽车交强险在什么地方 车是南京的,交强险在上海买行吗 一物一码有什么好处? 南京车辆年检,我手里没有交强险副本怎么办? 南京交强险投保之后如何查询? 青岛股指期货开户? 青岛期货开户营业部在哪里手续费是多少 青岛期货公司开户,青岛期货开户? 藏獒咬死斗狗视频 藏獒斗比特犬视频 藏獒真的那么厉害吗?看到一些视频,藏獒其实战斗力中上。很多斗狗,都比他强。你们是怎么想的。 藏獒vs比特犬谁会赢?