SQL PLUS 查询结果保存到批处理文件中的变量以供进一步处理



我一直在批处理脚本中使用以下命令从远程数据库获取结果。

for /f  %%m in ('sqlplus -S debayan/[pwd]@[ip]:[port]/[DBInstance] @selectcommands.sql') do set theValue=%%m 
echo on 
echo "%theValue%"
PAUSE
echo off 

在打印时,值为 echo ""没有变量的值theValue应返回选择查询的值。

我的sql文件有以下简单的语句

set termout off
set echo off 
set pagesize 0
set linesize 500
set heading off
set verify off
set feedback off
set heading off
set serveroutput on
whenever sqlerror exit 16
whenever oserror exit 8
set autocommit on
SET ROWCOUNT 1
set heading off
select count(*)  from books;
commit;  
exit;

任何帮助将不胜感激。

您还可以创建一个临时文件,执行并最终删除它。试一试:

@ECHO OFF
SET MYTEMP=%TEMP%mytemp.sql
echo set pages 0; > %MYTEMP%
echo select count(*) from dual; >> %MYTEMP%
echo exit; >> %MYTEMP%
for /f %%i in ('sqlplus -s "/ as sysdba" @%MYTEMP%') do @set COUNT=%%i
echo %COUNT%
DEL %MYTEMP%

最新更新