OracleにおけるSELECT INTOの使い方は何ですか?
Oracleで、SELECT INTO文を使用してクエリの結果を変数やテーブルに格納することができます。
SELECT INTOステートメントを使用してクエリ結果を変数に格納する構文は以下の通りです:
SELECT column_name INTO variable_name
FROM table_name
WHERE condition;
上記の文法では、column_nameは検索する列の名前、variable_nameは結果を保存する変数の名前、table_nameは検索するテーブルの名前、conditionは検索条件です。
例えば、以下の例では、”Smith”という姓の従業員を検索してその名前を変数に保存します。
DECLARE
v_employee_name employees.last_name%TYPE;
BEGIN
SELECT last_name INTO v_employee_name
FROM employees
WHERE last_name = 'Smith';
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_employee_name);
END;
/
上記の例では、DECLARE文を使用して変数v_employee_nameを定義し、その後、SELECT INTO文を使用してクエリ結果をこの変数に格納します。最後に、DBMS_OUTPUT.PUT_LINE関数を使用して結果をコンソールに出力します。
変数に保存するだけでなく、SELECT INTO文を使用してクエリ結果をテーブルに保存することもできます。構文は以下の通りです:
SELECT column_name1, column_name2, ...
INTO table_name
FROM table_name
WHERE condition;
上記の文法では、column_name1、column_name2などは検索したい列名であり、table_nameは結果を保存するテーブル名であり、conditionは検索条件です。
例えば、以下の例では、「Smith」という姓の従業員の名前と給与を新しいテーブルに保存します。
CREATE TABLE new_table AS
SELECT last_name, salary
FROM employees
WHERE last_name = 'Smith';
以上の例では、SELECT INTOステートメントを使用してクエリ結果を新しいテーブルnew_tableに保存します。 新しいテーブルの構造はクエリ結果の構造と同じであり、last_nameとsalaryの2つの列が含まれています。