【发布时间】: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