[前の記事]« 一意の(重複しない)変数の動的な生成・取得方法
[次の記事]バッチ起動時に黒い画面が出てくるのを止めたい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「SQLとコマンド・プロンプト」索引へ

NT系:複数のSQLを実行するには

597) 複数のSQLを実行するには。 ケイ 2003/09/09(火) 11:20


はじめまして、ケイです。

過去ログで探したのですが、どうもよくわからないので質問させていただきます。

フォルダの中にある複数のストアドプログラムファイルを一度に流したいのですが、以下のようにした場合、フォルダ内の一番最初のストアドプログラムしか実行されません。
フォルダの中をLoopするにはどうしたらよいのでしょうか?

よろしくお願いします。

パッケージがあるディレクトリ
Set a=@D:\SP\
ヘッダーファイル
for %%f in (*.h) do sqlplus UserName/Password@接続文字列 %a%%%f
本体ファイル
for %%f in (*.pkg) do sqlplus UserName/Password@接続文字列 %a%%%f


598) Re:複数のSQLを実行するには。 ふぇむ 2003/09/09(火) 11:56


>フォルダの中にある複数のストアドプログラムファイルを一度に流したいのですが、以下のようにした場合、フォルダ内の一番最初のストアドプログラムしか実行されません。

OSは何ですか? NT4.0だと、for 文の do 以降の実行文次第で for ループが終わってしまうようなことがあったような気がします。

ためしに、

for %%f ... do call :DO_SQLPLUS UserName/Password@接続文字列 %a%%%f
goto :end

:DO_SQLPLUS
set CONNECT_STR=%1
set SQL_SRC=%2
sqlplus %CONNECT_STR% %SQL_SRC%
goto :eof

:end

みたいに、1段階実行ブロックを分離してみてはどうでしょうか。

さらに言えば、この構造の for 文だと、1回ごとに接続・切断を繰り返すため非効率なので、例えば次のような感じで

echo -- SQLs > %SQL_SRC%
for %%f in (*.h) do echo %a%%%f >> %SQL_SRC%
for %%f in (*.pkg) do %a%%%f >> %SQL_SRC%
(ちょっとうろおぼえなんで、セミコロンとか / とか必要だったら付加してください)
sqlplus UserName/Password@接続文字列 %a%SQL_SRC%

みたいな、1つの実行文をまず作成してから実行するような構造にしてはどうでしょうか。



599) Re2:複数のSQLを実行するには。 ケイ 2003/09/09(火) 12:22


ふぇむさん、回答ありがとうございました。

>OSは何ですか?
Win2000です。

先ほど教えていただいた最初の方のやり方なのですが、
for %%f in (*.h) do call sqlplus UserName/Password@接続文字列 %a%%%f
for %%f in (*.pkg) do call sqlplus UserName/Password@接続文字列%a%%%f

でやっていた、実行したいファイルの(*.h)や(*.pkg)は、どこへ書くのでしょうか?

既存であったものを改造しているので、私はまったくの初心者です。
すみませんが、もう1度よろしくお願いします。

>for %%f ... do call :DO_SQLPLUS UserName/Password@接続文字列 %a%%%f
>goto :end

>:DO_SQLPLUS
> set CONNECT_STR=%1
> set SQL_SRC=%2
> sqlplus %CONNECT_STR% %SQL_SRC%
> goto :eof

>:end

601) 自己レス ケイ 2003/09/09(火) 14:47


ふぇむさんへ

ケイです。
先ほどの質問なんですが、いろいろやっていて
自分の書いているSPの方の書き方が悪かったことに気が付きました。

DOSで自分でEXITを打たないと次へ進まなかったのですが、
自分のSPの最後にEXITをつけたら一気に流れるようになりました。

ありがとうございました。

602) Re3:自己レス ふぇむ 2003/09/09(火) 15:05


>DOSで自分でEXITを打たないと次へ進まなかったのですが、
>自分のSPの最後にEXITをつけたら一気に流れるようになりました。

ああ、sqlplusを抜けるように書いていなかったということですね。

いずれにしても先ほどの1回づつ Oracle Session の接続・切断を繰り返すような実行の方法はあまりよくないと思いますよ。
 
 


カテゴリー「SQLとコマンド・プロンプト」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2003年09月09日 11:06に投稿されたエントリーのページです。

ひとつ前の投稿は「一意の(重複しない)変数の動的な生成・取得方法」です。

次の投稿は「バッチ起動時に黒い画面が出てくるのを止めたい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート