dポイントプレゼントキャンペーン実施中!

いつも勉強させて頂いています。SQL文について困っています。

-環境-
.NET FreamWork2.0
VB SQLSERVEREXPRESS

-SQL-

インサート時にオートナンバーを取得してデータを追加しているのですが、追加後にオートナンバーの値を戻す(取得する)ことは可能でしょうか?SQL文は下記です。

INSERT INTO マスタテーブル VALUES((SELECT MAX(オートナンバー) + 1 FROM マスタテーブル), 商品名・・・・

上記で登録されたオートナンバーを別テーブルに格納したい為です、リアルタイムで処理しますので、発行したオートナンバーが即時に必要です。
テーブル更新時に 
Dim Ret_Table As DataTable = AS_Cmd.ExecuteScalar()
とするとテーブル内容がNothingになります。

他の方法も御座いましたら教えて頂けると幸いです。宜しくお願い致します。

A 回答 (2件)

実行直後のIDENTITYはSCOPE_IDENTITY()で取得できますので、


以下の2クエリをまとめて渡せば番号を受け取れると思います。
strSQL =
"INSERT INTO マスタテーブル VALUES((SELECT MAX(オートナンバー) + 1 FROM マスタテーブル), 商品名・・・・;SELECT SCOPE_IDENTITY();"

この回答への補足

jamshid6 様

ご返事ありがとうございます。
SQLSERVERで確認できました。
質問場所が違うと思いますが、ODBC接続でDB2の場合、セミコロンでまとめて、
SQL文を発行することは可能でしょうか?

補足日時:2008/07/28 13:02
    • good
    • 1

うーん、すみません。

DB2だとちょっとわかりません。
ただ、今回の例でもそうですけど、複数のステートメントを一括で実行させたい場合は、ストアドプロシージャにした方がパフォーマンスやメンテナンスの面でもいいと思います。
(作成が認められているなら、ですが)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A