• ベストアンサー

SQLServer DELETE 件数取得

COBOL上(NETExepress5.0)にSQL構文を埋め込んでプログラムを作っています。 DELETE文を発行して、そのDELETE件数を取得して、DISPLAY文に表示したいのですが、 どのようにすればよいでしょうか。 DELETE文(COBOL文中) 例)  EXEC SQL DELETE FROM テーブル名  END-EXEC 先にSELECT COUNT(*) FROM テーブル名 とかしてもかまわないです。 よろしくお願いします。

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

  • ベストアンサー
回答No.3

No.2です。 不確かですがCOBOLでROWCOUNTは使えなかったような気がするので… SELECT COUNT(*) INTO :ホスト変数 FROM テーブル名 DISPLAY ホスト変数

kuriosprj
質問者

お礼

色々、試行錯誤を繰り返し、ようやくたどり着いた結果が次の通りです。 EXEC SQL DELETE FROM テーブル名 END-EXEC IF SQLCODE = ZERO DISPLAY SQLERRD(3) END-IF といった感じなら件数を取得できました。 他にやり方はあるのでしょうが、上記で十分使えます。 教えていただいたホスト変数のも試してみます。

その他の回答 (2)

回答No.2

「ホスト変数」を使う。

kuriosprj
質問者

補足

ありがとうございます。 「ホスト変数」をどうCOBOLに使えばいいのかがよく分からないのです。 申し訳ありませんが、具体例など沿えていただければ幸いです。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

先にSELECT COUNT(*) FROM テーブル名 とかしてもかまわないです。 問題は起こらないかもしれませんが、実際に消えた件数がROWCOUNTに返ってきますので こちらをおすすめします。

kuriosprj
質問者

補足

maiko0318さん 有難うございます。 ROWCOUNTに件数をもっているということはわかっているのですが、 実際にCOBOLにどう表現していいものか教えていただきたいのです。 取得した件数をDISPLAY文に表したのです。 言葉足らずで申し訳ありませんでした。 よろしくお願いします。

関連するQ&A

  • 件数とデータを同時に取得するには?

    1つのSQL文で件数とデータを取得したいのですが無理でしょうか? イメージ図↓ SELECT カラム名,COUNT(*) FROM テーブル名; COUNT  カラム名 -------------------  3     データA       データB       データC

  • SQL 件数取得を速くしたい

    SQLでテーブルなどからSELECTされた件数を得る際に、 select count(*) from ~ 等とするかと思いますが、この結果が返ってくるのが遅くて困っています。 少しでも速く件数を得たいのですがどのような方法がありますでしょうか? 教えてください。 私が使っている環境はOracle 8iで 特に今回はgroup byを含むビューからの検索を行おうとしています。

  • 複数のテーブルの レコード件数所得

    sql初心者です。 php sql4.1を使って テーブルA・テーブルBの総レコード件数を所得がうまくできません。 テーブルAの◇◇が○○の含むレコード件数を所得は SELECT count(*) FROM テーブルA WHERE ◇◇ LIKE ○○ でできました。 テーブルA・テーブルBの◇◇が○○の含むレコード件数を所得はどうすればいいのでしょうか? よろしくお願いいたします.

    • ベストアンサー
    • MySQL
  • テーブルのレコード件数取得について

    はじめまして。 postgresの「テーブルのレコード件数取得」について教えてください。 何も考えずに select count(*) from tblA; というSQLの記述をしていたのですが、レコード件数が30万件を超えた あたりから、結果が戻るまでに4~5秒もかかるようになりました。 もっと効率の良い(=短い時間)検索方法はあるのでしょうか? ちなみに postgres+C+PC-Soralis の組みあわせです。 マシンはPen4-2Ghz メモリーは512MBです。

  • 削除した件数を取得

    下記のようにSQLを実行したのですがエラーになりました。そもそもDELETEでCOUNT()を使用することは可能なのでしょうか。 DELETE COUNT(*) FROM table_data WHERE serial = 'DoCoMo';

    • ベストアンサー
    • MySQL
  • 1個のSQL分で2種類以上の件数値を取得する

    SQL分の記述で質問なんですが、 データベース上に日付、時間、フラグと言う項目があります。 同一の日付、時間のものは数件ずつあります。 フラグは"b"と"1"があります。 このデータの日付・時間辺りの件数と+フラグが"1"の件数を同時に取得するSQL分はかけますでしょうか? 別々ならば、 SELECT DATE,TIME,COUNT(*) AS KENSU1 FROM W_TABLE GROUP BY DATE,TIME ORDER BY DATE,TIME と SELECT DATE,TIME,COUNT(*) AS KENSU2 FROM W_TABLE WHERE FLG="1" GROUP BY DATE,TIME ORDER BY DATE,TIME でかけると思うのですが、 1個のSQL分で記述は可能でしょうか? 処理結果を 05/02/23 12:00 10 5 05/02/24 10:00 12 3 (日付・時間・件数・フラグ="1"の件数  見たいに取得したいのですが..

  • EXISTSを使ったDELETE文

    「SELECT文の件数」と、 「同じSELECT文を使ったDELETE文の件数」が一致しない現象が起き、困っています。 【SELECT文】※2件返ってきます。 SELECT   a.部署コード,   a.社員コード FROM   社員マスタ a,   組織マスタ b WHERE   a.部署コード = b.部署コード 【DELETE文】※50件 DELETEされます。 DELETE TABLE   社員マスタ WHERE   EXISTS   (   SELECT     a.部署コード,     a.社員コード   FROM     社員マスタ a,     組織マスタ b   WHERE     a.部署コード = b.部署コード   ) 環境はSQLSERVER2005です。 件数はSQLSERVER2005のカウントオプションで表示されているものなので間違いないです。 宜しくお願いします。

  • SQLServer2000のselect文で

    SQLServer2000のselect文で select count(*) from Table を実行するのに30秒以上かかってしまいます。 データ数は100万件もありません。 全件数を取得するのになぜこんなにかかってしまうのでしょうか? 主キーはVarcharの50バイトです。 こんな単純な文でこれだけかかってしまうのは、 DBの設定が悪いのでしょうか? それともPCの性能が悪いのでしょうか?

  • 市区町村別の件数をカウントするビュー

    市区町村別の件数をカウントするビューを作りたいのですが、 上手くいきません。 まず、メインの住所が登録されているテーブル(user_table)には 住所とは別に、市区町村名(city)が登録されています。 次にSQL文で create view vUser_table as select city, (select count(*) from user_table where city=x.city) as count from user_table as x と打って、ビューを作成したのですが、 世田谷区 36 中野区 12 足立区 24 世田谷区 36 ・・・・ のように、同じ市区町村が何度もでてきてしまいます。 (件数は同じ) どうすればよいのでしょうか? ご教授ください。

    • ベストアンサー
    • MySQL
  • 検索結果の件数表示

    商品情報が入ったテーブルから、一致した件数を求めて、商品名を一覧表示するSQLなのですが、件数を求めるのに時間がかかります。もっと早くする方法はないでしょうか? 登録されているのは700万件ぐらいで、件数を表示させるのに2.5秒、商品名を出すのは0.3秒くらいです。 select `商品名` FROM `商品情報` WHERE `商品名` LIKE '%検索ワード%' LIMIT 0 , 30 これで検索結果を求めて、 select count(`商品名`) FROM `商品情報` WHERE `商品名` LIKE '%検索ワード%' で一致した件数を求めています。 サーバのスペック メモリ1GB CPU2.66GHz

    • ベストアンサー
    • MySQL