web-dev-qa-db-ja.com

Oracleストアドプロシージャの実行方法

Oracle 10g Express Editionを使用しています。 db開発者向けの素晴らしいUIがあります。しかし、ストアドプロシージャの実行中にいくつかの問題に直面しています。

手順:

create or replace procedure temp_proc is
begin
  DBMS_OUTPUT.PUT_LINE('Test');
end

正常に作成されます。しかし、私が実行するとき:

execute temp_proc;

ORA-00900:無効なSQLステートメント

ここで必要なヘルプ

46
FlintOff

Executeはsql * plus構文です。begin.. endで呼び出しを次のようにラップしてみてください。

begin 
    temp_proc;
end;

(Jeffreyは、これはAPEXでは機能しないと言っていますが、SQLDeveloperでこれを実行しようとしているのです。そこで「実行」メニューを試してください。)

71
Thorsten

Oracle 10g Express Editionには、Oracle Application Express(Apex)が組み込まれています。これは、SQL * Plus構文をサポートしない[SQLコマンド]ウィンドウで実行しています。

(あなたが発見したように)BEGIN ... END構文はApexで機能するため、これは重要ではありません。

3
Jeffrey Kemp

「is」と「as」は両方とも有効な構文です。出力は、デフォルトではdisabledです。出力も有効にする手順を試してください...

create or replace procedure temp_proc is
begin
  DBMS_OUTPUT.ENABLE(1000000);
  DBMS_OUTPUT.PUT_LINE('Test');
end;

...そしてPLSQLブロックで呼び出します...

begin
  temp_proc;
end;

... SQLは非手続き型です。

2
Jim Gettman