create or replace procedure EXP_SPSRC
is
v_FileHandle UTL_FILE.FILE_TYPE;
v_str STRING(10000);
v_lx T_FZJBOBJ.LX%TYPE;
BEGIN
-- Open the file /tmp/utl_file.txt for writing. If the
-- file does not exist, this will create it. If the file
-- does exist, this will overwrite it. --需要在 INI<SID>.ORA 和INI.ORA 中加入一行参数:
--UTL_FILE_DIR='d:\test' ,其中路径d:\test根据具体需要指定,
--可以加多个,可以用'*'
v_FileHandle := UTL_FILE.FOPEN('d:\FZJB', 'EXP_FZJBOBJ.txt', 'w');
--隐式游标c_name
for c_name in
(select name as myname,px,lx from T_FZJBOBJ
where name<>'EXP_SPSRC' order by px) loop
IF Trim(c_name.lx) in ('FUNCTION','PACKAGE','PACKAGE BODY','PROCEDURE') THEN
UTL_FILE.PUT_LINE(v_FileHandle, 'PROMPT/***********正在创建'||c_name.myname||'********/');
UTL_FILE.PUT_LINE(v_FileHandle, 'CREATE OR REPLACE ');
--隐式游标c_src
for c_src in (select text from user_source
where trim(name)=trim(c_name.myname) and trim(type)=trim(c_name.LX) order by line) loop
UTL_FILE.PUT_LINE(v_FileHandle, c_src.TEXT);
end loop;
UTL_FILE.PUT_LINE(v_FileHandle, '/');
UTL_FILE.PUT_LINE(v_FileHandle, 'PROMPT/***********创建完成'||c_name.myname||'********/');
--UTL_FILE.FCLOSE(v_FileHandle);
----------------------------------------------------------------------------------------
ELSE
UTL_FILE.PUT_LINE(v_FileHandle, 'PROMPT/***********正在创建'||c_name.myname||'********/');
UTL_FILE.PUT_LINE(v_FileHandle, 'CREATE OR REPLACE VIEW '||c_name.myname||' AS ');
SELECT text INTO v_str FROM USER_VIEWS where view_NAME=c_name.myname;
UTL_FILE.PUT_LINE(v_FileHandle, v_str);
UTL_FILE.PUT_LINE(v_FileHandle, '/');
UTL_FILE.PUT_LINE(v_FileHandle, 'PROMPT/***********创建完成'||c_name.myname||'********/');
END IF;
END LOOP;
UTL_FILE.FCLOSE(v_FileHandle);
exception
when others then
rollback;
RAISE;
END;
------------------------------------------------------------------------------------------
is
v_FileHandle UTL_FILE.FILE_TYPE;
v_str STRING(10000);
v_lx T_FZJBOBJ.LX%TYPE;
BEGIN
-- Open the file /tmp/utl_file.txt for writing. If the
-- file does not exist, this will create it. If the file
-- does exist, this will overwrite it. --需要在 INI<SID>.ORA 和INI.ORA 中加入一行参数:
--UTL_FILE_DIR='d:\test' ,其中路径d:\test根据具体需要指定,
--可以加多个,可以用'*'
v_FileHandle := UTL_FILE.FOPEN('d:\FZJB', 'EXP_FZJBOBJ.txt', 'w');
--隐式游标c_name
for c_name in
(select name as myname,px,lx from T_FZJBOBJ
where name<>'EXP_SPSRC' order by px) loop
IF Trim(c_name.lx) in ('FUNCTION','PACKAGE','PACKAGE BODY','PROCEDURE') THEN
UTL_FILE.PUT_LINE(v_FileHandle, 'PROMPT/***********正在创建'||c_name.myname||'********/');
UTL_FILE.PUT_LINE(v_FileHandle, 'CREATE OR REPLACE ');
--隐式游标c_src
for c_src in (select text from user_source
where trim(name)=trim(c_name.myname) and trim(type)=trim(c_name.LX) order by line) loop
UTL_FILE.PUT_LINE(v_FileHandle, c_src.TEXT);
end loop;
UTL_FILE.PUT_LINE(v_FileHandle, '/');
UTL_FILE.PUT_LINE(v_FileHandle, 'PROMPT/***********创建完成'||c_name.myname||'********/');
--UTL_FILE.FCLOSE(v_FileHandle);
----------------------------------------------------------------------------------------
ELSE
UTL_FILE.PUT_LINE(v_FileHandle, 'PROMPT/***********正在创建'||c_name.myname||'********/');
UTL_FILE.PUT_LINE(v_FileHandle, 'CREATE OR REPLACE VIEW '||c_name.myname||' AS ');
SELECT text INTO v_str FROM USER_VIEWS where view_NAME=c_name.myname;
UTL_FILE.PUT_LINE(v_FileHandle, v_str);
UTL_FILE.PUT_LINE(v_FileHandle, '/');
UTL_FILE.PUT_LINE(v_FileHandle, 'PROMPT/***********创建完成'||c_name.myname||'********/');
END IF;
END LOOP;
UTL_FILE.FCLOSE(v_FileHandle);
exception
when others then
rollback;
RAISE;
END;
------------------------------------------------------------------------------------------
解决方案 »
- sql修改语句,修改字段中的部分文本内容。
- 高手给讲讲。。 一个左连接的基础问题。。。
- 问个判断查询的问题,我是新手,不会术语
- 在客户端提交查询视图a的命令后,在数据库是怎么个具体执行过程?
- 新手求助关于group by的语法问题。
- Oracel No Data Found Error
- 请大家多多指导,都来拣分啊(权限小问题)
- 急,这样的SQL语句怎么写?我知道sqlserver但不知道oracle
- 怎样最方便更新被外部引用的主码的码值!
- 急救!为何登录控制台失败?初学者请教!!!
- 有哪位知道怎么将Informix上的数据库数据导入Oracle
- order by 引起的查询速度变慢 4 倍,如何解决
名称 空? 类型
----------------------------------------- -------- --------------- NAME VARCHAR2(30)
TYPE VARCHAR2(12)
LINE NUMBER
TEXT VARCHAR2(4000)
是不是函数和存储过程最长是4000呢?