SQL Plus SP2-0606

Mar*_*ong 2 sql oracle sqlplus

使用SQL工具,我想创建一个具有VARCHAR记录的文本文件.

使用SQL Developer我通过调用脚本成功创建了输出文本文件.但根据我的研究,SQL Developer目前不支持TRIMSPOOl命令,使我的输出具有尾随空格.

这是脚本中的代码:

    spool on
    set echo off
    set verify off
    set feedback off
    set heading off
    set trimspool on
    set termout off
    spool C:\SQLFiles\Output.txt;
    select cust_name || cust_addr as Cust_Details
    from customer_db;
    spool off;
    

我现在有SQL Plus 11g,我正在尝试运行我在SQL Developer中创建的脚本.我收到SP2-0606错误,说:

    SP2-0606: Cannot create SPOOL file "on.LST:
    

基于我做的研究,这是因为Spool命令,我没有权限访问默认文件夹??

您能否帮助我做一些我应该改变的设置,以便在SQL Plus中获得所需的结果.

Fra*_*itt 5

你必须把文件名放在双引号中 - 我猜SQLPlus使用C风格的转义序列,给反斜杠\一个特殊的含义.另外,你应该删除分号';':

所以,如果你更换

spool C:\SQLFiles\Output.txt;
Run Code Online (Sandbox Code Playgroud)

spool "C:\SQLFiles\Output.txt"
Run Code Online (Sandbox Code Playgroud)

它应该按预期工作(如果C:\ SQLFiles存在并且可以为您的帐户写入).

UPDATE

正如@LalitKumarB指出的那样,假脱机工作完全没有双引号.真正的问题在于其他地方:

spool on
Run Code Online (Sandbox Code Playgroud)

这告诉SQLPlus on在当前目录中创建一个输出文件.因此,如果您无法访问从中启动SQLPlus的目录,则会收到此错误消息.

  • 我不这么认为.SPOOL将按预期工作,不带双引号.我认为问题在于他正在使用的目录. (3认同)
  • @LalitKumarB:现货!必须从当前用户有权创建文件的文件夹启动sqlplus. (2认同)