• 締切済み

PL/SQLの結果が違う

乱筆で申し訳ありませんが、困っています。 Windowsタスクマネジャーで時間指定で起動すると PL/SQLの結果がn倍の結果になってしまいます。 どなたか原因の糸口になるような情報を教えてください。 現象:  ・単体(SQLPlusなど)で実行した場合は起こりません。  ・タスクを即実行した場合も起こりません。  ・タスクマネージャーから時間指定で起動した時のみ起こります。    PL/SQLの内容:  TBLAのデータを条件で合計し結果を、TBLBへ出力するものです。 タスク登録:  batファイルを作成し、PL/SQLを起動しています

みんなの回答

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

再現性があるのであれば、PL/SQLで実行するSQL文をもっと分かりやすいものに変えてテスト実行してみては。 「条件で合計し結果を出力」では、結果からその過程を知ることができませんから、単純なselectに変更して内容を見てみてはいかがでしょう。

takes711
質問者

お礼

ありがとうございます。 その後、いろいろなパターンで試してみたところ、 データの件数が多いときに起こっていました。 データ件数が少ない場合は、スケジュール起動してもOKでした。

関連するQ&A

  • pl/sqlでのautotraceについて

    PL/SQLの実行計画を取得したいのですが、autotraceを指定しても その結果が表示されません。結果表示のためにはsqlplusと違った 考慮が必要なのでしょうか。oracleに詳しい方、教えてください。 よろしくお願い致します。

  • PL/SQLをWindowsのBATファイルで実行するには

    いつも参考にさせていただいております。 表題のとおり、WindowsServer2003上でBATファイルを起動したいのですが、うまくいきません。 BATファイルの中身 sqlplus USER_A/USER_A @DB_A @SQLPAT sqlplus USER_B/USER_B @DB_B @SQLPAT SQLPATファイルは、大体以下の感じで、2つのスキーマーで同じPL/SQLを実行します。 Declare ・ カーソルループ 更新 ・ ・ END; タスクにBATファイルを登録し実行すると 最初のPL/SQLは実行されますが、次のUSER_Bが実行されません。 どなたか詳しい方ご教授をお願いできませんでしょうか? オラクルのVerは9iです。よろしくお願い致します。

  • SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書

    SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書いています。 イメージ sqlplus scott/tiger << EOF   declare     aaa number;   begin     -- *1     select col1 into aaa from test1;   end;   /   -- *2   define a=1   define b=1   @test.sql EOF ここで*1にて例えば複数行が返ってくるなどのエラーが 発生した場合、*2以降のSQLを実行せずにSQL*Plusから抜けたいのですが どのようにすればよいかわかりますでしょうか。 whenever sqlerror exit 255 などはPL/SQL内の論理エラーはハンドリングしてくれないようです。 よろしくお願いします。 それかdefineや@マーク指定によるsqlファイルの取り込みを PL/SQLの中で実行できる方法を教えていただく方法でも 当方が実施したいことはできるのでそれでもかまいません。

  • PL/SQL カーソルのFROM句にカーソル

    もしご存知の方がいればお教えください。 ORACLE PL/SQLで CURSOR cur_a AS SELECT a FROM TBLA とカーソルを宣言し そのカーソルを他のカーソルで 使用することは可能でしょうか? 以下のような感じで CURSOR cur_B AS SELECT b FROM TBLB,cur_a ご存知の方が居たら どのようなSELECT文を 書けばよいかお教えください よろしくお願いいたします

  • テーブルを結合するとき

    MySQLのSQL文です。 TblAのID、Nmがあり、TblBにID、Adrsがあるとします。 次の2つのSQL文の結果は同じになります。 そもそもこの2つの書き方には何か違う意味があるのでしょうか。 CREATE View TblC1 as SELECT TblA.ID, TblA.Nm, TblB.Adrs FROM TblA INNER JOIN TblB ON TblA.ID = TblB.ID; CREATE View TblC2 as SELECT TblA.ID, TblA.Nm, TblB.Adrs FROM TblA ,TblB where TblA.ID = TblB.ID; また、TblAにはありTblBには含まれないレコードを出すときは CREATE View TblC3 as SELECT TblA.ID, TblA.Nm, TblB.Adrs FROM TblA LEFT JOIN TblB ON TblA.ID = TblB.ID; 逆にTblBにありTblAには含まれないレコードを出すときは CREATE View TblC4 as SELECT TblA.ID, TblA.Nm, TblB.Adrs FROM TblA RIGHT JOIN TblB ON TblA.ID = TblB.ID; としています。 これをwhereを使った書き方ではできないのでしょうか。

    • ベストアンサー
    • MySQL
  • shからPL/SQLブロックを実行する方法

    Solaris上でshスクリプト中からPL/SQLを記述したファイルを呼び出して、Oracleのテーブルに対して操作したいのですが、 test.shファイル #/bin/sh sqlplus userid/password@ddzk test.sqlファイル DECLARE … BEGIN INSERT INTO table VALUES( …  ) END; / コマンドラインから $./test.sh を実行すると、 ./test.sh: sqlplus: 見つかりません。 と表示されます。 どなたかshスクリプトからPL/SQLで記述したファイルを実行する 方法をご存知の方、ご教示願います。

  • bashで実行したsqlの実行結果の戻り値

    bashで実行したsqlの実行結果の戻り値 bashを使用して、DB間の通信の監視を行なおうとしております shellの内容はサーバAでoracleに接続(sqlplus)して、 そこからサーバBへ接続(connect)するだけの記述です。 この時、 MSG=`sqlplus ID/PASSWORD@SID @connect.sql` echo XXX で、@connect.sqlの実行結果を戻り値としてechoさせたいのですが、 この場合、どのように指定すればよいのでしょうか? (上記の状態でshellを実行すると、connect側ではなく、 sqlplusの戻り値が戻ってきてしまいます) ※conenct.sql connect 接続先DBのID/PASSWORD@接続先 exit だけのsqlで、こちらの接続確認は取れております

  • PL/SQLの戻り値について

    現在正規化されていないテーブルを、PL/SQLを使って集計したいと考えています。以下のような構造にしたいと思うのですが、可能でしょうか? 1.正規化されていないテーブルのデータを正規化されたテーブル(テンポラリーテーブル)へ転記 2.テンポラリーテーブルテーブルのデータを集計(GROUP BYなどで) 3.2の結果を戻す 上記1~3までをすべてPL/SQLで実行し、その結果を取得したいです。 なお取得する結果としては、  キー,集計値1,集計値2    ・    ・    ・ というような構造で、複数レコードあります。 つまり、通常のSELECT文で返ってくる値を、PL/SQLで戻したいと考えています。

  • PLSQL内で実行したSQLの結果をVBに渡したい。

    VBからas sysdba でオラクルに接続できないそうなので、 VBからSQLPLUSを起動し、PLSQLを実行させることで代行しようと考えています。 そのPLSQL内で実行したSQLの結果をVB側に渡したいのですが、 何かよい方法はないでしょうか? よろしくお願い致します。

  • SQL実行結果取得

    バッチファイルにて、 sqlplusコマンドにより*.sqlファイルを実行し、 SQL文を発行していますが、 実行結果(処理件数)をコマンドプロンプト上 に表示したいのですが、どなたか。手法をご存知では ないでしょうか?