68

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 ステートメントが表示されます

ここで助けが必要です

4

7 に答える 7

90

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

begin 
    temp_proc;
end;

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

于 2009-12-06T21:57:25.063 に答える
4

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

(あなたが発見したように)BEGIN ... END構文はApexで機能するので、それは問題ではありません。

于 2009-12-06T13:16:52.860 に答える
3

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

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

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

begin
  temp_proc;
end;

...SQL は非手続き型であるため。

于 2013-03-13T19:36:52.457 に答える
0

次のように構文を修正しようとしましたか?:

create or replace procedure temp_proc AS
begin
  DBMS_OUTPUT.PUT_LINE('Test');
end;
于 2009-12-06T07:03:58.820 に答える
0

コマンド ウィンドウでは、次の操作を簡単に実行できます。

Connected to Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 
Connected as XXX@YYY


SQL> call temp_proc();

または:

SQL> execute temp_proc();
于 2022-02-02T15:27:36.400 に答える