【发布时间】:2015-02-05 19:49:26
【问题描述】:
我正在使用一个批处理文件 my.bat,如下所示:
@echo off
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (user.txt) do (
sqlplus -s -l %%A @fetch.sql
) >> output.txt
user.txt(我需要到期日期的所有用户详细信息的列表。此列表可能有大约 40-50 行)是:
dbuser/password@database1
readuser/p@ssw0rd@database1
adminuser/Pa$$word@database2
.......
.......
.......
而 fetch.sql 是:
set pagesize 200
set linesize 200
select username, expiry_date from user_users;
exit;
我面临的问题是,脚本 my.bat 在这里捕获了 output.txt 中所有必需的详细信息以及 SQL 错误(ORA-01017:无效的用户名/密码;登录被拒绝,ORA-12154:TNS:无法解析指定的连接标识符,ORA-28000: 帐户被锁定)但每当遇到以下错误消息时它就会被挂起:
ERROR:
ORA-28001: the password has expired
Changing password for readuser
请告诉我如何忽略此错误消息并让我的脚本继续运行?
【问题讨论】:
-
@Exhausted - 问题似乎在于 SQL*Plus 在密码提示下“挂起”,而不是批处理文件处理错误;它永远不会看到问题,因为 SQL*Plus 永远不会返回。
标签: sql windows oracle batch-file