ORACLE如何使用带有动态阀芯位置的阀芯

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