存储过程向其中的游标传值的难解问题,单独执行可以取到数据,而放在存储过程中进行传值取不到数据
CREATE   OR   REPLACE   PROCEDURE   proc_test(                                                                                        
          a                                          IN                     INTEGER,       
          b                                          IN                     VARCHAR2,                   
          errnum                           OUT                  NUMBER 
 ) 
 AS 
          v_form_rec         tabletest%ROWTYPE; 
          retval                     NUMBER   (6);            
 BEGIN 
          retval   :=   0; 
          DECLARE 
                   CURSOR   rowtable_cursor 
                   IS 
                            SELECT   *   FROM   tabletest      WHERE   id=   a   AND   id_code   IN   ( 
                            SELECT   id_code   FROM   tabletest1      WHERE   SUBSTR   (idNum,   b,   1)   =    '1 ')    
                            ORDER   BY   id; 
          BEGIN 
                   OPEN   rowtable_cursor;   
                   FETCH   rowtable_cursor 
                      INTO   v_form_rec;   
                   WHILE   (rowtable_cursor%FOUND) 
                   LOOP 
                               //some   method 
                   end   loop; 
 end   proc_test;     
 就是说通过传值后的rowtable_cursor中的sql语句放在sql   editor里是有数据的,但是放在存储过程中却取不到数据,不能执行loop循环,望达人相助!解决即给分!
------解决方案--------------------CREATE OR REPLACE PROCEDURE proc_test(                              
    a              IN       INTEGER,   
    b              IN       VARCHAR2,       
    errnum         OUT      NUMBER 
 ) 
 AS 
    v_form_rec   tabletest%ROWTYPE; 
    retval       NUMBER (6);   
    CURSOR rowtable_cursor 
      IS 
      SELECT * 
        FROM tabletest 
       WHERE id = a 
         AND id_code IN (SELECT id_code FROM tabletest1  WHERE SUBSTR (idNum, b, 1) =  '1 ')  
       ORDER BY id;        
 BEGIN 
    retval := 0; 
       OPEN rowtable_cursor; 
       LOOP 
       FETCH rowtable_cursor 
        INTO v_form_rec;   
       EXIT WHEN rowtable_cursor%NOTFOUND; 
           //some method 
       end loop; 
       close rowtable_cursor; 
 end proc_test;
------解决方案--------------------在while循环体内还需要fetch,否则之执行一次
------解决方案--------------------