我一直在批处理脚本中使用以下命令从远程数据库获取结果。
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%