MW211 EXIT

devlog
PDO/続・MSSQLストアドプロシージャの戻り値取得
2021年11月01日
「警告: NULL 値は集計またはその他の SET 演算で削除されました。」が出ることにより
戻り値が取得できない問題についての解決策を考えた。

(案1)「SET ANSI_WARNINGS OFF;」で警告を無視する
  手っ取り早い方法だ。
  ただ、副作用が気になる。(例えば除数0エラーが検出できないとか)

(案2)「SUM(ISNULL(列, 0))」でNULLを0にして集計する
  確実な方法だ。
  ただ、処理時間が気になる。
  ちなみに「ISNULL(SUM(列), 0)」では効果はない。
  なお、NULLの集まりなのでNULLとして認識したい場合は、この案は採用できない。

(案3)戻り値を別ルートで取得する
  プレースホルダのoutputみたいな項目を通じて取得できないものか
  …と思ったが、できなさそうなので断念。

ということで、ひとまず(案2)が妥当なのだろう。(急を要するなら(案1)だけど)

なお、以下で検証ができる。
┌──────────────────────────────────────┐
│SELECT SUM([値]) FROM (VALUES (0),(NULL)) AS [表]([値]);                    │
└──────────────────────────────────────┘
分類:PDO