【问题标题】:SQL Server stored procedure: how to return column names/values of type failures in variable?SQL Server 存储过程:如何在变量中返回类型失败的列名/值?
【发布时间】:2020-11-25 03:04:00
【问题描述】:

含糊的线程名称,我很抱歉。我对 SQL 并不陌生,但我对编写更长的存储过程很陌生,所以除了传递表名或返回行数等之外,我不会处理太多变量。

我有一个存储过程正在执行从临时表到事实表的插入。插入中有几个类型转换。

如果插入由于类型转换而失败。有什么方法可以返回失败的列的名称以及失败的值是什么?我将如何编码?我知道 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

【问题讨论】:

  • 在没有insert 的情况下使用try_cast() 执行select

标签: sql stored-procedures sql-server-2012


【解决方案1】:

您可以在 sql 中使用 CURSOR,然后一次插入一行。当插入失败返回值当前行错误。 我希望我的想法适合你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多