2017-01-26 7 views
-2

私はオラクルには新しく、インターネットコースで習得します。オラクル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; 
/

、ここでSHOWエラー後の問題です:

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。私は教師の別のコースでPHPを学ぶためにオラクルには新しくありました。多分あなたは正しいです。 – Michael

答えて

1

Rermove declare

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

'declare'は無名ブロックやトリガーでは必要ですが、プロシージャーでは必要ありません。 12cで何も変わらなかった – Kacper

関連する問題