2017-01-26 76 views
-2

我是Oracle新手,剛剛開始在Internet課程中學習它。oracle 12c,使用編譯錯誤創建的過程

這裏的PL/SQL我輸入:

create or replace procedure xl_2 is 
declare 
v_ename varchar2(20); 
begin 
select ename into v_ename from emp where empno=&no; 
dbms_output.put_line('Ename'||v_ename); 
end; 
/

,這裏是顯示錯誤後問題:

2/1  PLS-00103: 出現符號 "DECLARE"在需要下列之一時: begin function pragma  procedure subtype type <an identifier>  <a double-quoted delimited-identifier> current cursor delete  exists prior external language 符號 "begin" 被替換爲 "DECLARE" 後繼續。 
9/0  PLS-00103: 出現符號 "end-of-file"在需要下列之一時: (begin case  declare end exception exit for goto if loop mod null pragma  raise return select update while with <an identifier>  <a double-quoted delimited-identifier> <a bind variable> <<  continue close current delete fetch lock insert open rollback  savepoint set sql execute commit forall merge pipe purge 

我輸入與課程樣品完全相同,但是有錯誤。

12c中是否有新的創建過程?

在此先感謝。

+4

'declare'用於匿名PL/SQL塊中,但不是過程。 「我在課程樣本中輸入的內容完全相同」如果屬實,則需要找到更好的課程。 – APC

+0

謝謝,APC。我是Oracle的新手,曾經在老師的另一門課程中學習PHP。也許你是對的。 – Michael

回答

1

declare Rermove

create or replace procedure xl_2 is 
v_ename varchar2(20); 
begin 
select ename into v_ename from emp where empno=&no; 
dbms_output.put_line('Ename'||v_ename); 
end; 
/

申報爲匿名塊不是過程。另一個問題可能是&no創建過程時將被替換。我認爲你需要:

create or replace procedure xl_2(p_empno number) is 
v_ename varchar2(20); 
begin 
select ename into v_ename from emp where empno=p_empno; 
dbms_output.put_line('Ename'||v_ename); 
end; 
/

爲了能夠呼叫不同的empno程序。

+0

嗨Kacper,謝謝你這麼快速的迴應。該過程創建時沒有錯誤。 – Michael

+0

在12c中,聲明不再需要了嗎? – Michael

+0

匿名塊或觸發器需要聲明,但不適用於過程。 12c中沒有任何變化 – Kacper