2013-01-08 27 views
0

我正在處理類似於下面的表結構,並試圖獲得所述的輸出。存儲過程始終返回「過程已退出」錯誤總是

enter image description here

爲了達致這,我寫入的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

Max這個問題,謝謝你的回答,我沒有看到任何輸出,但它編譯好沒有任何錯誤,你能請指教嗎? – javanoob

+0

是否有任何類型的輸出可以在sqlplus中看到(在執行上述操作之後)? – Max

+0

是否可以將第一個dbms_output.put更改爲dbms_output.put_line,然後再次執行上述步驟? (不知道它是否會做任何改變,但值得一試)。我讀到,現在認爲過時了。 http://psoug.org/reference/dbms_output.html – Max