08動態Sql

declare
  v_sql varchar2(100);

  v_count number;

  v_username varchar2(100);
begin
  --delete From T_Userinfo where userid = 5;
  --1:最簡單的動態SQL
  v_sql := 'Delete From T_Userinfo where userid = 5';
  execute immediate v_sql;
  commit;

  --2:動態SQL語句中帶into.
  select count(1) into v_count From T_Userinfo;
  dbms_output.put_line('編譯SQL = ' || v_count);

  v_sql := 'select count(1) From T_Userinfo where usersex = 1';
  execute immediate v_sql
    into v_count;
  dbms_output.put_line('動態SQL = ' || v_count);

  --3:動態SQL中帶命令參數
  v_username := '%a%';
  v_sql      := 'Select count(1) From T_Userinfo where username like :v_username';
  execute immediate v_sql
    into v_count
    using v_username;

  dbms_output.put_line('命名參數SQL = ' || v_count);
  
  --4:SQL語句的拼湊
  
  --5:可以執行DDL和DCL語句。
  --drop table t_a;
  
  v_sql := 'drop table t_a';
  execute immediate v_sql;
  
end;
/*
DDL:create/drop/alter /truncate
DCL:grant/revoke
DML:insert/update/delete/select
TCL:commit/rollback;
*/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章