PL/SQL - データ型
こんにちは、将来のプログラマーたち!今日は、PL/SQLのデータ型の魅力的な世界に飛び込みます。プログラミングが初めてであれば安心してください。私はあなたを一歩一歩ガイドします。このチュートリアルの終わりまでに、PL/SQLのさまざまなデータ型に慣れ、コーディングの冒険を始める準備が整います!
PL/SQL ス칼ラデータ型とサブタイプ
基礎から始めましょう。PL/SQLでは、ス칼ラデータ型は私たちのプログラムの構成要素です。これらは単一の値、例えば数値やテキストを表現します。
ス칼ラデータ型とは?
ス칼ラデータ型はPL/SQL中最もシンプルなデータの形です。私たちのプログラミングの宇宙の原子のようなものです。小さく、分割不能なユニットで、より複雑な構造を築くために使用します。
以下にス칼ラデータ型のシンプルな例を示します:
DECLARE
my_name VARCHAR2(50) := 'John Doe';
BEGIN
DBMS_OUTPUT.PUT_LINE('私の名前は: ' || my_name);
END;
この例では、my_name
はVARCHAR2
データ型の変数で、テキストを保存するために使用されます。それに'John Doe'という値を割り当てました。このコードを実行すると、「私の名前は: John Doe」と表示されます。
PL/SQL 数値データ型とサブタイプ
次に数値について話しましょう。PL/SQLには、さまざまな種類の数値を扱うための複数の数値データ型があります。
一般的な数値データ型
データ型 | 説明 | 例 |
---|---|---|
NUMBER | 汎用の数値 | NUMBER(10,2) |
INTEGER | 整数 | INTEGER |
BINARY_FLOAT | 32ビット浮動小数点数 | BINARY_FLOAT |
BINARY_DOUBLE | 64ビット浮動小数点数 | BINARY_DOUBLE |
これらを実行してみましょう:
DECLARE
my_integer INTEGER := 42;
my_float BINARY_FLOAT := 3.14;
my_salary NUMBER(8,2) := 5000.50;
BEGIN
DBMS_OUTPUT.PUT_LINE('答えは: ' || my_integer);
DBMS_OUTPUT.PUT_LINE('πは約: ' || my_float);
DBMS_OUTPUT.PUT_LINE('私の給料は: $' || my_salary);
END;
このスクリプトは、異なる数値型の3つの変数を宣言しています。my_salary
のNUMBER(8,2)
型は、合計で8桁まで保存でき、小数点以下に2桁の桁数を持つことを意味します。
PL/SQL 文字列データ型とサブタイプ
テキストデータはプログラミングにおいて非常に重要です。PL/SQLは、テキストを効率的に扱うための複数の文字列データ型を提供しています。
一般的な文字列データ型
データ型 | 説明 | 例 |
---|---|---|
VARCHAR2 | 可変長文字列 | VARCHAR2(100) |
CHAR | 固定長文字列 | CHAR(10) |
NVARCHAR2 | 可変長Unicode文字列 | NVARCHAR2(100) |
NCHAR | 固定長Unicode文字列 | NCHAR(10) |
以下にこれらの使用例を示します:
DECLARE
my_varchar VARCHAR2(50) := 'Hello, World!';
my_char CHAR(10) := 'Fixed ';
my_nvarchar NVARCHAR2(50) := N'こんにちは'; -- 日本語の「Hello」
BEGIN
DBMS_OUTPUT.PUT_LINE('VARCHAR2: ' || my_varchar);
DBMS_OUTPUT.PUT_LINE('CHAR: ' || my_char || '(終わり)');
DBMS_OUTPUT.PUT_LINE('NVARCHAR2: ' || my_nvarchar);
END;
CHAR
型は、文字列を固定長にするためにスペースで埋めます。
PL/SQL 布尔データ型
布尔データ型は、プログラムでの意思決定において非常に重要です。它们只能有三个可能的值:TRUE、FALSE、またはNULL。
DECLARE
is_student BOOLEAN := TRUE;
has_job BOOLEAN := FALSE;
is_married BOOLEAN;
BEGIN
IF is_student THEN
DBMS_OUTPUT.PUT_LINE('この人は学生です。');
END IF;
IF NOT has_job THEN
DBMS_OUTPUT.PUT_LINE('この人は仕事がありません。');
END IF;
IF is_married IS NULL THEN
DBMS_OUTPUT.PUT_LINE('この人が結婚しているかどうかはわかりません。');
END IF;
END;
このスクリプトは、布尔値を使用してコード内で意思決定を行う方法を示しています。
PL/SQL 日時とインターバル型
日時や時間を扱う際に、PL/SQLはこれらの値を正確に処理するための特定のデータ型を提供しています。
一般的な日時型
データ型 | 説明 | 例 |
---|---|---|
DATE | 日時 | DATE |
TIMESTAMP | 日時と分数秒 | TIMESTAMP |
INTERVAL YEAR TO MONTH | 年と月の期間 | INTERVAL YEAR TO MONTH |
INTERVAL DAY TO SECOND | 日、時間、分、秒の期間 | INTERVAL DAY TO SECOND |
以下にこれらを実行してみましょう:
DECLARE
current_date DATE := SYSDATE;
future_date TIMESTAMP := SYSTIMESTAMP + INTERVAL '1' YEAR;
age_interval INTERVAL YEAR TO MONTH;
BEGIN
age_interval := (SYSDATE - TO_DATE('1990-01-01', 'YYYY-MM-DD')) YEAR TO MONTH;
DBMS_OUTPUT.PUT_LINE('現在の日付: ' || TO_CHAR(current_date, 'DD-MON-YYYY'));
DBMS_OUTPUT.PUT_LINE('1年後の日付: ' || TO_CHAR(future_date, 'DD-MON-YYYY HH24:MI:SS.FF'));
DBMS_OUTPUT.PUT_LINE('年齢: ' || age_interval);
END;
このスクリプトは、日付、タイムスタンプ、インターバルの使用方法を示しています。
PL/SQL 大型オブジェクト(LOB)データ型
大量のデータを扱うために、PL/SQLはLOB(Large Object)データ型を提供しています。
一般的なLOB型
データ型 | 説明 | 例 |
---|---|---|
CLOB | 文字Large Object | CLOB |
BLOB | バイナリLarge Object | BLOB |
NCLOB | ナショナルCharacter Large Object | NCLOB |
以下にCLOBの簡単な使用例を示します:
DECLARE
my_clob CLOB;
BEGIN
my_clob := 'これは、潜在的にはメガバイト単位の非常に長い文字列です。';
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.GETLENGTH(my_clob) || ' 文字');
END;
このスクリプトは、CLOBを作成し、その長さを取得する方法を示しています。
PL/SQL ユーザー定義サブタイプ
PL/SQLでは、既存のデータ型に基づいて独自のサブタイプを作成できます。これにより、コードが読みやすく保守がしやすくなります。
DECLARE
SUBTYPE positive_number IS NUMBER(8,2) CHECK (positive_number > 0);
my_salary positive_number;
BEGIN
my_salary := 5000.50;
DBMS_OUTPUT.PUT_LINE('私の給料: $' || my_salary);
-- これはエラーを引き起こします:
-- my_salary := -1000;
END;
この例では、positive_number
というサブタイプを作成し、常に正の値を持つようにしました。
PL/SQLのNULL
最後にNULL値について話しましょう。PL/SQLでは、NULLは未知または利用できない値を表します。ゼロや空の文字列と同じではありません。
DECLARE
var1 NUMBER;
var2 VARCHAR2(10) := '';
BEGIN
IF var1 IS NULL THEN
DBMS_OUTPUT.PUT_LINE('var1はNULLです');
END IF;
IF var2 IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('var2はNULLではありません。空の文字列です');
END IF;
END;
このスクリプトは、NULLと空の文字列の違いを示しています。
そして、それがすべてです!PL/SQLの主要なデータ型をカバーしました。データ型を理解することは、効率的でエラーのないコードを書くためには非常に重要です。練習を続け、間もなくPL/SQLのプロになるでしょう!
Credits: Image by storyset