• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:動的SQL (その3))

動的SQLの実行における列名の不具合とフィールドの値不足について

このQ&Aのポイント
  • 動的SQL (その3)において、勤怠コードのクロス集計を行うための実験をしています。エクセル出力する形で実行しており、再現性に課題があります。具体的には、実行結果の列名が「xx」ではなく「A0」となり、フィールドに値が入っていない状態です。改善方法を教えていただきたいです。
  • 動的SQL (その3)で勤怠コードのクロス集計を行う実験をしていますが、実行結果の列名が「xx」ではなく「A0」となります。また、フィールドに値も入っていない状態です。再現性の問題があり、改善の方法を知りたいです。
  • 動的SQL (その3)において、勤怠コードのクロス集計を行う実験をしていますが、実行結果の列名が「xx」ではなく「A0」となっています。さらに、フィールドに値が入っていません。再現性に課題があり、問題の解決方法を教えていただきたいです。

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

構文はあっていますが、ここに開示されている情報が理由ではないと思います。同じ環境ではないでしょうが、再現させられないですからね。 少なくとも ・ここに開示されているソースだけでも再現するか ・動的クエリでない状態でストアド単体でクエリアナライザで実行しても再現するか ・動的クエリの状態でストアド単体でクエリアナライザで実行しても再現するか ・動的クエリ部分を普通のSELECTにしても再現するか ・動的クエリ部分を動的SQLでないストアドプロシージャにしてEXECする形に変更しても再現するか ・出力先をCSVやACCESSのテーブルにしても再現するか といったあたりの切り分けはできているんですよね? 単体実行で再現するとは思えないので、OLEとの相性になってくるのかもしれません。 (BCPで動的SQLを使うな、という話は前に技術情報に出ていましたので、動的SQLでうまくいかないケースが他にあってもおかしくはない)

SEsyo
質問者

お礼

複数のSELECT分や複雑なストアドにアクセスが対応できていない時の 現象のようで、根本的な解決策はありませんでした。 色々、ありがとうございました。

SEsyo
質問者

補足

・ここに開示されているソースだけでも再現するか・・・再現する ・動的クエリでない状態でストアド単体でクエリアナライザで実行しても再現するか・・・未検証 ・動的クエリの状態でストアド単体でクエリアナライザで実行しても再現するか・・・未検証 ・動的クエリ部分を普通のSELECTにしても再現するか・・・再現する ・動的クエリ部分を動的SQLでないストアドプロシージャにしてEXECする形に変更しても再現するか・・・再現する ・出力先をCSVやACCESSのテーブルにしても再現するか・・・未検証 未検証だった、クエリアナライザで実行したら、正常な結果を返しました。 SQL Server側の問題ではなさそうですので、動的クエリ使わない方法、 もしくはこの習性をふまえて別の動的クエリを再度検討してみます。 また質問するかと思いますが、よろしくお願いします。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

1番目の if の END は何処? 以下のようになってるじゃないの? if 'B0'='B1'   begin   exec sp_executesql N'SELECT 勤怠コード AS xx FROM T_勤怠'   end   if 'B0'='A0'     begin     exec sp_executesql N'SELECT 勤怠コード AS B0 FROM T_勤怠'     end   else     begin     exec sp_executesql N'SELECT 勤怠コード AS A0 FROM T_日報'     end

SEsyo
質問者

補足

ストアドもIFに対してENDが必要ですか? beginに対するendと考えていましたが・・・ if 'B0'='A0'の前に END を入れるとエラーになります。 どちらにしても三つ目のexecを通っているのに別名は最初の「xx」になります。 ひょっとしたら別名は最初に出現した物になってしまうのでしょうか? だとしても、文字列としての記述にも関わらず「xx」になってしまうのは どうしてでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A