【PL/SQL】使用變數傳遞方法生成表更名的SQL語句

secooler發表於2009-12-04
在某些情況下需要將PL/SQL中的一個變數的值修改後傳給另外一個變數以便實現複雜的需求,這也是變數傳遞魅力所在。
這裡我以一個透過變數傳遞的方法生成修改表名的SQL語句為例給大家演示一下,供參考。

1.為演示方便,建立4個表。
sec@ora10g> create table t1 (x int);
sec@ora10g> create table t2 (x int);
sec@ora10g> create table t3 (x int);
sec@ora10g> create table t4 (x int);

2.PL/SQL塊及執行結果
sec@ora10g> declare
  2     cursor c
  3     is
  4        select table_name from user_tables;
  5
  6     v_table_name       varchar2 (200);
  7     v_table_name_new   varchar2 (200);
  8  begin
  9     v_table_name := '';
 10
 11     open c;
 12
 13     loop
 14        fetch c into v_table_name;
 15
 16        exit when c%notfound;
 17
 18        select v_table_name || '_NEW_NAME' into v_table_name_new
 19          from DUAL;
 20
 21        DBMS_OUTPUT.put_line ('The old name is: ' || v_table_name);
 22        DBMS_OUTPUT.put_line ('The new name is: ' || v_table_name_new);
 23        DBMS_OUTPUT.put_line(   'alter table '
 24                             || v_table_name
 25                             || ' rename to '
 26                             || v_table_name_new
 27                             || ';');
 28        DBMS_OUTPUT.put_line ('');
 29     end loop;
 30
 31     close c;
 32  end;
 33  /
The old name is: T1
The new name is: T1_NEW_NAME
alter table T1 rename to T1_NEW_NAME;

The old name is: T2
The new name is: T2_NEW_NAME
alter table T2 rename to T2_NEW_NAME;

The old name is: T3
The new name is: T3_NEW_NAME
alter table T3 rename to T3_NEW_NAME;

The old name is: T4
The new name is: T4_NEW_NAME
alter table T4 rename to T4_NEW_NAME;


PL/SQL procedure successfully completed.

使用上面生成的指令碼便可完成表的批次更名需求。

3.小結
當然實現上面這個需求使用簡單的SQL也可以達到目的,這裡以實現生成表更名SQL需求為例,演示一下PL/SQL的變數傳遞。
可以在上面的基礎上編寫更加複雜的指令碼,進而可以完成很多複雜的需求。

Good luck.

secooler
09.12.04

-- The End --

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

相關文章