我想每秒重新运行sqlfile,所以我的想法是使用bat文件连接到db。 SQLPLUS连接到Oracle,运行查询,允许连接存在,运行查询...
但是SQLPLUS连接到Oracle并且不执行查询它只打开文件。
我该如何解决?
file.bat
@echo off
cls
echo exit | sqlplus username/passwor@host
: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
由于
答案 0 :(得分:0)
从密码中删除@并将hr密码更改为没有任何特殊字符
@指的是sqlplus语法中的sql文件,因此可能会引起混淆......
答案 1 :(得分:0)
只有 的东西,SQL * Plus会看到你正在回复的exit
,并将其输入它,这就是它所做的一切 - 退出。
您需要将该文件作为SQL * Plus命令行的一部分来调用:
@echo off
cls
:start
sqlplus username/passwor@host C:\X\sysdate.sql
timeout /T 1
goto start
但您还需要在exit
文件中添加sysdate.sql
,否则它会在SQL>
提示符处等待输入。
您可能还想添加set feedback off
;并且您可能还希望将-s
和-l
标志添加到SQL * Plus调用中,以禁止终端屏幕中的横幅,并且如果由于某种原因无法连接到数据库则退出:
sqlplus -s -l username/passwor@host C:\X\sysdate.sql