1

初心者向けの Oracle ストアド プロシージャに関する優れたリソースを探しています。Dev Shed ArticleOracle Documentation サイトの記事を試しましたが、私のニーズを満たしていませんでした。1 つの形式の Oracle ドキュメント サイトには、Java の例のオーバーヘッドがありました。Dev Shed を試してみましたが、例を試してみると無効な SQL エラーが発生し続けます。これが私が実行しようとした基本的なものです:

CREATE OR REPLACE PROCEDURE skeleton
IS
BEGIN
 NULL;
END;

EXECUTE skeleton;

私は初歩的な間違いを犯していますか、それとも記事の構文が古くなっていますか? 私は Oracle 10g と PL/SQL Developer を使用しています。

ありがとう!

解決:

@curtiskの提案に従って、もう少し複雑な例を試しました:

CREATE OR REPLACE PROCEDURE p_getdate
IS
BEGIN
 dbms_output.put_line(TO_CHAR
    (SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
END;

次のように実行しようとしたとき:

EXECUTE p_getdate

ORA-00900: 無効な SQL ステートメント エラーが発生しました。なぜこれが当てはまるのかを探して、このスレッドに出くわしました。電話してみることにしたので、次のことを試しました。

CALL p_getdate;

しかし、それもうまくいきませんでした。私はスレッドをもう少し読んで、懐疑的に試しました:

CALL p_getdate();

出来上がり、プロシージャが適切に呼び出されました。なぜこれが機能するのかについての答えはありませんが、機能するという事実により、プロジェクトを進めることができます. これがなぜなのか説明できる人がいるなら、私はこれについてもっと学びたいです.

助けてくれた@curtiskにもう一度感謝します!

4

2 に答える 2

1

私はその例を出発点として使用しません...私はそれを何かさせたいと思います

CREATE OR REPLACE PROCEDURE p_getdate
IS
BEGIN
 dbms_output.put_line(TO_CHAR
    (SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
END;

それを実行すると、正常にコンパイルされ、プロンプトで....

SQL> SET SERVEROUT ON;
SQL> execute p_getdate;
 06-11-2009 12:29:54

出力に現在の日付/時刻が表示されます。あなたが使用した例は単純すぎました。次のステップは、宣言とパラメーターを処理するプロシージャーを作成することです。

初心者向けのリソースに関しては、特にお勧めできないものがたくさんあります。何もない場合は、常に「Ask Tom」があります..役立つかもしれない Q/A がそこにあるはずです。

于 2009-06-11T16:31:19.627 に答える
0

最善の策は、Steve Feurenstein と Bill Prybil による Oracle PLSQL Programming などの本です。これにはたくさんの例があり、約 1300 ページです。

参照が必要なだけの場合は、この URL から oracle 12c plsql 言語リファレンスを試すことができますが、私は前の提案で見つかったユース ケースがより好きです。

http://docs.oracle.com/database/122/LNPLS/toc.htm

于 2017-10-03T18:20:40.460 に答える