Различить пустую выборку, UPDATE и потерянную итоговую строку

Результат настоящих запросов через PDO_ODBC. Собственные учебные объекты после наблюдений удалены.

Результат выполнения
НаблюдениеРезультат
Цепочка результатов2 строки → UPDATE → 0 строк → итог 6
Поздний RAISERRORnextRowset: false; SQLSTATE: 00000; квитанции нет
Отдельный ошибочный SELECT42S22 / 207
Чтение после отказаCAB: 3; CLP: 3
Файлresult-chain.json
Полученные строки и наблюдения
{
    "normal_sets": [
        {
            "columns": 2,
            "row_count": -1,
            "rows": [
                {
                    "sku": "CAB",
                    "qty": "2"
                },
                {
                    "sku": "CLP",
                    "qty": "3"
                }
            ]
        },
        {
            "columns": 0,
            "row_count": -1,
            "rows": []
        },
        {
            "columns": 1,
            "row_count": -1,
            "rows": []
        },
        {
            "columns": 1,
            "row_count": -1,
            "rows": [
                {
                    "total_qty": "6"
                }
            ]
        }
    ],
    "normal_terminal_state": "00000",
    "late_first_result": [
        {
            "before_error": "1"
        }
    ],
    "late_next": false,
    "late_diagnostics": [
        "00000",
        null,
        null
    ],
    "missing_final_receipt": true,
    "direct_error": {
        "failed": true,
        "state": "42S22",
        "code": 207
    },
    "healthy_rows": [
        {
            "sku": "CAB",
            "qty": 3
        },
        {
            "sku": "CLP",
            "qty": 3
        }
    ]
}

result.json содержит те же данные. Реквизиты входа сюда не записываются.