2017-08-17 6 views
0

私はsqlファイルを毎秒再実行したいので、私の考えはbatファイルでdbに接続することでした。 SQLPLUSはOracleに接続し、問合せを実行し、接続を許可し、問合せを実行します。gotoでsqlファイルを再実行

SQLPLUSはOracleに接続されており、問合せを実行しません。

どのように私はそれを修正することができ

file.sql

@echo off 
cls 
echo exit | sqlplus username/[email protected] 
:start 
@C:\X\sysdate.sql 
timeout /T 1 
goto start 

FILE.BAT

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

後:あなたはSQL *に-s-lフラグを追加プラス端末画面からバナーを抑制し、それが何らかの理由でDBに接続できない場合は終了し、あまりにも呼び出すこともできますファイルはopend、Oracleは切断されました –

+0

受け取った出力は何ですか? –

+0

日、月、年および24時間の時間 –

答えて

0

パスワードから@を除去するために時間のパスワードを変更します特殊文字はありません

@それは混乱の問題かもしれませんので、ごSQLPLUS構文でSQLファイルを参照...

+0

私は、これが今の私のパスワードは特殊文字に –

+0

@sandmanがなかった ある sqlplusをユーザー名/パスワード@ホスト私の接続に誤りがありました申し訳ありません - '@ host' 、または '@/pwd'の元の' hr/hr @ pwd'バージョンの '@pwd'は、SQLファイルではない接続文字列です。ファイルを実行するには' @ 'の前にスペースが必要です。 –

+0

はい、@構文エラーがOPによってクリアされたら、私は終わりなどの出口を言及するつもりだった – sandman

0

のみ事SQL * Plusはexitあなたがそれにエコーや配管している、のようにそれを見ていますそれだけで終わります。

あなたはSQL * Plusコマンドラインの一部としてファイルを呼び出す必要があります:

@echo off 
cls 
:start 
sqlplus username/[email protected] C:\X\sysdate.sql 
timeout /T 1 
goto start 

しかし、あなたはまた、あなたの sysdate.sqlファイルに exitを追加する必要がある、またはそれは SQL>で入力待ちハングしますプロンプト。

set feedback offを追加することもできます。

sqlplus -s -l username/[email protected] C:\X\sysdate.sql 
+0

ありがとう、今私は "ループ"が動作しているが、今それはDBに接続して、クエリを行う切断され、繰り返しist。 そして、次の接続には常に5秒かかります。 しかし、私はdb:接続への接続を1つだけ必要とし、終了するまでクエリを再実行します。 db接続が失われた場合、bat.fileは継続して実行する必要があります。 –

+0

接続が失われても続行したい場合は、おそらくSQL \ * Plusを終了する必要があります。このようなバッチループが必要です。しかし、その上に、あなたはSQL * Plusセッションの中で永遠にループしたい、毎秒同じクエリを繰り返したいのですか? –

+0

私は一晩中請求を実行しており、この請求はデータベースからのデータと関連しています。残念なことに、請求が夜間に中断されることがあります。だから私はDB接続をチェックしたいと思います。 –

関連する問題