在某些情况下需要将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 --
这里我以一个通过变量传递的方法生成修改表名的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/