zukucode
主にWEB関連の情報を技術メモとして発信しています。

PL/SQL ストアドプロシージャを作成・削除する方法

PL/SQLのストアドプロシージャを作成・更新・削除をする方法を紹介します。

作成

CREATE PROCEDURE プロシージャ名 ASで作成します。

まだ何も処理を実装していない状態ですが、FOOBARというプロシージャ名で作成しています。

AS以降でプロシージャの中身を実装していきます。

CREATE PROCEDURE FOOBAR AS

BEGIN

END;
/

上書き

すでに同一のプロシージャ名で定義されている場合は以下のエラーが発生します。

ORA-00955: すでに使用されているオブジェクト名です。

プロシージャを修正するたびに削除してから作成をするのは手間なので、すでに定義されていた場合は上書きして更新するために、以下のように修正します。

OR REPLACEを指定することにより、エラーにならずに上書きをするようになります。

CREATE PROCEDURE FOOBAR AS
CREATE OR REPLACE PROCEDURE FOOBAR AS

BEGIN

END;
/

削除

プロシージャを削除するには、DROP PROCEDURE プロシージャ名を実行します。

DROP PROCEDURE FOOBAR;
/

存在しないプロシージャ名を指定すると以下のエラーが発生します。

ORA-04043: オブジェクトFOOBARは存在しません。

関連記事

  • PL/SQL ストアドプロシージャを作成・削除する方法

    PL/SQLのストアドプロシージャを作成・更新・削除をする方法を紹介します。CREATE PROCEDURE プロシージャ名 ASで作成します。まだ何も処理を実装していない状態ですが、FOOBARとい...


  • PL/SQL IF文で条件を指定して条件分岐する

    PL/SQLでIFやELSEを使用して条件を分岐する方法を紹介します。ELSE IFではなくELSIFなので注意が必要です。また、END IFの最後に;をつけるのを忘れないようにします。通常のSQLの...


  • PL/SQL パラメータで引数と戻り値を設定する

    PL/SQLでストアドプロシージャのパラメータで引数と戻り値を設定する方法を紹介します。ストアドプロシージャでは、戻り値をRETURNすることができません。なので、戻り値用に引数を用意して、その変数に...


  • PL/SQL SELECTした結果を変数にセットする

    PL/SQLでSELECTした結果を変数にセットする方法を紹介します。SELECT句のあとにINTO 変数名でSELECTした値を変数にセットできます。設定データが複数件あり、SELECT結果が複数行...


  • PL/SQL TRUNCATE TABLEをストアドプロシージャに定義する

    PL/SQLでTRUNCATE処理をストアドプロシージャに定義する方法を紹介します。そのまま定義すると「記号TABLEが見つかりました。」のコンパイルエラーになってしまうので、動的SQLで定義します。


  • PL/SQL 変数を宣言して値を設定する

    PL/SQLで変数を宣言して値を設定する方法を紹介します。ASとBEGINの間で変数を宣言します。宣言と同時に値をセット(初期化)も可能です。変数への代入は=ではなく:=で行います。


  • PL/SQL カーソルを使用してSELECT結果のループ処理を行う

    PL/SQLでカーソルを使用してSELECT結果の件数分ループ処理を行う方法を紹介します。FETCH カーソル名 INTO 変数名でOPENされたカーソルの結果セットを1行だけ変数にセットします。LO...


  • SQL DISTINCTで重複行を1行のみ表示する方法

    SELECTのあとにDISTINCTをつけると、同一のレコードを1行のみ取得するようになります。上記例ではid=1と4のレコードの取得結果は同じになるので、本来は2行出力されるはずのレコードが、DIS...


  • SQL ORDER BYでレコードを並び替えるときのポイント

    身長の降順(大きい順)、身長が同じ時はidの昇順(小さい順)で並び替えたいときは、以下のようなSQLになります。指定した列の値がすべて同じ場合はどのような順番で取得されるのか定まりません。データベース...


  • PostgreSQL 日付の加算・減算を行う

    PostgreSQLで日付の加算・減算を行う方法を紹介します。日付型のカラムに対しては、数字の計算と同じ要領で行うことができます。YYYYMMDD形式などの文字列型のカラムの場合は、日付型に変換してか...