ITPub博客

首页 > 数据库 > Oracle > 【PL/SQL】使用变量传递方法生成表更名的SQL语句

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

原创 Oracle 作者:OCMU联盟 时间:2009-12-04 22:55:31 0 删除 编辑
在某些情况下需要将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博客 ” ,链接:https://blog.itpub.net/70034820/viewspace-2994176/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
OCM联盟( Oracle Certified Master Union)是由侯圣文(ACE总监)发起的一个公益组织,旨在为每一个OCM大师提供一个可以继续展示自己才华,技术和实力的平台。

注册时间:2007-05-27

  • 博文量
    799
  • 访问量
    8406993