PL/SQL - 定数とリテラル:入門者のガイド

こんにちは、将来のプログラマーさんたち!今日は、PL/SQLの世界に興味深く飛び込み、特に定数とリテラルに焦点を当てていきます。これらの用語が現在未知の言語のように聞こえるかもしれませんが、このチュートリアルの終わりまでに、あなたはこれらの言葉を熟練したプロのように堂々と使えるようになるでしょう!

PL/SQL - Constants and Literals

定数とリテラルとは?

それでは、まずこれらの用語を分解してみましょう:

  • 定数は、プログラムの実行中に変わらない値です。
  • リテラルは、プログラムの中で直接現れる値です。

定数をあなたのお気に入りの数字のように考え、リテラルを紙に書き込む数字のように考えます。これらの概念を詳しく見ていきましょう!

定数の宣言

PL/SQLでは、定数を宣言するのは、「Hey、この値を覚えておいて、これは重要で変わらないんだ!」とプログラムに伝えるのと同じです。

基本的な構文は以下の通りです:

constant_name CONSTANT datatype := value;

これを分解すると:

  • constant_name:定数に与える名前です。
  • CONSTANT:PL/SQLに定数を宣言していることを示すキーワードです。
  • datatype:定数が保持するデータの種類(例:NUMBER、VARCHAR2など)を指定します。
  • :=:PL/SQLの代入演算子です。
  • value:実際に定数に代入する値です。

例1:数値定数の宣言

DECLARE
pi CONSTANT NUMBER(7,6) := 3.141592;
BEGIN
DBMS_OUTPUT.PUT_LINE('piの値は: ' || pi);
END;

この例では、piという名前の定数を3.141592の値で宣言しています。NUMBER(7,6)は、合計7桁で、小数点以下が6桁であることを意味します。

このコードを実行すると、以下のように出力されます:

piの値は: 3.141592

例2:文字列定数の宣言

DECLARE
greeting CONSTANT VARCHAR2(20) := 'こんにちは, PL/SQLの世界!';
BEGIN
DBMS_OUTPUT.PUT_LINE(greeting);
END;

ここでは、greetingという名前の定数に文字列値を保持しています。VARCHAR2(20)は、最大20文字を保持できる可変長文字列を意味します。

出力:

こんにちは, PL/SQLの世界!

PL/SQLのリテラル

それでは、リテラルについて話しましょう。これらはコード内で直接使用される生の値です。PL/SQLはいくつかのリテラルをサポートしています:

1. 数値リテラル

これらは数値です。シンプルですね?整数または浮動小数点数が含まれます。

DECLARE
age NUMBER := 25;  -- 整数リテラル
height NUMBER := 5.9;  -- 浮動小数点リテラル
BEGIN
DBMS_OUTPUT.PUT_LINE('年齢: ' || age);
DBMS_OUTPUT.PUT_LINE('身長: ' || height || 'フィート');
END;

出力:

年齢: 25
身長: 5.9フィート

2. 文字リテラル

これらは、単一引用符で囲まれた単一文字です。

DECLARE
grade CHAR := 'A';
BEGIN
DBMS_OUTPUT.PUT_LINE('あなたの成績は: ' || grade);
END;

出力:

あなたの成績は: A

3. 文字列リテラル

これらは、単一引用符で囲まれた文字列です。

DECLARE
name VARCHAR2(20) := '山田 太郎';
BEGIN
DBMS_OUTPUT.PUT_LINE('ようこそ, ' || name || '!');
END;

出力:

ようこそ, 山田 太郎!

4. ブールリテラル

PL/SQLには3つのブールリテラルがあります:TRUE、FALSE、NULL。

DECLARE
is_student BOOLEAN := TRUE;
BEGIN
IF is_student THEN
DBMS_OUTPUT.PUT_LINE('この人は学生です。');
ELSE
DBMS_OUTPUT.PUT_LINE('この人は学生ではありません。');
END IF;
END;

出力:

この人は学生です。

5. 日付リテラル

日付リテラルは、単一引用符で囲まれ、NLS_DATE_FORMATパラメータで指定された形式でなければなりません。

DECLARE
hire_date DATE := '01-JAN-2023';
BEGIN
DBMS_OUTPUT.PUT_LINE('入社日: ' || hire_date);
END;

出力:

入社日: 01-JAN-23

すべてを合わせて

定数とリテラルについて学んだので、もっと複雑な例でこれらを使ってみましょう:

DECLARE
-- 定数
pi CONSTANT NUMBER(7,6) := 3.141592;
greeting CONSTANT VARCHAR2(20) := 'こんにちは, ';

-- リテラルを使った変数
radius NUMBER := 5;
name VARCHAR2(20) := 'アリス';
is_circle BOOLEAN := TRUE;

-- 計算された値
area NUMBER;
BEGIN
IF is_circle THEN
area := pi * radius * radius;
DBMS_OUTPUT.PUT_LINE(greeting || name || '!');
DBMS_OUTPUT.PUT_LINE('あなたの円の面積は: ' || ROUND(area, 2) || '平方ユニットです。');
ELSE
DBMS_OUTPUT.PUT_LINE('これは円の計算ではありません。');
END IF;
END;

出力:

こんにちは, アリス!
あなたの円の面積は: 78.54平方ユニットです。

この例では、定数(pigreeting)、数値リテラル(5)、文字列リテラル('アリス')、ブールリテラル(TRUE)を使い、計算を行って結果を表示しています。

結論

おめでとうございます!あなたはPL/SQLの定数とリテラルの世界に初めてのステップを踏み出しました。定数は、あなたのプログラムを通じて忠実な友達のように付き添い、リテラルはあなたのPL/SQLの傑作を創造するための積み木です。

プログラミングの旅を続ける中で、これらの概念をますます多く使うようになるでしょう。これらは、コードを読みやすく、保守しやすく、効率的にするための重要なツールです。

引き続き練習し、好奇心を持ち続けると、すぐに複雑なPL/SQLプログラムをスムーズに書けるようになるでしょう。快乐なプログラミングを!

Credits: Image by storyset