谢谢!
访问数据库应该不是问题,数据库链路已经配好了,可以直接使用。
我也是这样想的,把源代码读出来,拼在一起,然后呢?
A、我能否直接执行这个串去在另一个数据库上生成存储过程?
B、还是必须先存成一个脚本文件(这是脚本中生成的脚本文件),然后在脚本中调用SQL PLUS去执行前面生成的脚本?,怎么调用?
上面两个办法都可以达到目的,具体怎么实现呢?
访问数据库应该不是问题,数据库链路已经配好了,可以直接使用。
我也是这样想的,把源代码读出来,拼在一起,然后呢?
A、我能否直接执行这个串去在另一个数据库上生成存储过程?
B、还是必须先存成一个脚本文件(这是脚本中生成的脚本文件),然后在脚本中调用SQL PLUS去执行前面生成的脚本?,怎么调用?
上面两个办法都可以达到目的,具体怎么实现呢?
可以将脚本内容直接贴入sqlplus,运行后即以编译好,你也可以运行alter procedure prname compile重编译;
也可已在sqlplus下 输入 @ ..\..\ xx.sql;运行你的脚本文件,..\..\ xx.sql为文件全路经名。
www.quest.com
set feedback off
set heading off
set termout off
set linesize 1000
set trimspool on
set verify off
spool &1..sql
prompt set define off
select decode( type||'-'||to_char(line,'fm99999'),
'PACKAGE BODY-1', '/'||chr(10),
null) ||
decode(line,1,'create or replace ', '' ) ||
text text
from user_source
where name = upper('&&1')
order by type, line;
prompt /
prompt set define on
spool off
set feedback on
set heading on
set termout on
set linesize 100*********************getallcode.sql**************************
set termout off
set heading off
set feedback off
set linesize 50
spool xtmpx.sql
select '@getcode ' || object_name
from user_objects
where object_type in ( 'PROCEDURE', 'FUNCTION', 'PACKAGE' )
/
spool off
spool getallcode_INSTALL
select '@' || object_name
from user_objects
where object_type in ( 'PROCEDURE', 'FUNCTION', 'PACKAGE' )
/
spool off
set heading on
set feedback on
set linesize 130
set termout on
@xtmpx.sql
你的办法是不是把所有的东西都导入导出了,我只要更新过程和函数就可以了,其它的东西不能改!
先修改init.ora
例如:
utl_file_dir=/usr //路径为 oracle所在的盘:/usr
此过程将用户TEMP的P1过程的代码保存到ORACLE安装盘下/USR/TEXT.TXT中
create or replace procedure TEST
is
file_handle utl_file.file_type;
STOR_TEXT VARCHAR2(4000);
N NUMBER;
I NUMBER;
begin
I:=1;
SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE OWNER='TEMP' AND NAME='P1';
file_handle:=utl_file.fopen('/usr','test.txt','a');
WHILE I<=N LOOP
SELECT TEXT INTO STOR_TEXT FROM ALL_SOURCE WHERE OWNER='TEMP' AND NAME='P1' AND LINE= I;
I:=I+1;
utl_file.put_line(file_handle,stor_text);
END LOOP;
utl_file.fclose(file_handle);
commit;
end TEST;
/