OracleのEXECUTE IMMEDIATEステートメントは、実行時に動的なSQLクエリを実行するための便利な機能です。この記事では、EXECUTE IMMEDIATEの基本的な使用方法と、いくつかのコード例を紹介します。
まず、EXECUTE IMMEDIATEステートメントの基本構文を見てみましょう。
EXECUTE IMMEDIATE <SQL文>;
<SQL文>の部分には実行したい動的なSQLクエリを記述します。このクエリは実行時に評価され、実行されます。
例えば、以下のような動的なクエリを実行することができます。
DECLARE
v_emp_id NUMBER := 100;
v_sql VARCHAR2(1000);
BEGIN
v_sql := 'SELECT * FROM employees WHERE employee_id = ' || v_emp_id;
EXECUTE IMMEDIATE v_sql;
END;
上記の例では、変数v_emp_idの値を使用して動的なSELECTクエリを生成し、EXECUTE IMMEDIATEステートメントで実行しています。このようにすることで、実行時にクエリの内容を動的に決定することができます。
また、EXECUTE IMMEDIATEステートメントでは、変数をバインドすることもできます。以下はその例です。
DECLARE
v_emp_id NUMBER := 100;
v_sql VARCHAR2(1000);
v_result NUMBER;
BEGIN
v_sql := 'SELECT salary INTO :result FROM employees WHERE employee_id = :emp_id';
EXECUTE IMMEDIATE v_sql USING OUT v_result, v_emp_id;
DBMS_OUTPUT.PUT_LINE('Salary: ' || v_result);
END;
上記の例では、変数v_resultとv_emp_idをバインド変数として使用しています。バインド変数は、クエリ内のパラメータとして使用されます。
このようにして、EXECUTE IMMEDIATEステートメントを使用して動的なSQLクエリを実行することができます。この機能を活用することで、柔軟性のあるプログラムを作成することができます。