create or replace procedure WAIT_USER_LIST
(
company_id in varchar2,
userlist out varchar2
)
is
list varchar2(100);
CURSOR cur IS  
SELECT ci.id,pc.user_id,ci.parent_id FROM company_info ci,police_company pc 
     where ci.id =  pc.company_id
  CONNECT BY PRIOR ci.PARENT_ID = ci.id 
  START WITH ci.id = company_id order by pc.id
;
    
begin FOR cur_result in cur LOOP
  BEGIN
   
   list :=list ||','||cur_result.user_id;
  END;
 END LOOP;userlist := list;
    
     
end WAIT_USER_LIST;

解决方案 »

  1.   

    有什么差别?
    给list赋初值看看
      

  2.   

    SELECT ci.id,pc.user_id,ci.parent_id FROM company_info ci,police_company pc  
      where ci.id = pc.company_id
      CONNECT BY PRIOR ci.PARENT_ID = ci.id  
      START WITH ci.id = company_id order by pc.id在PLSQL中查询的时候是四条记录,但是在存储过程中,返回的记录集多了很多。
      

  3.   

    你确定是4条记录?不会是没有显示完吧?
    用count(*) 试试看看结果是多少
      

  4.   

    create or replace procedure WAIT_USER_LIST
    (
    company_id in varchar2,--把这个名称换个,不要用字段名
    userlist out varchar2
    )
    然后看看你是怎么调用的