重新运行sql文件goto
我想每秒重新运行一次sqlfile,所以我的想法是用bat文件连接到db。 SQLPLUS连接到Oracle,运行查询,允许连接存在,运行查询...重新运行sql文件goto
但SQLPLUS连接到Oracle,并不执行查询,它只能打开文件。
我该如何解决
file.bat
@echo off
cls
echo exit | sqlplus username/[email protected]
:start
@C:\X\sysdate.sql
timeout /T 1
goto start
file.sql
spool C:\X\test.txt append
set serveroutput on
declare
dat ...;
begin
select to_char(sysdate,'dd.mm.yyyy hh24:mi:ss')
into dat
from dual;
dbms_output.put_line('Some german words like Bratwurst und Sauerkraut'||dat);
end;
/
spool off
感谢
从您的密码删除@和更改小时密码没有任何特殊字符
@指的是在你的sqlplus语法的sql文件,因此这可能是令人困惑的问题......
抱歉,我在我的连接错误, sqlplus的用户名/密码@主机,这是现在 我的密码没有特殊字符 –
@sandman - 的'@ host' ,或原始的'hr/hr @ pwd'版本中的'@ pwd',是连接字符串而不是SQL文件 - 在'@'之前需要一个空格来表示要运行的文件。 –
是的,一旦@语法错误被OP清除了,我打算在最后提到退出等。 – sandman
的唯一事情的SQL * Plus是看到它的exit
你呼应和管道进去,所以这是所有它 - 退出。
您需要将文件调用的SQL * Plus命令行的一部分:
@echo off
cls
:start
sqlplus username/[email protected] C:\X\sysdate.sql
timeout /T 1
goto start
但你还需要一个exit
添加到您的sysdate.sql
文件,也将在SQL>
挂起等待输入提示。
您可能还想添加set feedback off
;你可能希望将-s
和-l
标志添加到SQL * Plus的调用也从终端屏幕抑制伟大旗帜,以退出,如果它不能连接到数据库由于某些原因:
sqlplus -s -l username/[email protected] C:\X\sysdate.sql
谢谢,现在我有一个工作“循环”,但现在它连接到数据库,做查询,断开连接并重复。 并且它总是需要5秒才能连接下一个。 但我只需要一个连接到db:connection,重新运行查询,直到我退出它。 而当db连接丢失时,bat.file必须继续运行。 –
如果你想继续,如果连接丢失 - 大概SQL \ * Plus将不得不退出然后 - 你需要像这样的批处理循环来重新启动它。但是,最重要的是,您想要在SQL \ * Plus会话中永久循环,每秒重复一次相同的查询? –
我的帐单在一夜之间运行,并且此结算与数据库中的数据相关。不幸的是,有时候计费会在一夜之间中断。所以我想检查一下数据库连接,如果这整个晚上都可以不间断的话。 –
后文件操作,Oracle断开 –
你收到的输出是什么。 –
日,月,年,并在24小时的时间 –