带有SQL输出的批处理脚本

时间:2015-02-24 06:41:33

标签: batch-file

我们尝试通过调用批处理文件中的一个SQL文件来创建一个输出文件(SQL.txt),它成功然后尝试使用FOR /从输​​出文件(SQL.txt)中的特定行分配特定值f命令变量,并基于此我们尝试将IF条件置于变量值。事情是当我们调整变量值时它显示的值并显示下面的行。因此,IF条件不起作用。

详细查看我的查询。

1) call sqlplus username/pwd@schema @D:\SQL\REORG_DATA.sql >D:\SQL\SQL_OUTPUT\output.txt
2)  for /f "skip=14 delims=5" %%n in (D:\SQL\SQL_OUTPUT\output.txt) do  echo %%n 
3) if %%n EQU 0 goto ErrExit

我的输出文件总是在下面输出文件信息

我们希望将0(零)值作为变量值(%% n)捕获到IF条件中,它总是第15行和6个dlims

1
2 SQL*Plus: Release 11.2.0.1.0 Production on Mon Feb 23 14:17:56 2015
3
4 Copyright (c) 1982, 2010, Oracle.  All rights reserved.
5
6
7 Connected to:
8 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
9 With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
10 Data Mining and Real Application Testing options
11
12
13  COUNT(*)
14 ----------
15      0
16
17 Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
18 With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
19 Data Mining and Real Application Testing options
20 

请帮助。

此致 纳格

1 个答案:

答案 0 :(得分:0)

set "count="
for /f "skip=14" %%n in (
    D:\SQL\SQL_OUTPUT\output.txt
) do if not defined count set "count=%%n"

echo %count%

delims定义了哪些字符用作分隔符。默认配置是空格和制表符,因此不需要包含它。

您需要检索的行中的元素由tokens子句控制,但默认配置是检索第一个,这是您需要的,因此,也不需要。< / p>

现在,您跳过14行并检索该行中的第一个元素。但您只需要检索第一个已处理行的数据。但是对其余行执行do子句,重新分配变量。您可以包含goto离开循环或测试变量是否已赋值。

已修改以使用goto命令

包含示例
    set "count="
    for /f "skip=14" %%n in (D:\SQL\SQL_OUTPUT\output.txt) do set "count=%%n" & goto :done
:done
    echo %count%