有没有一种方法,我不假脱机文件的基础上的标准?下面的代码将SPOOL一个空文件,这是没有用的。
VARIABLE :SPOOLYN AS VARCHAR2(1);
DECLARE
VARSPOOL CHAR ( 1 ) := '&SpoolYN';
BEGIN
:SPOOLYN := VARSPOOL;
END;
** Some sort of IF condition based on variable :SPOOLYN **
SPOOL "File.txt";
-- Including all Data to be SPOOLed and SPOOL OFF;
** End of IF condition **
1条答案
按热度按时间de90aj5v1#
由于
SPOOL
是一个SQLPlus命令,因此这将是一个SQLPlus问题,而不是PL/SQL。一般来说,这没什么大不了的,人们只是什么也不处理,因为大多数shell脚本都是基于行的,所以没有行就不起作用。或者他们删除文件,或者简单地跳过在shell脚本中进一步做的任何事情。SQLPlus本身没有条件逻辑。但是,它确实允许动态替换,并且可以用作有条件的解决方案:
spool_data.sql:
donothing.sql:[空-这只是为了避免在输入N时收到错误消息]
主脚本:
在提示符处提供
Y
,它将调用spool_data.sql
脚本,该脚本将假脱机file.txt
。提供N
,它调用空的donothing.sql
脚本,什么也不做。但这种尴尬的变通方法可能不值得。在我看来,空文件更容易使用。我们应该接受SQLPlus是一个命令行接口,而不是一种编程语言,并将我们的条件逻辑保留在PL/SQL或shell中。