another help for cursor

when I make this query in sql*plus:
 
sql> select  describe from categories  where name=courses;
 
I get the following data:
 
NAME                DESCRIBE                                                    
                
------------------------------ 
courses              计算机系                                                   
                          
courses               数学系                                                    
                          
courses               英语系                                                    
                              
courses               物理系                                                    
                         
 
Now in my preject,I need  to use cursor like this:
 
 
CREATE OR REPLACE PROCEDURE test(p_name VARCHAR2)  IS   
 
 CURSOR  categories_cur (p_str VARCHAR2) IS SELECT  describe FROM  categories 
      WHERE  name=p_str ;  
 v_describe categories.describe%TYPE;     
  
BEGIN      
      OPEN categories_cur(p_name);
      LOOP
            FETCH categories_cur INTOv_describe;            
           EXIT WHEN categories_cur%NOTFOUND;
           str:=str ||','||v_name;
           DBMS_OUTPUT.PUT_LINE(v_long_name);
     END LOOP;      
END test;
 
   The procedure 'test' is compiled successfully,
   then I creat a new test script in pl/sql developer, the developing tools 
,but there is no related  result printed!
   when I run the procedure step by step,I found when it come to the line' EXIT 
WHEN categories_cur%NOTFOUND;'
   the next step is line'END LOOP'   which indicate no records in 
categories_cur,who can tell me why?
     
   Thanks in advance!

Other related posts: