PLSQL 遊標 變數的使用一例

lnwxzyp發表於2009-03-22
今天學習exp和imp,雖然之前有所瞭解,但是實際操作很少,不夠熟練,而且沒有imp的經驗,於是首先進行了exp的操作
exp zyp/zyp@yp file=f:\exp_200921.dmp wner=zyp
完成之後 想要實驗一下 實際的效果,於是想到把zyp使用者下的表全部給刪除掉,一個一個刪除實在太慢,而用||連線符號到時很快 但是還需要執行語句之後執行刪除的語句,
select 'drop table '||table_name ||';' from user_tables.
能不能用動態語句直接執行呢?
答案當然是肯定的了,經過實驗 指令碼如下:
SQL> declare t1 varchar2(30) ;     
  2  cursor t2 is select table_name from user_tables;
  3  begin
  4  open t2;
  5  loop
  6  fetch t2 into t1;
  7  exit when t2%notfound;
  8  execute immediate 'drop table '||t1||'';
  9  end loop;
 10  end;
 11  /

PL/SQL 過程已成功完成。

SQL>SQL> select count(*) from user_tables;

  COUNT(*)
----------
         0

SQL>

刪了個一乾二淨啊,要不是為了測試一下imp,順便熟悉一下PLSQL的使用, 打死我也不敢執行這種語句,自己的測試資料庫就無所謂,如果是其他的庫即便是加where條件我也不敢執行。
主要是為了學習,下面匯入.dmp 檔案試試
imp zyp/zyp@yp file=f:\exp_200921.dmp full=y
完成之後
SQL> select count(*) from user_tables;

  COUNT(*)
----------
        70

SQL>
哈哈  失去的表又回來了。
另附一個迴圈建表的plsql語句
declare t1 number;
begin
for t1 in 1..10 loop
execute immediate 'create table YP_'||t1||' (tt number)';
end loop;
end;
/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12216142/viewspace-573327/,如需轉載,請註明出處,否則將追究法律責任。

相關文章