批处理文件执行问题(CALL 不起作用)
Batch file execution issue (CALL does NOT work)
几天来我一直在疯狂研究为什么我的批处理文件不能正常执行。当我在命令提示符下复制和粘贴代码时,它工作正常,但执行批处理文件只运行一行然后停止。
这是批处理文件中的代码:
sqlplus -s user/password
set colsep ' '
set linesize 32000
set echo off
set feedback off
set trimspool on
set newpage 0
set pagesize 0
spool c:\temp\suggmoves.txt
select * from suggestive_moves;
spool off
quit
exit
我找到的唯一解决方案是使用 CALL,但我没有调用另一个批处理文件,而且无论如何都不起作用。
这不是批处理文件。那是一个 SQLPlus 脚本。
它在命令行中运行的原因是因为 SQLPlus 向您展示了它自己的命令提示符。从 set colsep
到 quit
的所有内容都需要输入到 SQLPlus 的提示符中。您编写的批处理文件正在将它们输入 Windows 命令提示符。
做你想做的事,将 SQLPlus 命令放入一个单独的文件,并使用 SQLPlus 的 @ 选项:
sqlplus -s user/password @sqlscript.sql
您必须重定向输入以通过 sqlplus 执行您的命令,而不是它被解释为 shell 命令并且不要在 sqlplus 中执行任何操作。我认为 sqlplus 等待任何停止脚本执行的输入,直到 sqlplus 是 stopped/killed/exited.
要在脚本中直接输入命令作为 sqlplus 命令,您可以使用 <<
输入重定向,直到找到一个词(在此修改后的代码中它是 END):
sqlplus -s user/password <<END
set colsep ' '
set linesize 32000
set echo off
set feedback off
set trimspool on
set newpage 0
set pagesize 0
spool c:\temp\suggmoves.txt
select * from suggestive_moves;
spool off
quit
exit
END
END 词必须在行首(无缩进)。
Sqlplus 有批处理模式,使用 sql 命令脚本作为输入,而不是使用直接命令输入重定向。
几天来我一直在疯狂研究为什么我的批处理文件不能正常执行。当我在命令提示符下复制和粘贴代码时,它工作正常,但执行批处理文件只运行一行然后停止。
这是批处理文件中的代码:
sqlplus -s user/password
set colsep ' '
set linesize 32000
set echo off
set feedback off
set trimspool on
set newpage 0
set pagesize 0
spool c:\temp\suggmoves.txt
select * from suggestive_moves;
spool off
quit
exit
我找到的唯一解决方案是使用 CALL,但我没有调用另一个批处理文件,而且无论如何都不起作用。
这不是批处理文件。那是一个 SQLPlus 脚本。
它在命令行中运行的原因是因为 SQLPlus 向您展示了它自己的命令提示符。从 set colsep
到 quit
的所有内容都需要输入到 SQLPlus 的提示符中。您编写的批处理文件正在将它们输入 Windows 命令提示符。
做你想做的事,将 SQLPlus 命令放入一个单独的文件,并使用 SQLPlus 的 @ 选项:
sqlplus -s user/password @sqlscript.sql
您必须重定向输入以通过 sqlplus 执行您的命令,而不是它被解释为 shell 命令并且不要在 sqlplus 中执行任何操作。我认为 sqlplus 等待任何停止脚本执行的输入,直到 sqlplus 是 stopped/killed/exited.
要在脚本中直接输入命令作为 sqlplus 命令,您可以使用 <<
输入重定向,直到找到一个词(在此修改后的代码中它是 END):
sqlplus -s user/password <<END
set colsep ' '
set linesize 32000
set echo off
set feedback off
set trimspool on
set newpage 0
set pagesize 0
spool c:\temp\suggmoves.txt
select * from suggestive_moves;
spool off
quit
exit
END
END 词必须在行首(无缩进)。
Sqlplus 有批处理模式,使用 sql 命令脚本作为输入,而不是使用直接命令输入重定向。