2017-11-29 16 views
1

일괄 구조를 모르거나이 질문이 trivals 인 경우 저를 용서해주십시오. 내 쿼리가 있고 sqlplus 명령을 사용하여 스크립트를 실행하려고합니다. 그 후 sqlplus 명령을 사용하여 결과를 얻으면 변수에 레코드를 저장하고 마지막 단계로 mailto 명령으로 메일을 만들어 내 연락처로 보냅니다.sqlplus의 결과를 가져 와서 스크립트 .bat의 변수에 넣으십시오.

내 스크립트는 다음과 같습니다

ScriptFather.bat

@echo off 
setlocal EnableDelayedExpansion 
SET i=0 
FOR /f %%b IN ('C:\Users\samuele.nava\Desktop\idlock.bat') DO (set var!i!=%%b) 
echo var0: !var0! 
pause 

ScriptSon.bat

sqlplus user/[email protected]:port/sid @C:\...\Query.sql 

Query.sql

select id_richiesta,id_ric_tipo,id_lock,ts_ins,ts_ultimo_aggiornamento,codice_op_don,codice_op_rec,id_richiesta_stati,data_cut_over_richiesta,data_cut_over_effettiva from richieste where id_lock is not null and ts_ultimo_aggiornamento=(sysdate) order by ts_ultimo_aggiornamento desc; 
는 이 문제는 죄송하다

모든 경우 공통적이지만 나는 돈이 없다. 이 질문을 해결하는 방법을 알지 못합니다.

시선과 로큰롤

+0

for 명령은 변수 '%% m'을 (를) 사용 중이지만 변수'%% b '을 (를) 지정하려고합니다. 또한 지연된 확장을'var! i!'변수와 함께 사용하려하지만'SETLOCAL' 명령으로 지연된 확장을 활성화하지 않았습니다. – Squashman

+0

StackOverFlow는 일반 Q & A 포럼과 조금 다른 방식으로 작동합니다. 코드 편집 내용을 주석에 넣지 마십시오. 업데이트 된 코드로 질문을 편집하고 주석을 삭제하십시오. – Squashman

+0

@Squashman ty ... 나는 내 질문에 대한 코드를 업데이트하고있다. 고마워요. – Samuele

답변

0

나는 시장 도전은 SQLPLUS 출력 포맷을 생각합니다. 이 문서 Formatting SQL*Plus Reports

당신은 내가 당신이 http://www.virtualobjectives.com.au/utilitiesprogs/sendsmtp.htm

sqlplus -s user/[email protected]:port/sid @Query.sql > %TEMP%\Query_output.txt 

SendSMTP.exe /HOST mailhost /FROM "[email protected]" /TO "[email protected]" /SUBJECT "Notification from Database" /BODYFILE %TEMP%\Query_output.txt 

참고 -s 스위치에서 다운로드 할 수 SendSMTP를 사용하여 예를 들어,이 파일에 결과를 스풀 및 우편으로 제안 할 것 이런 짓을하면 한 번 봐 가지고있는 sqlplus 배너를 표시하지 않습니다.

+0

실행되었지만 만족스럽지 않습니다. 레코드 출력에 "no rows selected"가있는 경우 행 입력을 제어하고 싶습니다. 내 스크립트는 전자 메일을 보내서는 안됩니다. 당신의 솔루션으로 어떻게이 일을 제어 할 수 있습니까? ty a lot – Samuele

+0

내 제안은 http://gnuwin32.sourceforge.net/에서 gnuwin32를 다운로드하는 것입니다. 그러면 결과가 있는지 여부를 알아 내기 위해''grep ''을 선택하여 행을 사용할 수 있습니다. 또는 전체 스크립트를 ** VB Script ** (또는 PowerShell 요즘)로 변경하면 더 많은 기능을 사용할 수 있습니다. –