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中产生所需的结果。
你必须把文件名用双引号 - 我猜SQLPlus使用C风格的转义序列,给反斜杠\
一个特殊的含义。此外,您应该删除分号 ';':
所以,如果你有
spool "C:\SQLFiles\Output.txt"
更换
spool C:\SQLFiles\Output.txt;
应该按预期工作(如C:\ SQLFiles存在且可写的你的帐户)。
UPDATE
由于@LalitKumarB指出,阀芯工作完全正常没有双引号。真正的问题是在别处:
spool on
这告诉的SQLPlus在当前目录下创建一个输出文件on
。因此,如果您无法访问从SQLPlus启动的目录,则会收到此错误消息。
我不这么认为。如果没有双引号,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;
和阀芯文件看起来像:
所以它没有任何双引号。我想你需要真正看看你用来后台打印的目录。
由于权限问题,您正在收到此错误。以管理员模式打开命令提示符窗口,或将文件保存到不需要管理员权限的位置。
嗨,分享我的解决方案。我只是删除'spool on'这一行。 – 2015-03-20 03:08:52