2013-01-08 5 views
0

아래와 비슷한 테이블 구조로 작업 중이며 언급 된대로 결과를 얻으려고합니다.저장 프로 시저가 항상 "프로세스가 종료되었습니다."오류를 항상 반환합니다.

enter image description here

이 acheive, 나는 PL SQL 프로 시저 아래 서면 :

 CREATE OR replace PROCEDURE Sample_procedure 
AS 
    TYPE list_of_names_t 
    IS TABLE OF emp.emp_index%TYPE; 
    processedindexes LIST_OF_NAMES_T := List_of_names_t(); 
    flag    emp.emp_index%TYPE; 
    CURSOR c1 IS 
    SELECT * 
    FROM emp 
    WHERE Trim(emp_id) = 'AAAAA' 
    ORDER BY last_maint_ts ASC; 
BEGIN 
    dbms_output.Put('Entered the loop'); 

    FOR rec IN c1 LOOP 
     SELECT emp_index 
     INTO flag 
     FROM emp 
     WHERE emp_id = rec.emp_id 
       AND last_maint_ts > rec.last_maint_ts; 

     IF flag IS NOT NULL THEN 
      processedindexes.extend; 

      Processedindexes(processedindexes.last) := flag; 

      processedindexes.extend; 

      Processedindexes(processedindexes.last) := rec.emp_index; 

      dbms_output.Put('The indexes' 
          ||rec.emp_index 
          ||' & ' 
          ||flag 
          ||'refer to same emp ID'); 

      exit; 

      dbms_output.Put('received NULL'); 
     END IF; 
    END LOOP; 
END; 

1) 매번, 내가 프로세스가 SQL 개발자의 종료로이 내가 출력을 얻을 실행, 어떤 제안을이에 ?

참고 :이 해결의 나의 접근 방식은 옳지 않다 경우 내가 PL SQL 프로그래밍에 새로운 오전, 날 수정하시기 바랍니다.

+0

@lc의 출력을 표시합니다. 질문에 대한 서식을 많이 주셔서 고마워요. – javanoob

답변

1

개방 SQLPLUS는 다음을 실행하고 : -

set serveroutput on 
exec Sample_procedure; 

는 프로 시저가 잘 컴파일 제공, 그것은 dbms_output.put

+0

최대 답변을 주셔서 감사합니다. 결과가 보이지 않지만 오류없이 정상적으로 컴파일됩니다. 조언을 바랍니다. – javanoob

+0

sqlplus에서 볼 수있는 출력 유형이 있습니까 (위의 실행 후)? – Max

+0

첫 번째 dbms_output.put을 dbms_output.put_line으로 변경 한 다음 위의 단계를 다시 실행할 수 있습니까? (그것이 어떤 변경이라도 할 것 인 지 명확히하지 않는다. 그러나 발사의 가치가있는). 나는 put이 이제는 쓸데없는 것으로 간주된다는 것을 읽었다. http://psoug.org/reference/dbms_output.html – Max

관련 문제