着急,求一个存储过程~只有30了。都给了!在线等!
用游标查一条记录,然后以游标中一条记录的值为条件,在查询。怎么做。begin开始了好象不能再声明游标了,而且存储过程里只能设置游标记录?     
 create   or   replace   procedure   CREATE_PDH_TEST_DATA   (EndID   integer)is 
 adevice      device%rowtype; 
 zdevice      device%rowtype;     
 trnasSystemId   integer   :=   1000000;   
 pdhConnectionPortId   integer   :=   1;     
 transSystemDeviceA   integer; 
 transSystemDeviceZ   integer;   
 StartID   integer   :=      1;           
 CURSOR   C_Device   IS   select   *   from   device   where   type   =10   and   sub_type   =1001; 
          begin 
                   while   StartID    <=   EndID 
          Loop 
                                     open   C_Device; 
                                     fetch   C_Device   into   adevice; 
                                     EXIT   WHEN   C_Device%NOTFOUND;                                             
                               fetch   C_Device   into   zdevice; 
                               EXIT   WHEN   C_Device%NOTFOUND;          
                insert   into   RMS.Trans_System(ID,   NAME,   HIERARCHY,   TOPO_STRUCTURE,   RATE,   RANK,   A_DEVICE_ID,   Z_DEVICE_ID)   Values   (trnasSystemId,    '测试 '||trnasSystemId,      1,      1,      1,   1,   adevice.id,   zdevice.id); 
                commit; 
                trnasSystemId   :=   trnasSystemId   +   1; 
                --这里用游标中的记录为条件查询,不过好象begin开始了就不能再 
                --用游标了。而且不知道如何遍历游标啊~~ 
             CURSOR   A_PORT_BY_140   IS   select   *   from   port   p   where   p.DEVICE_ID   =   adevice.id   and   p.REF_TYPE_ID   =   4   ;                 
             END   Loop 
                close   C_Device; 
 end   CREATE_PDH_TEST_DATA;
------解决方案--------------------open C_Device;   
 这句在while循环里面open了无数次,只有最后End loop时关闭了一次
------解决方案--------------------也就是说:游标依然是在Begin前定义的,但其条件可以通过变量来传递。