2012-03-28 33 views
0

我曾在我的.bat文件中创建了以下命令:DOS BAT命令:验证SQL PLUS SQL查询

@echo select count(*) from table where column1 = 'abc'; | sqlplus username/[email protected] 

根据返回结果,我需要不同的SQL。我该怎么做?

例如如果返回的结果集是0,我需要它退出.bat文件。如果结果集不是0(1或> 1),那么我将执行另一个SQL语句。

请帮助。

+0

你应该学会PLSQL以及SQL * PLUS脚本,并把你的逻辑在一个地方。正如您在问题中所描述的,不需要上下文切换(批量到Oracle以批量到Oracle)。 – dbenham 2012-03-28 11:41:18

回答

0

这取决于输出是如何提供,但像下面应该工作:

@echo off 
set tempfile=%temp%\%random%.log 
echo select count(*) from table where column1 = 'abc'; | sqlplus username/[email protected] > "%tempfile%" 
findstr /c:"INVALID" "%tempfile%" >nul 2>&1 && echo No resultset || echo some other statement | sqlplus username/[email protected] 
+0

谢谢!我正试图理解你的陈述。 我怎么能这样做,如果返回的结果集是0,它会提示用户“没有结果集”退出之前? – cooldude 2012-03-28 09:07:46

+0

也许我可以在.BAT文件中创建不同的部分? 如果结果集为0,则转到:section1。如果结果集是<> 0,则转到:section2。我怎样才能做到这一点? – cooldude 2012-03-28 09:10:19

+0

因此,我修改了我的SQL查询以返回一个更独特的值,即VALID或INVALID。 我也是用 FINDSTR/C: “有效” scriptlog.txt> NUL 2>&1个 REM串中发现 如果没有发现错误级别0转到有效 REM字符串 如果ERRORLEVEL 1 goto语句无效 但我无法正确重定向语句。我做得对吗? – cooldude 2012-03-28 10:44:21