ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle开发 » 批處理(bulk)

离线 wangpeng533
一般会员


来自 甘肃
精华贴数 0
个人空间 26
技术积分 263 (7380)
社区积分 70 (4120)
注册日期 2005-8-26
论坛徽章:2
2008年新春纪念徽章     
      

发表于 2008-6-26 10:04 
批處理(bulk)

第一,第二段在 9I,10G的可以執行成功。不知為什麼第三段PL/SQL代碼在10G中可以執行成功,但在9I(版本 9.2.0.1.0)執行提示提示 “l_data ”為錯誤的類型,請哪位高人指點一下,謝謝。  

具體代碼如下:
(1)
DECLARE
   TYPE mytable IS TABLE OF emp%ROWTYPE;
   l_data   mytable;
   l_refc   sys_refcursor;
BEGIN
   OPEN l_refc FOR
      SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno
        FROM emp;
   FETCH l_refc
   BULK COLLECT INTO l_data;
   CLOSE l_refc;
   FOR i IN 1 .. l_data.COUNT
   LOOP
      DBMS_OUTPUT.put_line (   rpad(l_data (i).ename,10,' ')
                            || ' was hired since '
                            || l_data (i).hiredate
                           );
   END LOOP;
END;


(2)
DECLARE
   CURSOR cur_data
   IS
   SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno
     FROM emp;
   TYPE mytable IS TABLE OF EMP%ROWTYPE;

   l_data   mytable;
BEGIN
   OPEN cur_data;
   FETCH cur_data
   BULK COLLECT INTO l_data;
   CLOSE cur_data;
   FOR i IN 1 .. l_data.COUNT
   LOOP
      DBMS_OUTPUT.put_line (   rpad(l_data (i).ename,10,' ')
                            || ' was hired since '
                            || l_data (i).hiredate
                           );
   END LOOP;
END;


(3)
DECLARE
   CURSOR cur_data
   IS
   SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno
     FROM emp;
   TYPE mytable IS TABLE OF cur_data%ROWTYPE;

   l_data   mytable;
BEGIN
   OPEN cur_data;
   FETCH cur_data
   BULK COLLECT INTO l_data;
   CLOSE cur_data;
   FOR i IN 1 .. l_data.COUNT
   LOOP
      DBMS_OUTPUT.put_line (   rpad(l_data (i).ename,10,' ')
                            || ' was hired since '
                            || l_data (i).hiredate
                           );
   END LOOP;
END;



__________________
一天进步一小步,一年进步一大步;

地圖﹕http://uu.51ditu.com/uu/uu.swf
只看该作者    顶部
在线/呼叫 jack198409
中级会员


来自 湖北武汉
精华贴数 0
个人空间 372
技术积分 2921 (524)
社区积分 3067 (437)
注册日期 2007-8-10
论坛徽章:29
NBA2008季后赛纪念徽章NBA季后赛之星2008北京奥运纪念徽章:射箭2008北京奥运纪念徽章:帆船2008北京奥运纪念徽章:排球2008北京奥运纪念徽章:垒球
2008北京奥运纪念徽章:摔跤2008北京奥运纪念徽章:举重2008北京奥运纪念徽章:足球2008北京奥运纪念徽章:跆拳道2008北京奥运纪念徽章:击剑2008北京奥运纪念徽章:跳水

发表于 2008-6-26 10:10 
第三段的
TYPE mytable IS TABLE OF cur_data%ROWTYPE;
這句有問題啊!
這個紅色的地方要是TABLE才可以


__________________
金麟岂是池中物,一遇风云便化龙!


我的SPACE空间欢迎您!
   
只看该作者    顶部
离线 DragonBill
武陵愚生


精华贴数 1
个人空间 10
技术积分 3260 (454)
社区积分 391 (1614)
注册日期 2006-12-18
论坛徽章:13
2008北京奥运纪念徽章:击剑生肖徽章2007版:虎    
      

发表于 2008-6-26 10:29 
升级到9.2.0.6试试


只看该作者    顶部
离线 wangpeng533
一般会员


来自 甘肃
精华贴数 0
个人空间 26
技术积分 263 (7380)
社区积分 70 (4120)
注册日期 2005-8-26
论坛徽章:2
2008年新春纪念徽章     
      

发表于 2008-6-27 14:18 
呵呵,先謝謝兩位了。生產庫目前跑的非常穩定,不會因我這段代碼不能 run 就去升級數據庫的。


__________________
一天进步一小步,一年进步一大步;

地圖﹕http://uu.51ditu.com/uu/uu.swf
只看该作者    顶部
离线 h4545z
初级会员



精华贴数 0
个人空间 0
技术积分 4 (153994)
社区积分 0 (1587346)
注册日期 2007-10-10
论坛徽章:0
      
      

发表于 2008-6-27 18:06 
可能是select出来的字段类型错了,全部用to_char()试一下,以前也碰到一个类似的问题,10g没问题,9i上报类型错误


只看该作者    顶部
离线 jvkojvkoyu
小马哥2


精华贴数 0
个人空间 0
技术积分 424 (4587)
社区积分 827 (1054)
注册日期 2006-12-14
论坛徽章:135
2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术
2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术

发表于 2008-6-27 18:27 
那就多申明几个变量好了,


只看该作者    顶部
离线 caizhuoyi
Oracle Stranger


精华贴数 2
个人空间 0
技术积分 1524 (1102)
社区积分 448 (1495)
注册日期 2006-3-1
论坛徽章:4
授权会员生肖徽章2007版:龙2008北京奥运纪念徽章:棒球数据库板块每日发贴之星  
      

发表于 2008-6-27 19:45 
确实应该是版本过低的原因

我在10.2.0.3版本上可以运行,并且语法也没有错误。


__________________
我不在江湖,但江湖中有我的传说;
我身在江湖,江湖里却没有我的传说。
只看该作者    顶部
离线 jvkojvkoyu
小马哥2


精华贴数 0
个人空间 0
技术积分 424 (4587)
社区积分 827 (1054)
注册日期 2006-12-14
论坛徽章:135
2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术
2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:马术

发表于 2008-6-27 19:53 
见识了


只看该作者    顶部
离线 qin_phoenix
初级会员



精华贴数 0
个人空间 0
技术积分 2 (218271)
社区积分 0 (1537562)
注册日期 2007-9-29
论坛徽章:0
      
      

发表于 2008-6-28 16:04 
TYPE mytable IS TABLE OF cur_data%ROWTYPE INDEX BY BINARY_INTEGER ;


再试一下。。



只看该作者    顶部
离线 wangpeng533
一般会员


来自 甘肃
精华贴数 0
个人空间 26
技术积分 263 (7380)
社区积分 70 (4120)
注册日期 2005-8-26
论坛徽章:2
2008年新春纪念徽章     
      

发表于 2008-6-30 14:41 
謝謝各位咯!

我當時就是想偷懶,所以隻想定義一個變量。
TYPE mytable IS TABLE OF cur_data%ROWTYPE INDEX BY BINARY_INTEGER 肯定也不行的。

上面的代碼不能咝写_實跟oracle的版本低有關系。


__________________
一天进步一小步,一年进步一大步;

地圖﹕http://uu.51ditu.com/uu/uu.swf
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问