• ベストアンサー

SQL ループ

プログラミングをする上でSQL文などを使ったループ文は、危険がありますか?

  • MySQL
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.2

 ループ一般に言われる注意事項はともかく、SQLをループに入れたからという理由で危険になることも無いと思います。  が、SQLを使用した問い合わせで、カーソルでフェッチする以外の為のループを構築しているのなら、もしかすると構成がおかしいと疑った方が良いかもしれません。本来、SQLを利用してデータを取得すると言うことは、必要なデータを必要な形式でSQLが返してくれるようにSQLの文を構築するものだからです。  逆に、insertやupdateのようなデータの追加・更新であれば、SQL文をループの中に入れることは良くある話です。  

kirawaremono_
質問者

お礼

回答ありがとうございます!

その他の回答 (1)

  • sukeken
  • ベストアンサー率21% (1454/6648)
回答No.1

こんにちは。 SQL文に限らず、ループは大概危険を秘めています。 十分に検証をしていくしかありません。

kirawaremono_
質問者

お礼

回答ありがとうございます!

関連するQ&A

  • 無限ループとループ文

    プログラミングにおいて while文、for文、foreach文などループ文は種類がありますが 無限ループに繋がってしまう恐れが高い順などは存在しますか? どのループ文もミスなく慎重に 正確な書き方さえしていれば無限ループは起きないと思いますが もしそのような順が存在するのであれば、わからないので教えて頂きたいです。

  • sqlcmdのループ処理について

    バッチ(sqlcmd)のループ処理について質問です。 SQLやバッチについて最近学び始めた初心者です。 5つのSQLファイルを順番に実行して正常に動作するかループしながら確認をしたいのですが、その場合はfor文を使用すれば良いでしょうか? 調べてもループ回数とファイル指定を同時に行えなさそうだったので、方法を教えていただきたいです。よろしくおねがいします。

  • VB6でのSQL実行について

    VB6でのSQL実行について VB6でのSQL実行について困っています。 SQL文を作成し、ダイナセットで実行している最中にも 再度別のSQL文をダイナセットで実行することは可能なのでしょうか? 言語はVB6.0、DBはOracle9iを使用しています。 イメージ的にはこんな使い方をしたいです。 dim lngRecordRow1 as long 'レコード数1 dim lngRecordRow2 as long 'レコード数2 dim OraDynaset1 As OraDynaset dim OraDynaset2 As OraDynaset dim strSQL as string 'SQL文 dim lngCnt1 as long 'ループカウンタ1 dim lngCnt2 as long 'ループカウンタ2 strSQL= ---SQL文作成1回目--- Set OraDynaset1 = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY) 'SQL文実行1回目 lngRecordRow1 = OraDynaset1.RecordCount for lngCnt1 = 1 to lngRecordRow1 '--- 処理 --- strSQL= ---SQL文作成2回目--- Set OraDynaset2 = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY) 'SQL文実行2回目 lngRecordRow2 = OraDynaset2.RecordCount for lngCnt2 = 1 to lngRecordRow2 '--- 処理 --- next lngCnt2 next lngCnt1 1回目で取得したSQL実行結果を行単位でループをまわしつつ、1回目で取得したレコードの結果を条件に使用して別のSQL文を作成し、ループをまわしている最中に実行したいです。 その際、2回目のSQLの結果が2レコード以上の場合、さらにループをまわして条件判別をしたいです。 かなり困っています。回答待ってます。

  • 10進ベーシックでループを抜けたい

    for文で作った2重ループの中にif文があります。 if文の条件を満たしたらループを抜けるようにしたいのですが、 「goto 行番号」や「EXIT FOR」 を使ってもうまくいきません。 一度に2重ループを抜けたいのですが、どうすればいいでしょうか?

  • PHPのforeachでSQL文を処理しても良い?

    PHPのforeachでSQL文を処理しても良いか教えてください。 ・foreachループの中でSQLを書いているのですが、なるべくしない方がよいのでしょうか? (一般的な書き方ではない?) ・MySQLで代替する書き方はあるでしょうか? ・もし代替する書き方がなくてforeach文を使う場合、SQL文が長くてもクエリ数が少ない書き方の方がよいのでしょうか?

    • ベストアンサー
    • MySQL
  • VBとACCESS・・それからSQL・・・

    VBを始めてから、約6ヶ月になる者です。 Access と連携(DAO?)してSQL文をプログラミングしているのですが、 手に負えなくなってしまいました。 このコーナーで「SQL文の中身をデバックで見る事が出来る。」 とあったのですが、デバックの中にもツールがいくつかあり、 どのツールを使ってSQL文の中身を見る事ができるのでしょうか? db.Excute mySQL のところがエラーメッセージと共に黄色くなってしまって…。 解り難い質問でしたら、すみません。 それでは、宜しくお願いします。

  • ループの中にループ

    while文の中にwhile文をする方法はありますでしょうか? 最初のwhile文は指定回数のループで その中のwhile文はデータベースの検索結果数分だけループするためのwhileです。

    • ベストアンサー
    • PHP
  • ループの仕方

    select文で、まずデータが何件あるかカウントしたあと、 そのカウントした数の分だけ、ループしたいです。 ループに入れ込みたいSQLは以下のような感じです。 1.select 1a,1b from TABLE1 where 条件; 2.select 2a,2b from TABLE2 where 条件; カウントした数の受け渡しとかも、分からないような状態なのですが、 初心者向けに教えていただけないでしょうか。 宜しくお願いします。

  • SQLの構文解析

    プログラミング初心者ですがよろしくお願いします。 SQL文の字句、構文解析を行いたいと思っていて、SQL文が書かれたテキストファイルを入力とし、構文木もしくはそれににた情報を出力できるようなものがほしいです。 どこかにSQL構文のパーサーのソースコードライブラリは無いでしょうか?できればフリーがいいです。 C言語やflex,bisonなどのソースコードがあればいいのですが探しても見つかりません。どなたかご存じありませんか?よろしくお願いします。

  • メッセージループを調べすぎてCPU使用率が100%にならないのはどうしてですか?

    WINDOWSプログラミングでは、WinMainでメッセージループをつくりますが、一般にこのようなwhile文をコンピュータが一生懸命グルグルまわしたりしてCPU使用率が100%になったりしないのはどうしてですか。 入力が大してないときに、無駄にメッセージループをまわらせるのが悪いような気がします。