MW211 EXIT

devlog
PDO/MSSQLストアドプロシージャの戻り値取得
2021年10月29日
┌──────────────────────────────────────┐
│$sth = $PDO->prepare(SQL文);                                                │
│$sth->execute();                                                            │
│$row = $sth->fetch(PDO::FETCH_ASSOC);                                       │
│echo $row['戻り値'];                                                        │
└──────────────────────────────────────┘
上記のような感じでストアドプロシージャ(SQL文)を実行した後
その戻り値を取得したい場合には、以下のようなSQL文とすればよい。
┌──────────────────────────────────────┐
│SET NOCOUNT ON;                                                             │
│DECLARE @戻り値 [int];                                                      │
│EXEC @戻り値 = [DB].[dbo].[ストアドプロシージャ];                           │
│SELECT '戻り値' = @戻り値;                                                  │
└──────────────────────────────────────┘
件数出力(*1)が雑音となるので「SET NOCOUNT ON;」が必要だ。
*1:例えば「(1 行処理されました)」など

雑音があると「The active result for the query contains no fields.」エラーに。

但し、警告文(*2)が出る場合には、そちらも雑音となるので
「SET ANSI_WARNINGS OFF;」も必要だ。
*2:例えば「警告: NULL 値は集計またはその他の SET 演算で削除されました。」など
┌──────────────────────────────────────┐
│SET NOCOUNT ON;                                                             │
│SET ANSI_WARNINGS OFF;                                                      │
│DECLARE @戻り値 [int];                                                      │
│EXEC @戻り値 = [DB].[dbo].[ストアドプロシージャ];                           │
│SELECT '戻り値' = @戻り値;                                                  │
└──────────────────────────────────────┘
分類:PDO