【Oracle】PL/SQLの概要メモ

最近OracleのPL/SQLを使ったんですが、分からな過ぎていろいろ調べたので、その内容をここにメモしておきます。大分殴り書きにメモになりますが悪しからず....

PL/SQLはoracleのSQLに、処理(ファンクション)を加えたもののイメージ。
注意点としては、読みだす関数は読みだされる関数より上に記述しなけえればならない。

 

プロシージャとファンクションについて

プロシージャ
 ・「手続き」という意味。
 ・戻り値なし

ファンクション
 ・「関数」という意味。
 ・戻り値あり

※ファンクションの戻り値
 ・Result という変数は関数において暗黙的に宣言されているもので、ファンクション内でResultに値をセットしておけば、自動的に読み出し元に返される。

 

カーソル(CURSOR)

    問合わせ(データ操作も含む)を行なうための情報を管理する作業領域をあらわすための「タグ」のようなものである。このカーソルにユーザーが名前を付けているものを 明示カーソル と呼ぶ。暗黙カーソル では Oracle によって用意されている名前の無い作業領域を使用している。

 

値の代入

NVL(A,B)
    AがnullならBを、AがnullじゃなければそのままA

A := B
    BをAに代入

A = B
    AとBは同じ

A => B
    AをBに代入

 

例外処理

RAISE :ユーザー定義例外を発生させる
※「NULL;」と記述すると例外を無視して、次の処理に移る

例)

create or replace procedure exception_sample1
is
    eUserException  exception;
begin
    RAISE eUserException;
end;
/

参考:http://www.shift-the-oracle.com/plsql/exception/raise.html

 

OTHERS: 例外は特別な例外名で、すべての例外をあらわすことができる。ただし、OTHERS は他の例外と一緒に並べることはできない。

例)

DECLARE
    vNum    NUMBER(2);
BEGIN
    -- ZERO DIVIDE EXCEPTION
    vNum := 1 / 0;
    DBMS_OUTPUT.PUT_LINE('数値=' || vNum);
EXCEPTION
    WHEN ZERO_DIVIDE THEN
        DBMS_OUTPUT.PUT_LINE('計算できませんでした');
    WHEN OTHERS THEN
    --    < 例外処理 >
        RAISE;
END;
/

参考:http://www.shift-the-oracle.com/plsql/exception/exception-when.html



投稿日:2018-10-17    更新日:2018-10-17

[スポンサーリンク]

  
サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]

最近の記事