0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SQL】ストアドプロシージャとファンクション

Posted at

ストアドプロシージャとファンクション

PL/SQLでは、ストアドプロシージャとファンクションを使用して、再利用可能なコードブロックをデータベース内に保存し、必要に応じて呼び出すことができます。これにより、コードの再利用性と保守性が向上します。

ストアドプロシージャ

ストアドプロシージャは、特定のタスクを実行するための一連のSQLステートメントを含むプログラムユニットです。ストアドプロシージャは、呼び出されたときに一度に実行され、複雑なビジネスロジックをデータベース内で効率的に処理します。

ストアドプロシージャの作成と呼び出し

例: ストアドプロシージャの作成

-- ストアドプロシージャの作成
CREATE OR REPLACE PROCEDURE greet_user (p_name IN VARCHAR2) IS
BEGIN
    DBMS_OUTPUT.PUT_LINE('Hello, ' || p_name || '!');
END;

例: ストアドプロシージャの呼び出し

-- ストアドプロシージャの呼び出し
BEGIN
    greet_user('Alice');
END;

ファンクション

ファンクションは、特定の値を計算して返すためのプログラムユニットです。ファンクションは、呼び出されると値を返す点がストアドプロシージャと異なります。ファンクションは、SELECT文の中やPL/SQLブロック内で使用できます。

ファンクションの作成と呼び出し

例: ファンクションの作成

-- ファンクションの作成
CREATE OR REPLACE FUNCTION get_double (p_number IN NUMBER) RETURN NUMBER IS
BEGIN
    RETURN p_number * 2;
END;

例: ファンクションの呼び出し

-- ファンクションの呼び出し
DECLARE
    v_result NUMBER;
BEGIN
    v_result := get_double(5);
    DBMS_OUTPUT.PUT_LINE('Double of 5 is ' || v_result);
END;

IN、OUT、IN OUTパラメータ

ストアドプロシージャとファンクションは、パラメータを使用してデータを受け渡すことができます。パラメータには、IN、OUT、IN OUTの3種類があります。

  • INパラメータ: 呼び出し元からプロシージャやファンクションに値を渡すためのパラメータ。呼び出し元で変更しても影響を受けません。
  • OUTパラメータ: プロシージャやファンクションから呼び出し元に値を返すためのパラメータ。呼び出し元で使用される前に、プロシージャやファンクション内で初期化される必要があります。
  • IN OUTパラメータ: 呼び出し元から値を受け取り、プロシージャやファンクション内でその値を変更し、変更後の値を呼び出し元に返すためのパラメータ。

例: IN、OUT、IN OUTパラメータの使用

-- ストアドプロシージャの例(IN、OUTパラメータ)
CREATE OR REPLACE PROCEDURE calculate_area (
    p_radius IN NUMBER,
    p_area OUT NUMBER
) IS
BEGIN
    p_area := 3.14 * p_radius * p_radius;
END;
-- 呼び出し例
DECLARE
    v_radius NUMBER := 5;
    v_area NUMBER;
BEGIN
    calculate_area(v_radius, v_area);
    DBMS_OUTPUT.PUT_LINE('Area of circle: ' || v_area);
END;

ストアドプロシージャとファンクションの違い

  • ストアドプロシージャ: 特定のタスクを実行するためのプログラムユニットで、値を返す必要はありません。
  • ファンクション: 特定の値を計算して返すプログラムユニットで、必ず値を返す必要があります。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?