Oracle PL/SQL - 動的SQL(exccute immediate)AdvertisementDDL の実行execute immediate SQL文[or PL/SQLブロック] 例:データベース作成
declare
begin
execute immediate 'create table db1 (name char(2))';
end;
/
into 句の使用
execute immediate 内の select 文が値をひとつだけ戻す場合、into 句で指定した変数に値を格納することができる。
例
declare
wk_name varchar2(50);
begin
execute immediate 'select 名前 from プロフィール where 社員番号 = 100' into wk_name;
dbms_output.put_line(wk_name);
end;
動的 SQL の実行
条件に変数を使う場合 ||(連結演算子)を使用する
declare
wk_name varchar2(50);
wk_項目 varchar2(20) := '名前';
begin
execute immediate 'select ' || wk_項目 || ' from プロフィール where 社員番号 = 100' into wk_name;
dbms_output.put_line(wk_name);
end;
using
declare
sql_stmt varchar2(200);
begin
sql_stmt := 'update プロフィール set 名前 = :v1 where 社員ID = :v2';
execute immediate sql_stmt using 'マメタロウ', 100;
commit;
end;
動的SQL + カーソル
declare
sql_stmt varchar2(200);
wk_grp varchar2(5);
wk_name varchar2(30);
type cursor_type is ref cursor;
cur_name cursor_type;
begin
wk_grp := '1u';
open cur_name for 'select 名前 from 社員表 where 所属グループ = :v1' using wk_grp;
loop
fetch cur_name into wk_name;
exit when cur_name%notfound;
dbms_output.put_line(wk_name);
end loop;
close cur_name;
end;
Advertisement |
ショートカット・634・このカテゴリのトップページに戻る ・634labs UIコレクションギャラリー サイト検索Y!ログールビリヤード |