DECLARE CURSOR MYCUR IS SELECT B.AREANAME ,A.CHANNELNAME,A.BCCS,A.BCMS,A.PXID,B.BCZCS,B.BCZMC,B.ZPXID
FROM JB_TVFB2 A,JB_TVFB2Z B WHERE SUBSTR(A.CHANNELNO,1,2)=B.AREANO
ORDER BY BCZMC,BCMS DESC;
VAREANAME VARCHAR2(150);
VCHANNELNAME VARCHAR2(150);
VBCCS NUMBER;
VBCMS NUMBER;
VPXID NUMBER;
VBCZCS NUMBER;
VBCZMC NUMBER;
VZPXID NUMBER;
BEGIN
OPEN MYCUR;
LOOP
FETCH MYCUR INTO VAREANAME,VCHANNELNAME,VBCCS,VBCMS,VPXID,VBCZCS,VBCZMC,VZPXID;
EXIT WHEN MYCUR%NOTFOUND;     
END LOOP;
END;
CLOSE MYCUR;

解决方案 »

  1.   

    把CLOSE MYCUR; 提到end; 之前
      

  2.   

    DECLARE CURSOR MYCUR IS SELECT B.AREANAME ,A.CHANNELNAME,A.BCCS,A.BCMS,A.PXID,B.BCZCS,B.BCZMC,B.ZPXID
    FROM JB_TVFB2 A,JB_TVFB2Z B WHERE SUBSTR(A.CHANNELNO,1,2)=B.AREANO
    ORDER BY BCZMC,BCMS DESC;
    VAREANAME VARCHAR2(150);
    VCHANNELNAME VARCHAR2(150);
    VBCCS NUMBER;
    VBCMS NUMBER;
    VPXID NUMBER;
    VBCZCS NUMBER;
    VBCZMC NUMBER;
    VZPXID NUMBER;
    BEGIN
    OPEN MYCUR;
    LOOP
    FETCH MYCUR INTO VAREANAME,VCHANNELNAME,VBCCS,VBCMS,VPXID,VBCZCS,VBCZMC,VZPXID;
    EXIT WHEN MYCUR%NOTFOUND;   
    END LOOP;
    CLOSE MYCUR;  --提前!
    END;
      

  3.   


    --查看一下这个有没有数据!
    SELECT B.AREANAME ,A.CHANNELNAME,A.BCCS,A.BCMS,A.PXID,B.BCZCS,B.BCZMC,B.ZPXID
    FROM JB_TVFB2 A,JB_TVFB2Z B WHERE SUBSTR(A.CHANNELNO,1,2)=B.AREANO
    ORDER BY BCZMC,BCMS DESC;
      

  4.   

    FETCH MYCUR INTO VAREANAME,VCHANNELNAME,VBCCS,VBCMS,VPXID,VBCZCS,VBCZMC,VZPXID;数据已经全在这里了,你要干什么?1 打出来看看 那就dbms_output.put_line(....)2 把查询结果返回 那你要封装一个存储过程,返回一个动态游标你写的这个叫 匿名块 不是存储过程。
      

  5.   

    我第一次在ORACLE里写存储过程,请多关照!
      

  6.   

    DECLARE CURSOR MYCUR IS SELECT B.AREANAME ,A.CHANNELNAME,A.BCCS,A.BCMS,A.PXID,B.BCZCS,B.BCZMC,B.ZPXID
    FROM JB_TVFB2 A,JB_TVFB2Z B WHERE SUBSTR(A.CHANNELNO,1,2)=B.AREANO
    ORDER BY BCZMC,BCMS DESC;
    VAREANAME VARCHAR2(150);
    VCHANNELNAME VARCHAR2(150);
    VBCCS NUMBER;
    VBCMS NUMBER;
    VPXID NUMBER;
    VBCZCS NUMBER;
    VBCZMC NUMBER;
    VZPXID NUMBER;
    BEGIN
    OPEN MYCUR;
    LOOP
    FETCH MYCUR INTO VAREANAME,VCHANNELNAME,VBCCS,VBCMS,VPXID,VBCZCS,VBCZMC,VZPXID;
    EXIT WHEN MYCUR%NOTFOUND; 
    dbms_output.putline(VAREANAME);--在命令窗口打印输出,记得现在打命令
                                             set serveroutput on;
                                     然后看看有没有数据输出
      
    END LOOP;
    CLOSE MYCUR;  
    END;
      

  7.   

    在TOAD里执行没值,在SQLPLUS执行,可以把所以数据打印出来