SQL Серверная хранимая процедура: как вернуть имена столбцов / значения сбоев типа в переменной? - PullRequest
1 голос
/ 05 августа 2020

Неоднозначное название темы, прошу прощения. Я не новичок в SQL, но я новичок в кодировании более длинных хранимых процедур, поэтому я не имею дело с переменными, кроме передачи имени таблицы или возвращаемого количества строк и т. Д. c.

У меня есть хранимая процедура, которая выполняет вставку из промежуточной таблицы в таблицу фактов. Во вставке есть пара приведений типов.

Если вставка не работает из-за преобразования типа. Есть ли способ вернуть имя столбца, в котором произошел сбой, а также его значение? Как мне это закодировать? Я знаю, что Try_parse сделает так, чтобы хранимая процедура не выходила из строя при сбое приведения типа, но я хочу иметь возможность точно передать обратно, какой столбец и значение не удалось.

Я показываю здесь пример:

Create Procedure dbo.Example_Insert
    @updateUser  varchar(255)
As 
Begin
    Insert Into dbo.Energy_Costs (Energy_Cost_Id, Project_Id, Propane_Cost_Dollars,
                                  Electricity_Cost_Dollars, Fuel_Savings_Evaluator)   
        Select
            Next Value For energy_cost_id,
            r.project_id, 
            Cast(r.propane_cost_dollars As Decimal(18,2)),
            Cast(r.electricity_cost_dollars As Decimal(18,2)),
            @update_user fuel_savings_evaluator
        From 
            staging_table r

    return @@ROWCOUNT
end

1 Ответ

0 голосов
/ 05 августа 2020

Вы можете использовать CURSOR в sql, а затем вставлять по одной строке за раз. При ошибке вставки возвращает значение текущей ошибки строки. Надеюсь, моя идея вам понравится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...