【PL/SQL】使用变量传递方法生成表更名的SQL语句

在某些情况下需要将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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/519536/viewspace-621700/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值