2011-03-24 64 views
1

我正在做我的cshell脚本sqlplus $ORA_UID/$ORA_PSWD @${SQL}test.sql ${DATA}${ext1}这是试图从test.sql脚本得到输出..在我的SQL脚本我倾倒输出到spool &1 ..但是当我运行我的脚本我的文件是空的我我没有得到来自任何数据库..谁能告诉通常它是什么错这个SQL脚本cshell

+0

这看起来OK; SQL是否产生任何输出到屏幕上或手动运行,以及在'.sql'文件中有什么(如果有)'SET'调用?显示整个SQL可能会有帮助。 – 2011-03-24 17:25:02

+0

当我手动运行吗?是的,SQL是产生输出..这里是SQL脚本:SET LINESIZE 1000 SET LONG 100000 安放反馈OFF SET ECHO OFF SET HEADING ON SET SPACE 1个 设置冲洗OFF SET TRIMSPOOL ON SET NUMFORMAT 9999999999.90 滑阀芯1 选择 .............. 从 .............. 其中 ... .......... SPOOL OFF 退出; – jack 2011-03-24 17:37:29

+1

您应该看到在文件中对屏幕以及结果('SET TERMOUT off'避免以后)。你有一个终端';'或'/'实际执行'where'条款的结束和阀芯'之间off'查询,或只是一个空白行?很难说没有格式化 - 也许它可能会在问题中出现。 – 2011-03-24 17:48:00

回答

1

不是一个好主意,有你的用户ID,并在PROCESSLIST显示的密码,现在正在发生。大多数情况下,当sql脚本不能产生预期的输出时,这是因为SQL标记的末尾丢失了。默认SQL的结束是';'读取SQL标记的结尾实际上启动了SQL语句。 第一次尝试与反馈的脚本,并在spoolfile信箱检查错误消息。 假脱机文件位置是否正常?

sqlplus /nolog <<eof 
connect $ORA_UID/$ORA_PSWD 
@${SQL}test.sql ${DATA}${ext1} 
eof 

这种结构防止了在PROCESSLIST的凭据的显示。

在sqlscript可能是

select * from dual; 

select * from dual 
/

,但每一个SQL语句都必须有SQL标记的结束。