2008です。
有給休暇の使用日(複数)を文字列として、一つのフィールドに入れる
仕組みを作ろうとしています。
(4/1、6/20、6/21 8/30・・・・・てな感じです)
動的SQLでパラメータに値を代入する方法によって結果が変わってしまいます。
現象1
パラメータに代入(Set)するときに「'A0'」をセットすると正常に動きますが、
「(Select Max(コード) From テーブル Where コード='A0')」にすると
パラメータの入力を求められます。
しかし後者をIf文の中で代入するとパラメータの入力は求められません(下記)
if Select Max(コード) From テーブル Where コード='A0' = 'V0'
set @para = 'V0'
else
begin
set @para = (Select Max(コード) From テーブル Where コード='A0')
end
**********@paraを使う動的SQL***********
現象2
上記のIf文でパラメータを代入後、動的SQLの直前に@paraの値を確認の為
テーブルに書き込む(Insert)と動的SQLの結果が無くなってしまいます。
動的SQLの後にも書込を入れてみましたが、同じ値が書き込まれています。
当然、直前の書込を無くせば正常に表示されます。
何とか動作するのですが納得できず、将来に禍根を残しそうな現象であり
どうするべき(スルーするべき)か悶々としています。
No.2ベストアンサー
- 回答日時:
レガシーADOのように結果セットを複数受け取れない場合には、「○行更新されました」というメッセージ自体を1つの結果セットとして先に受け取ってしまうため、後続の結果セットが受け取れない可能性があります。
少なくとも、私の読解力では「動的SQLの結果が無くなってしまいます」はそのように読めたということです。
いずれにしても、質問者さんのようにMSのサポート体制が微妙な組み合わせ(Access ADP 2003 & SQL Server 2008でしたよね)で開発をしていて、不明な現象をどうしても追求したい場合、少なくともトラブルシューティングのための検証ステップが3つは足らないと思います。
・クエリアナライザでの単体検証
・Access 2003(MDB)でデータソースのプロバイダを「SQLOLEDB(SQL Server)」にした環境
・Access 2003(MDB)でデータソースのプロバイダを「SQLNCLI10(SQL Native Client 10.0)」にした環境
今の方法では、SQL Serverが悪いのか、データプロバイダが悪いのか、組み合わせが悪いのか、切り分けできませんよね。
No.1
- 回答日時:
なんだかやっていることに関する記述がかなり端折られている感じで、読解力がいりますね。
。5回読んで考えましたが、現象1は内容が理解できません。
現象2はたぶん「SET NOCOUNT ON;を切ってないのでは?」
この回答への補足
すいません、端折りすぎですね、長くなると見にくいと思ったのですが、
これでは意味不明ですね・・・
月曜日にきちんとしたストアドと画面のハードコピーを載せますので
よろしくお願いします。
「SET NOCOUNT ON;を切ってないのでは?」は試してみます、ありがとうございました。
「SET NOCOUNT ON」を入れても結果は変わりませんでした。
「SET NOCOUNT ON」は行数を返さない為、効率が良くなると理解しましたが、
効率UP以外にどんなことが期待できるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
動的SQL (その2)
-
レコードの一致方法
-
SQL 2つのテーブルとSUBSTRING...
-
商品コード番号を入力すると商...
-
ACCESS 一つのフィールドに複...
-
主キーの変更
-
select文の書き方
-
続.ORACLEのSELECTのソートに...
-
ACCESSのコンパイルエラーについて
-
連番のMin, Maxを取得したい
-
access初心者です。 アパレル...
-
行方向のデータを横に並べる
-
テーブルを分けるべきか
-
PLSQLの識別子エラー
-
ACCESSのSQLで、NULLかNULLでな...
-
SELECT時の行ロックの必要性に...
-
ACCESS2007 フォーム 「バリア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ACCESS 一つのフィールドに複...
-
行方向のデータを横に並べる
-
PLSQLの識別子エラー
-
VIEWでテーブルの集計結果...
-
Accessでフィールドを比較した...
-
Accessユニオンクエリーで2つ...
-
主キーの変更
-
片方だけ抽出する方法(SQL)
-
ACCESSのコンパイルエラーについて
-
【Access】順位を付けたい
-
[Oracle] UPDATE分の副問い合わ...
-
ACCESS インポート時の重複チ...
-
テーブル値関数経由でのデータ更新
-
ACCESS2000でDCount関数の使い方
-
Access2002の集計レポート?
-
Inner join と Left joinの明...
-
商品コード番号を入力すると商...
おすすめ情報