"未知的设置选项"在SQL开发人员中创建假脱机脚本

时间:2017-05-10 12:38:26

标签: sql oracle csv oracle-sqldeveloper spool

我的代码如下 -

set define on;
set spool on;
set SQLFORMAT csv;
set fpath = &folderpath;
spool @fpath/mycsvfile1.csv
select * from I_PTY;
spool off;
spool @fpath/mycsvfile2.csv
select * from I_LEG;
spool off;

我想将folderpath值传递为'C:\Documents\Spool'。 并使用此值传递给变量fpath,以便第5行传递的值等于'C:\Documents\Spool\mycsvfile1.csv'

但是,我收到的错误是: Unknown set option "fpath"

我哪里出错了?请帮助。

3 个答案:

答案 0 :(得分:0)

“set”应该是“define”

答案 1 :(得分:0)

你可以用两种方式做到这一点:

直接在假脱机命令中使用&&folderpath,例如:

set spool on;
set sqlformat csv;

spool &&folderpath/mycsvfile1.csv
select * from i_pty;
spool off;

spool &&folderpath/mycsvfile2.csv
select * from i_leg;
spool off;

或使用DEFINE分配值(您必须以与上一个答案相同的方式引用该值,因此您不会获得任何收益,真的......):

set spool on;
set sqlformat csv;
define fpath = &folderpath

spool &&fpath/mycsvfile1.csv
select * from i_pty;
spool off;

spool &&fpath/mycsvfile2.csv
select * from i_leg;
spool off;

使用双和号会阻止Oracle在每次引用相同的替换变量时提示您输入值。如果您希望再次提示您的下一个脚本或下一次运行此脚本以获取folderpath的值,那么您需要在脚本末尾包含undefine folderpath(可能还有undefine fpath)。

此外,您可能希望在脚本的顶部加入set verify off

N.B。你在你的假脱机文件名中使用@ - 那里没有位置。它仅在您运行脚本时使用。

答案 2 :(得分:0)

尝试:

spool &folderpath./mycsvfile2.csv

我的代码示例:

spool c:\temp\SQL_Details_Report_&FILE_NAME..html