2012-12-08 63 views
0

我想創建一個列出所有表的內容的過程,但是oracle告訴我該過程有編譯錯誤。我正在使用SQL plus。有任何想法嗎?程序創建問題

CREATE OR REPLACE procedure payrollproc 
BEGIN 
SELECT * FROM payroll; 
END; 
+0

SHOW ERR將顯示錯誤的行和列。加上你的代碼,就是不做任何事情。這是否只是爲了看看事情如何工作而編寫代碼的第一步,無所作爲的傳遞?你的代碼的最後一行的左列是否有/? –

+0

是的,這段代碼只是顯示錶格的所有內容。另外,結尾後會插入a /; –

+0

PLS-00103:出現符號「BEGIN」期待的 一個時執行以下操作: (;與AUTHID簇壓縮順序使用編譯 包裹外部確定性parallel_enable流水線 RESULT_CACHE 符號「是」被取代「BEGIN 「 –

回答

1
CREATE OR REPLACE procedure payrollproc as 
BEGIN 
    for c_rec in (SELECT * FROM payroll) 
    Loop 
     dbms_output.put_line(c_rec.col1 || ' ' || c_rec.col2 || ' ' || ......); 
    End loop; 
END; 
/

不過,我建議只運行SELECT語句,一個存儲過程是這樣的基本功能太多的工作。

+0

你確實是對的,它是太多的工作,因爲你正在使用遊標遍歷行 –

0

答案在錯誤消息中是正確的:您在BEGIN之前缺少關鍵字。如果你在BEGIN之前輸入IS,它將會被編譯。有關更多詳細信息,請參閱here。另外,您將需要一個光標來查看詳細信息。祝你好運。

+0

它不會因爲OP沒有把選擇語句的結果放入一個變量中。 – Ben