ADOからSQLのEXISTSの結果を取得する方法

このQ&Aのポイント
  • ASPからADOを使用してSQLのEXISTSの結果(有るか無いか)を取得する方法について調べています。
  • 通常はSQLステートメントをConnection::Execute()に渡してレコードセットを受け取るが、EXISTS()の結果を取得する方法について検討しています。
  • また、SQL中で使用した変数の内容をADO側に渡す方法についても調べています。
回答を見る
  • ベストアンサー

ADOからSQLのEXISTSの結果(もしくは変数)を取得

ASPからADOを使用して、SQLサーバー上のデータを参照する場合に、通常SQLステートメントを Connection::Execute() に渡して、レコードセットを受け取るのが普通だと思いますが、たとえば、EXISTS() の結果(有るか無いか)を取得することは出来ないでしょうか。 代替え案として、SELECTを行い、レコードセットの件数が0か否かで判断することも出来るとは思いますが、もしテーブルが膨大であった場合や、結果が膨大であった場合に、総当たり判定コストや通信コストがかかってしまうのを懸念しています。 また、それ以外にSQL中で使用した変数の内容をADO側に渡す方法は有るのでしょうか。(これが出来れば問題ないのですが、、、) 結果用のテーブルを作成して、そこからSELECTしてレコードセットで返す。位しか思いつきません。 宜しくお願いいたします。 開発環境は: Windows 2000 Server / IIS 5.0 / ASP Microsoft SQL Server 2000 and 7.0 Microsoft Internet Explorer 6.0sp1

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>レコードセットを受け取るのが普通だと思いますが、たとえば、 >EXISTS() の結果(有るか無いか)を取得することは出来ないでしょうか。 1.ストアドを作成する(Transact-SQL) 2.Oracleのdual表のような、レコードが1件だけ存在するようなテーブルを作成しておいてexistsする select 'X' from dual where exists(select 'X' from 調べたいテーブル) dualからのレコードが1件取得されたらあり、0件だったらなしと判断できます。 >また、それ以外にSQL中で使用した変数の内容をADO側に渡す方法は有るのでしょうか。 >(これが出来れば問題ないのですが、、、) SQL中で使用した変数とはなにをさすんですか? 通常のSQLでパラメータを使用というと、クライアントから サーバに渡す方しかないと思うんですが。 ちなみに、ADOならストアドのパラメータなら入力も出力も受け取れますよ。

isobeman
質問者

お礼

御回答ありがとうございました。 御回答を元に、調べましたところ、ストアドプロシージャを使用して何とかなりそうな見通しが立ちました。 有り難うございました。

関連するQ&A

  • VBでSQL

    SQLでテーブル1に該当レコードがなければインサート あればアップデートをする処理をしたいのです IF ??? THEN UPDATE テーブル1 SET SELECT * FROM テーブル2 WHERE 条件 ELSE INSERT INTO テーブル1(SELECT * FROM テーブル2) END IF ???はプライマリキーで判定をしようと考えています こんな感じでやろうとしたところ うまくいきませんでした VB上で実行しよううとしているからなのでしょうか? ADOでSQLサーバに接続しています 条件分岐もどういう条件(VBでの書き方)がわからないです。 よろしくお願いします。

  • AccessVBAにおけるADOとSQLについて

    AccessVBA(Ver.2000)を使用しております。 ADOとSQLを市販のテキストで最近学び始めたばかりの者です。 調べ方が悪いのか、疑問なので教えてください。 例えばテーブルデータの更新をする際にSQLとADOのいずれでも可能かと思いますが、両者の違いはあるのでしょうか? こういう場合はSQL、こういう場合はADOを使用するのが良いというのがあるのであれば教えていただけたらと思います。 どうぞよろしくお願いいたします。

  • SQLの結果を更に絞り込む

    ADOのRECORDSETをSQLのSELECT文で抽出します。 そのRECORDSETに対して更にSQLをかけることは出来るのでしょうか? やりたいことはキーワード検索した結果に対して更に 別のキーワードで絞りこむといったことなのですか。 よい方法がありましたら教えてください。

  • Access2000のADOのレコードセットに先頭一致SQLを指定できない

    お世話になっています。 さて、住所録があって、その住所の先頭と一致するレコードをSQLで抽出してその結果をレコードセットに代入したいのですが。 SQLは "SELECT 住所録.住所 FROM 住所録 WHERE 住所録.住所 Like '" & str住所検索 & "*';" というような感じです。(もうちょっといろいろあるけど) それで、 rst.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockReadOnly, adCmdText rstはADOのレコードセットで、strSQLには上記のSQL文が代入されています。str住所検索には、検索したい住所の一部が代入されています。 これを実行すると、レコードセットにレコードが抽出されません。 WHERE句を 住所録.住所 = '" & str住所検索 & "';" と完全一致にすると抽出します。 しかし、全部の住所が一致するレコードを集めたいわけではないので、これでは困ります。 ちなみに、クエリーで実行するとちゃんと集まります。 なんとか、レコードセットにあいまい検索の抽出結果を代入できないでしょうか? ADOのレコードセットにはLike演算子は使えないのでしょうか? よろしくお願いいたします。

  • WSH ADOによるSQL Server 2000への接続

    お世話になります。 WSHによりADOでSQL Server 2000への接続をしている事例があれば記述を教えてください。 VBAの場合とASPの場合で記述が違うようで、WSHでの確認もうまくできておりません。 よろしくお願いします。

  • AccessのSQLで、レコード数の取得方法を教えてください。

    すみませんが、教えてください。 AccessをADO+SQLで操作しています。 cnn.Open **** sql="SELECT hoge FROM tabeleHoge;" set rec=cnn.Execute(sql) で、recオブジェクトから、レコード数を取得する方法ってあるのでしょか? sql="SELECT COUNT(*) FROM tableHoge;" を使わずに、できれば、嬉しいのですが。 以上、よろしくお願いいたします。

  • ADOのレコードセットをローカルにキャッシュする方法

    ご質問させて頂きます。 MS SQL 2000 と VB 6.0 の環境で、ADO接続しています。 SQLサーバに接続し、データをレコードセットに取得したのですが、Connectionをクローズするとレコードセットも参照できなくなってしまいます。 Connectionをクローズ後もレコードセットを使えるようにする方法はありませんでしょうか? どうぞ宜しくお願いします。

  • ADO接続の共有

    ACCESS2007をフロントにしてDBをSQL-Server2005Expressにして開発を 行おうとしています。 できる限りネットワークの負荷を減らそうと、ADO接続/ADOレコードセットと フォーム連結で開発したいのですが、ネットで検索するとADO接続を各画面で 行わなければならないような記述しか見あたりません。  ・検索キーワード:ADO 接続 共有 できれば、ADO接続はプログラム起動時1回で、DBデータを表示する 画面等を開く場合は、起動時に取得した接続を使い回したいのですが、 当該方法が記載されたいるようなURL等をご教示願えないでしょうか?  ・他mdbのテーブルをリンクテーブルとして使用したいため、   AccessProject(.adp)の使用は断念しました。 上記よろしくお願いします。

  • ASPでのSQLインジェクション対策

    ASPにて、ADOでAccessにアクセスする際にSQLインジェクション対策はどのようにしたらよいでしょうか。 現状は以下の様にしています。(name)は画面から受け取ったパラメータです。 Set aConn = CreateObject("ADODB.Connection") aConn.Provider = "Microsoft.Jet.OLEDB.4.0" aConn.ConnectionString = Server.MapPath("DB.mdb") aConn.open SQL = "SELECT A FROM TBL WHERE NAME = " & name ...... 宜しくお願いします

  • Access ADO パラメータークエリー

    Access ADOでフォームのコントロールを参照するパラメータークエリーを開こうとすると、どうしても「SQLステートメントが正しくありません・・・」のエラーが発生してしまいます。 もちろん、クエリー単体では正常に動作しますが、クエリーのパラメーターに参照するコントロールを登録してもADOでは開けません。 現在はパラメータークエリーの抽出結果を一時テーブルに書き込んで、これをADOで開くという非効率極まりない方法で凌いでいますが、どうすれば良いのでしょうか。

専門家に質問してみよう