将以下脚本保存为c:\createtable.sql。 set serveroutput on size 100000 format WRAPPED --建表test199501,test199502,...test200012 spool c:\test.sql declare d date:=to_date('1995-1-1','yyyy-mm-dd'); begin while d<to_date('2001-1-1','yyyy-mm-dd') loop dbms_output.put_line('drop table test'||to_char(d,'yyyymm')); dbms_output.put_line('/'); dbms_output.put_line(''); dbms_output.put_line('create table test'||to_char(d,'yyyymm')); dbms_output.put_line('( a VARCHAR2(10) NOT NULL,'); dbms_output.put_line(' b VARCHAR2(10) NOT NULL)'); dbms_output.put_line('/'); dbms_output.put_line(''); d:=add_months(d,1); end loop; dbms_output.put_line('/'||'*'); end; / prompt */ spool off @c:\test.sql再在sqlplus中执行@c:\createtable.sql。
这样一个一个地写很麻烦啊,能不能写个循环之类的脚本呢
谢谢,写程序实现是可以的,不过这样不是很麻烦,经常都需要建表、清空表、删除表之类的,表的字段改一下就得改程序,不像改脚本那么方便啊,所以我想用PL/SQL来实现,哪位大侠帮帮忙啊
Ctrl+C, Ctrl+V
写好语句,注意每句最后打分号然后在sqlplus下使用start或者@命令
set serveroutput on size 100000 format WRAPPED
--建表test199501,test199502,...test200012
spool c:\test.sql
declare d date:=to_date('1995-1-1','yyyy-mm-dd');
begin
while d<to_date('2001-1-1','yyyy-mm-dd') loop
dbms_output.put_line('drop table test'||to_char(d,'yyyymm'));
dbms_output.put_line('/');
dbms_output.put_line('');
dbms_output.put_line('create table test'||to_char(d,'yyyymm'));
dbms_output.put_line('( a VARCHAR2(10) NOT NULL,');
dbms_output.put_line(' b VARCHAR2(10) NOT NULL)');
dbms_output.put_line('/');
dbms_output.put_line('');
d:=add_months(d,1);
end loop;
dbms_output.put_line('/'||'*');
end;
/
prompt */
spool off
@c:\test.sql再在sqlplus中执行@c:\createtable.sql。
不好意思,刚学ORACLE,再次感谢呀