T-SQLでストアドプロシージャを組むことになったのですが(おそらく)初歩的なところで躓いております。
社内のクエリや、ネット上に挙がっているクエリを参考に作っているのですが、どうにも上手く動きません。
それぞれ質問内容が異なりますがT-SQLの変数の取り扱いについて質問させてください。
1点目。
SELECT句で列名を指定するのではなく、変数に列名を代入して、その変数を指定すれば同じ結果が得られると思ったのですが、どうにも思い通りに動きません。
クエリ自体は正常に実行されるのですが空のレコードだけが抽出されてしまいます。
これはT-SQLの仕様なのでしょうか。
SQL
1/* 空のレコードが出力されてしまう */ 2DECLARE 3 @No = 'No', 4 @Name = '商品名', 5 @Price = '値段' 6SELECT 7 @No, 8 @Name, 9 @Price 10FROM 11 商品マスタテーブル 12GO
2点目。
2つのテーブルを比較して検出された件数を変数に代入しようとしたのですが、1回目は「コマンドは正常に完了しました。」というメッセージが出力され、2回目からは「データベースに '※変数名' という名前のオブジェクトが既に存在します。」というエラーが吐かれて使えなくなってしまいました。
どのような理由から、そうなってしまうのかも分かっていないのですが、何よりも直し方も分からないので非常に困っております。
SQL
1-- 初実行時「コマンドは正常に完了しました。」 2-- 2度目以降「データベースに '※変数名' という名前のオブジェクトが既に存在します。」 3DECLARE 4 @inconsistency INT 5SELECT 6 COUNT(Table_1.No) INTO inconsistency 7FROM 8 Table_1 INNER JOIN Table_2 ON 9 Table_1.No = Table_2.No AND 10 Table_1.商品名 = Table_2.商品名 AND 11 Table_1.値段 = Table_2.値段 12WHERE 13 Table_1.注文日 IS NULL AND 14 Table_2.注文日 IS NOT NULL 15GO
長くなりましたが、ご回答のほど、よろしくお願い申し上げます。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/30 01:27
2019/04/30 06:30