Bet*_*033 4 sql oracle oracle10g
好的,所以我是oracle的完整新手.现在已经不在了;
我想你可以理解我下面要做的事情.对于找到的每个存储过程,将DDL输出到带有其名称的文件名.
问题是我无法弄清楚如何让假脱机目标获取由光标设置的FileName的值.
DECLARE
objName varchar2(50);
FileName varchar2(50);
cursor curProcs is
select OBJECT_NAME into objName
FROM ALL_PROCEDURES WHERE OWNER = 'AMS'
ORDER BY OBJECT_NAME; -- get all procs in db
BEGIN
open curProcs;
if curProcs%ISOPEN THEN
LOOP
FETCH curProcs into objName;
EXIT WHEN curProcs%NOTFOUND;
FileName := 'C:\ ' || objName || '.PRC.SQL';
spool FileName; --BREAKS
DBMS_METADATA.GET_DDL('PROCEDURE',objName);
spool off;
END LOOP;
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
关于我哪里出错的任何想法?如果有人有这方面的例子,我会非常感激.
我觉得我必须在它周围跳舞,因为如果我最初创建一个列
spool &ColName
Run Code Online (Sandbox Code Playgroud)
我得到一个结果,我似乎无法动态地改变那个&colname
谢谢你的帮助.
小智 8
我找到了一个更好的解决方案,而无需声明/ begin/end代码块或查询语句.
带有日期和时间的示例假脱机文件名可以通过以下方式实现:
sql> column dt new_value _dt
sql> select to_char(sysdate,'ddMONyyyy_hh24mi') dt from dual;
sql> spool &_dt
我的文件名:
27JUN2011_1727.lst
如果需要,您甚至可以指定文件扩展名(例如.txt).只需创建另一个变量.
来源:http: //oracle.ittoolbox.com/groups/technical-functional/oracle-apps-l/variable-file-name-with-spool-1508529