プロシージャ

  • プロシージャの定義 プロシージャは、平たく言うと名前付きPL/SQLプログラム。無名ブロックと異なり、登録しておくことで呼び出しが可能。
  • ローカルプロシージャ
  • ストアドプロシージャ
  • パッケージプロシージャ
    • パブリックプロシージャ
    • プライベートプロシージャ
  • プロシージャの作成
    • ローカルプロシージャ
      PROCEDURE プロシージャ名 [(パラメータリスト)]
      { IS | AS }
          [宣言部]
      BEGIN
           [実行部]
      [EXCEPTION 例外処理部)]
      
      END [プロシージャ名];
      
  • ローカルプロシージャの後に変数宣言はできない。(エラーになる)
  • "PROCEDURE プロシージャ名 [(パラメータリスト)]" の部分はプログラム仕様と呼ばれる。
  • ストアドプロシージャ
    CREATE [ OR REPLACE ] プロシージャ名 [(パラメータリスト)]
    { IS | AS }
        [宣言部]
    BEGIN
         [実行部]
    [EXCEPTION 例外処理部)]
    
    END [プロシージャ名];
    
  • ソースコードを変更する場合は "CREATE OR REPLACE" で宣言する。
  • DROP → CREATE で行うと、付与した実行権限等が消えてしまう。
  • 直近のエラー確認は SHOW ERRORS コマンドで行う。
  • プロシージャのパラメータ
    • パラメータの形は下記の通り。
      パラメータ名 パラメータモード データ型 [{ DEFAULT | := } デフォルト値]
      
    • CREATE OR REPLACE PROCEDURE (&bold(){param1 NUMBER, param2 VERCHAR2})
      { IS | AS }
          [宣言部]
      BEGIN
           [実行部]
      [EXCEPTION 例外処理部)]
      
      END [プロシージャ名];
      
  • 複数のパラメータはカンマで区切る。
  • パラメータのデータ型に精度(桁数)は指定できない
  • %TYPEと%ROWTYPEを使用することはできる。
  • パラメータモード
    IN   OUT   IN OUT
    宣言の省略 × ×
    デフォルトの値の使用 × ×
    プログラム内での値の代入 ×
    実行時にリテラル使用 × ×
    • リテラルは定数のこと。
  • プロシージャのコール
    • SQLPlus上でのコールはEXECUTEコマンドを使用する。
    • PL/SQL内部でのコールは、Java等と同様に プロシージャ名; で呼び出せる。
    • 呼び出す際のバインド変数は、SQLPLUS上ではVALIABLEコマンドを使用する。
    • 実パラメータを受取るには :バインド変数名 とする。
    • ストアドプログラム内にVALIABLE変数は記述できない。(コンパイルエラー)
      • VARIABLEコマンドで使用できるデータ型
        数値 NUMBER, BINARY_FLOAT, BINARY_DOUBLE
        文字(固定長) CHAR, NCHAR
        文字(可変長) VARCHAR2, NVARCHAR2
        LOB CLOB, NCLOB
        REFカーソル REFCURSOR
VARIABLE g_telno VARCHAR2(30)
EXECUTE :g_telno := '12345678901'

PL/SQLプロシージャが正常に完了しました。

EXECUTE change_tel(:g_telno)

PL/SQLプロシージャが正常に完了しました。
最終更新:2011年08月11日 08:29