oracleのexecute immediateの使い方は?
PL/SQLプログラム内でSQL文を動的に実行するためには、EXECUTE IMMEDIATE文を使用します。以下はEXECUTE IMMEDIATEを使用した例です:
DECLARE
sql_stmt VARCHAR2(200);
emp_name VARCHAR2(100);
BEGIN
sql_stmt := 'SELECT ename FROM emp WHERE empno = 7839';
EXECUTE IMMEDIATE sql_stmt INTO emp_name;
DBMS_OUTPUT.PUT_LINE('Employee name is: ' || emp_name);
END;
この例では、最初に変数sql_stmtを宣言して実行するSQLステートメントを格納します。次に、EXECUTE IMMEDIATEステートメントを使用してSELECTステートメントを実行し、結果をemp_name変数に格納します。最後に、DBMS_OUTPUT.PUT_LINEステートメントを使用してデータベースから取得した従業員の名前を印刷します。
EXECUTE IMMEDIATEを使用して動的なSQLステートメントを実行する際には、SQLインジェクション攻撃を防ぐために特に注意する必要があります。このような状況を避けるためには、バインド変数を使用することができます。