Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server存储过程:如何在变量中返回失败类型的列名/值?_Sql_Stored Procedures_Sql Server 2012 - Fatal编程技术网

SQL Server存储过程:如何在变量中返回失败类型的列名/值?

SQL Server存储过程:如何在变量中返回失败类型的列名/值?,sql,stored-procedures,sql-server-2012,Sql,Stored Procedures,Sql Server 2012,暧昧的线程名称,我道歉。我对SQL并不陌生,但我对编写更长的存储过程并不陌生,因此除了传递表名或返回行计数等信息外,我不会处理太多变量 我有一个存储过程,它正在执行从暂存表到事实表的插入。插入中有两个类型转换 如果由于类型转换而导致插入失败。有没有办法返回失败列的名称以及失败值是什么?我该如何编写代码?我知道Try_parse可以使存储过程在类型转换失败时不会失败,但我希望能够准确地传回失败的列和值 我在这里举一个例子: Create Procedure dbo.Example_Insert

暧昧的线程名称,我道歉。我对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

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

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

使用
try\u cast()
执行
选择
而不使用
插入
。使用
try\u cast()
执行
选择
而不使用
插入
操作。