-PR-
解決済み

カーソル処理って?

  • すぐに回答を!
  • 質問No.68471
  • 閲覧数8276
  • ありがとう数6
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 100% (2/2)

最近オラクルの勉強をはじめたのですが、
本当に初心者なので、何がなにやらさっぱりわからないことだらけです。
それでも、だいたいのものはネット検索や辞書で調べたりしてわかったのですが、
”カーソル処理”で躓いてしまいました。
どういうもので、どんな働きをするものなのか、
どういうメリットをもっているのかなど教えてください。
よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル10

ベストアンサー率 42% (79/186)

実際のOracleとは、動きが違うので、カーソルとはこういうものだという概念だと思ってください。

データベースは、時と場合によって、テーブルからデータを持ってきてそのデータによって、処理を変えたくなる処理があります。
その場合、テーブルからとってきたデータを一時的に変数保存して、保存されたデータを調べて処理を行うという手順になります。
このときに、テーブルからとってくるデータが、1行複数列の場合、列の数だけ変数を作って、データを保存すればよいのですが、複数行のデータを取ってくる時、ほとんどの場合、何行とってくるのかはわかりません。また、その行数分だけ、繰り返しの作業が必要になることが多いはずです。

このような処理を行いたいときに、複数行のデータをいっぺんに保存し、繰り返しの処理を行いやすくした変数をカーソルといいます。そして、このカーソルを使った処理を「カーソル処理」と呼びます。
Oracleの場合、PL/SQLを使うとき、クライアントサイドで、ADO、DAO、RDO、oo4oなどを使う場合に、カーソルという概念が出てきます。

メリットとしては、上記のとおり、複数行に対して、複雑な条件による分岐処理を、1つのメソッド(PL/SQL文や、ストアドプロシージャなどのコール)で終わらせることができるため、ネットワークトラフィックを大幅に減らせる可能性があります。
デメリットは、カーソルを使うと、複数行に対する繰り返し処理になるので、条件が複雑でない場合や、多くの行を処理する場合はできるだけカーソルを使わずに、insert、update、delete文で処理するようにしないと処理時間が非常に長くなります。
お礼コメント
mimoza22

お礼率 100% (2/2)

ありがとうございました。
まだまだ完全に理解できるほど知識がないのが非常に悔しいのですが、
少しずつでも覚えていこうと頑張っています。
少しでもはやくmsystemさんみたいになれるように・・・
本当に有難うございました。
投稿日時 - 2001-04-27 09:56:15
関連するQ&A
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル10

ベストアンサー率 35% (56/160)

msystemさんがおっしゃっている通りです。 ですが、私も私なりになるべく噛み砕いて説明してみます。 SQLというのは、「こういう条件の結果がほしい」というような 指示の仕方をする言語(「非手続き型言語」)であるわけ ですが、これで得た結果をJavaやCのように、「こういう手続きで 得られる結果がほしい」という指示の仕方をする言語(「手続き型 言語」)で処理したいような場合に、カーソルと ...続きを読む
msystemさんがおっしゃっている通りです。
ですが、私も私なりになるべく噛み砕いて説明してみます。

SQLというのは、「こういう条件の結果がほしい」というような
指示の仕方をする言語(「非手続き型言語」)であるわけ
ですが、これで得た結果をJavaやCのように、「こういう手続きで
得られる結果がほしい」という指示の仕方をする言語(「手続き型
言語」)で処理したいような場合に、カーソルというのが、
必要になってきます。

SQLは、たとえば、誕生日が5月の会員の一覧が見たい、と
いうような場合に、そのデータをいっぺんに返すことができますが、
その会員それぞれの運勢を、Javaのプログラムで占って、その
結果をメールで配信したい、というような場合は、取得した結果を、
Javaのプログラムで処理できるような形にしなければなりません。
こういうときにカーソルを利用して、取得してきたデータを1つ1つ
順々に取り出せるようにして、Javaでつくった処理にかけられる
ようにするわけです。

ちなみに、Oracleの場合、必ずしもJavaやCの助けを借りなくても
大丈夫な場合があります。というのも、PL/SQLという、「手続き型
言語」が、あらかじめ用意されているからです。
PL/SQLは、SQLと手続き型の処理を、非常に簡単に融合させることが
できます。何かと便利なものです。
おいおい、PL/SQLにも眼を通すようにするとよいかもしれません。

Oracleは、いまやスタンダードなRDBMSなので、得た知識はきっと
役に立つだろうと思います。勉強、頑張ってください。
お礼コメント
mimoza22

お礼率 100% (2/2)

わざわざかみ砕いていただいて、わかりやすかったです。
現在(理解しているかどうかは別にして)SQLからPL/SQLの勉強に移りました。
壁にぶつかってばかりでなかなか前に進めない状況ですが、
頑張っていこうと思っています。
有難うございました。
投稿日時 - 2001-04-27 09:58:43


このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ