游标、过程、函数、包

 一)游标:
            1)每次声明、打开、推进、关闭游标
declare
cursor c is select .........;--声明
begin
open c;--打开
loop
exit when..........;
fetch c into .........;--推进
......
.....
end loop;
close c;--关闭
end;
             2)使用游标变量更加简洁
declare
cursor c is select..........;声明
begin
for rec_c in c loop      --打开、推进、关闭 全包括
exit when......
end loop;
end;

             3)动态游标;

             declare
type c_ref is ref cursor;    ---------------------声明动态游标
v_c_ref c_ref;                  -----------------------定义一个动态游标
type rec is record(          ------------------------声明记录
id   sun_department.id%type,                      
department  sun_department.department%type);
v_rec rec;                              --------------------定义一个记录;
begin
open v_c_ref for                          --------------------打开动态游标并付集合值
select id,department from sun_department where id<100;
fetch v_c_ref into v_rec;                                 -------------将游标起到记录中
while v_c_ref%found loop                               ----------------------只要游标中有值就一直输出;
dbms_output.put_line(v_rec.id||'   '||v_rec.department);
fetch  v_c_ref into v_rec;                                 ---------------------游标的取出值放到记录中;
end loop;                                                 
close v_c_ref;
end;

 

二)过程

  create or replace  procedure     test_p(id in number,name  out  varchar2)----参数in  out    in out

    is

      i number:=0;                                  -----------------------------------------------无declare   为局部变量;

      cursor  c is  select  sun.name from sun where sun.id=id;

      begin                                               

      for v_c in c                                     ----------------------------------------------------------游标变量;

      loop

         name:=v_c.name;

          -- dbms_output.put_line('name'||name);  

      end loop;

       end test_p;                                         

三)函数

       create  or replace function test_f(id in number,name out varchar2)  

         return   number  is                                       ----------------------------------------------return  类型

           i   number:=0; 

            val   number;

            cursor    c   is  select s.id    from sun.department  s   where id<10 for update of id;

           begin

              open c;

               loop

               fetch c into val;

                if (c%rowcount<>0)then

                update   sun_department set   id:=100  where   current of  c;

               else

                    update   sun_department set   id:=1 where current of   c;

                end  if;

                  i:=c%rowcount

                end loop;

end;

 

 

          end;

 

四)包

     
create or replace package pack_test        --package specification start--
is
   type get_test_cursor is ref cursor;      --定义动态游标
   function getcur return get_test_cursor;  --函数声明【函数返回类型为动态游标】
end pack_test;                            
/                                          --package specification  end--

create or replace package body pack_test   --package body start --
is
  function getcur return get_test_cursor
  is
    mycur get_test_cursor;                 --用动态游标定义变量
  begin
    open mycur                             --打开并与具体数据关联
    for select * from  sun_department;
    return mycur;                          --返回游标
  end getcur;
end pack_test;
/                                          --package body end --

declare                                  -- package test start --
    testcur pack_test.get_test_cursor;
    temp  sun_department%rowtype;                    --记录变量定义
  begin
    testcur := pack_test.getcur();       --方法调用
    loop
      fetch testcur  into temp;
         dbms_output.put_line(temp.id || ' : ' ||  temp.department);
      exit when testcur%notfound;
    end loop;
    close testcur;
end;
/                                        -- package test end --

转载于:https://www.cnblogs.com/sunxiangfu/archive/2008/08/27/4261150.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“退学吧,开始行动”——埃里森在耶鲁的演讲(历史上最牛的演讲)

这篇演讲被网民称为“历史上最牛的演讲”&#xff0c;这是一次可以列入搞笑堂的演讲&#xff0c;但同时也是可以让我们好好反思的演讲。耶鲁的毕业生们&#xff0c;我很抱歉——如果你们不喜欢这样的开场。我想请你们为我做一件事。请你——好好看一看周围&#xff0c;看一看站…

前端 / JavaScript 导出PDF的实践

1.库&#xff1a;jspdf &#xff0c;自己定义一个高宽&#xff0c;如A4的210mm297mm 2.让设计给背景图&#xff08;包括&#xff1a;页眉页脚&#xff09;&#xff0c;水印图&#xff08;背景透明&#xff0c;高宽和你的PDF单页一致&#xff09;以及很多&#xff0c;能设计给的…

结构体变量、结构指针变量、结构数组作为函数的参数

结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析 struct stud {long int num;float score; }; /*结构体变量作为函数的参数&#xff0c;修改之后的成员值不能返回到主调函数*/void funvr(struct stud t) {t.num2000101;t.score71.0; }/*结构体数组作为函数的参数…

(求助)請問DE2-70版子 音樂合成器

您好 我是剛學習VERILOG的新手 我剛碰到一個專案 是DE2-70版子裡的 DE2_70_Music_Synthesizer 我有抓到音樂裡的音階 比如Do Re Mi Fa Sol La Ti Do等8個基本音 但有的音快有的音慢 我只能用數字來衡量他的數字或是做筆記來計入 是可以的 而且一定可以抓到 但有個問題 在程式…

英国Carmarthen Learning Centre校长Mr Stuart来华访问,与荣新IT培训中心达成教学合作关系...

英国Carmarthen Learning Centre校长Mr Stuart来华访问&#xff0c;与荣新IT培训中心达成教学合作关系 2008年9月4日&#xff0c;英国Carmarthen Learning Centre校长Mr Stuart来华访问。Carmarthen Learning Centre所处于英国伦敦&#xff0c;是一家英国著名的培训学校&#x…

win10 桌面快捷键技术

win 10 的 快捷键技术&#xff0c;使用还是挺流畅舒适的&#xff1a; Windows10技术新增键盘快捷键汇总&#xff1a; 1、贴靠窗口&#xff1a;Win 左/右> Win 上/下>窗口可以变为1/4大小放置在屏幕4个角落 2、切换窗口&#xff1a;Alt Tab(不是新的&#xff0c;但任务切…

Service Broker实现发布-订阅(Publish-Subscribe)框架

Service Broker实现发布-订阅&#xff08;Publish-Subscribe&#xff09;框架Service Broker 实现一套完整的发布-订阅方案&#xff0c;其中author 发送Service Broker Message&#xff08;又称article&#xff09;到发布者&#xff08;Publisher&#xff09;。发布者负责分发消…

设计数据服务:为报表服务提供服务接口

功能: 为报表服务提供服务接口 1.技术组件 binlog canal kafka es 2. 服务器部署规划 3.整体架构 4.参考资料:https://www.jianshu.com/p/3ebab93ff075https://www.jianshu.com/p/e841e69a5e76https://www.jianshu.com/p/5acb30ec8347https://www.jianshu.com/p/2c17c75486f3 转…

(转载)简洁、明晰!数据库设计三大范式应用实例剖析

(转载http://bbs.database.ccidnet.com/read.php?tid325895) 简洁、明晰&#xff01;数据库设计三大范式应用实例剖析 引言OL~eR{q ;iC,$vZ 0} 数据库的设计范式是数据库设计所需要满足的规范&#xff0c;满足这些规范的数据库是简洁的、结构明晰的&#xff0c;同时&#xf…

CanvasRenderingContext2D.drawImage()无效,not working

我的技术框架&#xff1a;react&#xff0c;如若不采用堵塞方式&#xff0c;即&#xff0c;const myimg await loadImage(icon28) ctx.drawImage(myimg&#xff0c;0,0, 100, 100) 而用.then()&#xff0c;如下,loadImage(icon28).then((image) > { ctx.drawImage(image,0,…

选择软路由的七大理由

linux稳定、快速、安全可靠、性能卓越&#xff01; 但在这之前&#xff0c;很多的电脑里装的都是Windows系统&#xff0c;linux系统只用在高端领域。现在网上流行的路由软件大多是基于linux系统开发&#xff0c;具有以下几点优越性&#xff1a;第一、便宜现在市面上&#xff0c…

kafka start bat

start D:\Homes\kafka_2.12-2.3.0\bin\windows\kafka-server-start.bat D:\Homes\kafka_2.12-2.3.0\config\server.properties 转载于:https://www.cnblogs.com/zeenzhou/p/11455846.html

你所应该知道的云计算

感觉像是云计算的一个推崇者&#xff0c;为云计算在做广告&#xff0c;Robyn Peterson的文章What you need to know about cloud computing。 云计算可以保证我们不再受硬件的困扰&#xff0c;真的是这样吗&#xff1f; 在为一个小型商业或者大型企业构建IT结构的时候&#xff…

递归算法

一、递归的核心思想就是自己调用自己&#xff0c;一般来说能够用递归解决的问题应满足3个条件&#xff1a; 1.需要解决的问题可以转化为一个或多个子问题来求解&#xff0c;而这些子问题的求解方法与原问题完全相同&#xff0c;只是在数量和规模上不同。 2.递归调用的次数必须是…

malloc coredump(宕)的问题

最近公司一个产品在AIX5.3上&#xff0c;运行若干天后&#xff0c;经常coredump&#xff0c;反复加日志后&#xff0c;逐渐定位到是调用strdup函数后&#xff0c;没有释放空间所导致。 在AIX5.3进行了测试&#xff0c;发现连续malloc后的现象如下&#xff1a;1&#xff…

MySQL5.5升级至5.7

一、下载免安装MySQL5.7包 下载页面 下载链接 二、替换mysql的安装目录 解压mysql5.7 tar -zxf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /usr/mysql5.7 如果之前的mysql目录是链接的方式创建的话&#xff0c;那么只需要取消链接&#xff0c;从新做一下链接就可以了 如…

Linux下如何同时启动多个Tomcat服务器

所用Tomcat服务器都为zip版&#xff0c;非安装版。以两个为例&#xff1a; 安装第二个Tomcat完成后&#xff0c;到安装目录下的conf子目录中打开server.xml文件&#xff0c;查找以下三处&#xff1a; &#xff08;1&#xff09;修改http访问端口&#xff08;默认为8080端口&…

更改临时文件夹的路径

问&#xff1a;我使用的系统为Windows XP&#xff0c;我想把系统临时文件(Temp文件)存放区由C盘移到其他分区(如D盘)&#xff0c;请问该如何操作&#xff1f;答&#xff1a;在“我的电脑”上点鼠标右键&#xff0c;选择“属性”&#xff0c;然后进入高级选项&#xff0…

解决“添加删除程序”里面隐藏问题

在C:\Windows\Inf下找到Sysoc.inf文件&#xff0c;用记事本程序打开它&#xff0c;该文件显示了当前已安装程序的部分列表。我们拿MSN Messenger来做个实验&#xff0c;在其中找到这一句“msmsgsmsgrocm.dll,OcEntry,msmsgs.inf,hide,7”&#xff0c;其中“msmsgs”是MSN Messe…

wifi移植

平台&#xff1a;全志 A40I 源码&#xff1a;Android 7.1 Linux 3.10 模块&#xff1a;AP6255 台湾正基模块&#xff0c;美国博通方案固件(系列不同&#xff0c;固件不同) 驱动(原厂提供&#xff0c;一般通用) 固件&#xff1a;Android/hardware/broadcom/wlan/bcmdhd/fir…