PL/SQL - 手順書:初めての人向けのガイド

こんにちは、未来のPL/SQLの魔法使いさんたち!今日は、PL/SQL手順書の世界へのエキサイティングな旅に踏み出します。プログラミングが初めての人でも安心してください-私はあなたの親切なガイドとして、ステップバイステップで進めていきます。このチュートリアルの終わりには、プロのように自分の手順書を作成できるようになります!

PL/SQL - Procedures

PL/SQL手順書とは?

まず、手順書とは何かを理解しましょう。手順書は、料理の再利用可能なレシピのようなものです。あなたがお気に入りのチョコレートチップクッキーのレシピを何度も使うのと同様に、手順書は特定のタスクを実行するために何度も呼び出せるSQLおよびPL/SQLステートメントのセットです。

PL/SQLサブプログラムの構成

さあ、PL/SQLサブプログラム(手順書を含む)の構造を分解しましょう。サンドイッチの異なる部分を理解するのと似ています-それぞれのコンポーネントが役割を持っています!

  1. デクリレーションセクション:ここでは、材料(変数、定数など)を紹介します。
  2. 実行可能セクション:ここで魔法が起こります-実際のコードがここに入ります。
  3. エクセプションハンドリングセクション:これは私たちの安全網で、発生する可能性のあるエラーをキャッチします。

以下は簡単な視覚的な表現です:

DECLARE
-- デクリレーションセクション
BEGIN
-- 実行可能セクション
EXCEPTION
-- エクセプションハンドリングセクション
END;

手順書の作成

さあ、袖をまくって、最初の手順書を作成しましょう!まずは簡単なものから-「Hello, World!」を出力する手順書を作成します。

CREATE OR REPLACE PROCEDURE say_hello IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, World!');
END;
/

これを分解すると:

  • CREATE OR REPLACE PROCEDURE:これはOracleに新しい手順書を作成するか、同じ名前の既存の手順書を置き換えるように指示します。
  • say_hello:これは私たちが手順書に与える名前です。
  • IS:このキーワードは手順書のヘッダーと本体を分離します。
  • BEGINEND:これらのキーワードは実行可能セクションをくくります。
  • DBMS_OUTPUT.PUT_LINE:これはテキストを表示するためのビルトイン手順書です。
  • /:このスラッシュは全体のCREATE PROCEDUREステートメントを実行します。

スタンドアロン手順書の実行

素晴らしい!私たちは手順書を作成しましたが、どうやって実行するのでしょうか?簡単です:

BEGIN
say_hello;
END;
/

これを実行すると、「Hello, World!」が表示されます。おめでとうございます!あなたは初めてのPL/SQL手順書を作成し、実行しました!

スタンドアロン手順書の削除

時には掃除をしなければなりません。手順書を削除したい場合は、簡単です:

DROP PROCEDURE say_hello;

このコマンドは私たちのsay_hello手順書を削除します。このパワーには注意してください-力は責任を伴います!

PL/SQLサブプログラムのパラメータモード

さあ、手順書をより柔軟にするためにパラメータを追加しましょう。PL/SQLでは、パラメータが異なるモードを持つことができます:

モード 説明
IN 値を手順書に渡します
OUT 値を手順書から返します
IN OUT 値を手順書に渡し、また値を手順書から返します

INパラメータを持つ手順書を作成してみましょう:

CREATE OR REPLACE PROCEDURE greet_user(p_name IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, ' || p_name || '!');
END;
/

これで異なるユーザーに挨拶できます:

BEGIN
greet_user('Alice');
greet_user('Bob');
END;
/

これは以下の出力を表示します:

Hello, Alice!
Hello, Bob!

パラメータの渡し方

手順書にパラメータを渡す際には、主に2つの方法があります:

  1. 位置指定法:パラメータが定義された順序で渡されます。
  2. 名前指定法:各値がどのパラメータに対応するかを指定します。

新しい手順書で両方を実際に見てみましょう:

CREATE OR REPLACE PROCEDURE calculate_rectangle(
p_length IN NUMBER,
p_width IN NUMBER,
p_area OUT NUMBER,
p_perimeter OUT NUMBER
) IS
BEGIN
p_area := p_length * p_width;
p_perimeter := 2 * (p_length + p_width);
END;
/

この手順書を以下のように呼び出します:

DECLARE
v_area NUMBER;
v_perimeter NUMBER;
BEGIN
-- 位置指定法
calculate_rectangle(5, 3, v_area, v_perimeter);
DBMS_OUTPUT.PUT_LINE('位置指定法: 面積 = ' || v_area || ', 周囲 = ' || v_perimeter);

-- 名前指定法
calculate_rectangle(p_width => 3, p_length => 5, p_perimeter => v_perimeter, p_area => v_area);
DBMS_OUTPUT.PUT_LINE('名前指定法: 面積 = ' || v_area || ', 周囲 = ' || v_perimeter);
END;
/

どちらの呼び出しも同じ結果を生成します:

位置指定法: 面積 = 15, 周囲 = 16
名前指定法: 面積 = 15, 周囲 = 16

名前指定法は、多くのパラメータがある場合やオプションのパラメータをスキップしたい場合に特に便利です。

そして、ここまでです、皆さん!PL/SQL手順書の基本から作成、実行、パラメータの渡し方までをカバーしました。練習は完璧を生みますので、自分の手順書で実験してみてください。

最後に、ちょっとしたジョーク:データベース管理者はなぜ妻を離婚したのでしょうか?彼女はあまりに多くのビューを持っていて、正規化されていなかったからです!

ハッピーコーディング、そしてあなたの手順書が常に無事に実行されることを祈っています!

Credits: Image by storyset