SQL Plus SP2-0606

问题描述:

使用SQL工具,我想创建一个具有VARCHAR记录的文本文件。SQL Plus SP2-0606

使用SQL Developer我已通过调用脚本成功创建了输出文本文件。但是基于我的研究,TRIMSPOOl命令目前不被SQL Developer支持,从而使我的输出具有尾随空格。

这里是脚本代码:

 
    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加11g中,我试图运行我在SQL Developer中创建的脚本。我得到一个SP2-0606错误,说:

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

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

你可以帮助请问我应该改变什么设置来在SQL Plus中产生所需的结果。

+0

嗨,分享我的解决方案。我只是删除'spool on'这一行。 – 2015-03-20 03:08:52

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

所以,如果你有

spool "C:\SQLFiles\Output.txt" 

更换

spool C:\SQLFiles\Output.txt; 

应该按预期工作(如C:\ SQLFiles存在且可写的你的帐户)。

UPDATE

由于@LalitKumarB指出,阀芯工作完全正常没有双引号。真正的问题是在别处:

spool on 

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

+0

我不这么认为。如果没有双引号,SPOOL将按预期工作。我认为问题在于他正在使用的目录。 – 2015-03-19 10:51:43

从文档,

SP2-0606无法创建文件文件名

原因:STORE命令无法创建指定的文件。可能没有足够的磁盘空间,打开的文件太多,或者输出目录的只读保护程序不可用。

操作:检查是否有足够的磁盘空间,并且目录上的保护允许创建文件。

我的测试案例显示spool命令没有任何问题。我认为根本不需要任何引号。

例如,

客户:12C

操作系统:Windows 7

SQL> spool D:\text.txt 
SQL> select ename||to_char(empno) from emp; 

ENAME||TO_CHAR(EMPNO) 
-------------------------------------------------- 
SMITH7369 
ALLEN7499 
WARD7521 
JONES7566 
MARTIN7654 
BLAKE7698 
CLARK7782 
SCOTT7788 
KING7839 
TURNER7844 
ADAMS7876 

ENAME||TO_CHAR(EMPNO) 
-------------------------------------------------- 
JAMES7900 
FORD7902 
MILLER7934 

14 rows selected. 

SQL> spool off; 

和阀芯文件看起来像:

enter image description here

所以它没有任何双引号。我想你需要真正看看你用来后台打印的目录。

由于权限问题,您正在收到此错误。以管理员模式打开命令提示符窗口,或将文件保存到不需要管理员权限的位置。