尝试...捕捉...插入

Nil*_*ils 3 sql sql-server try-catch sql-insert

我试图将从我的 select 语句中得到的所有错误插入到一个错误表中,但我没有让它起作用。

BEGIN TRY 
    INSERT INTO [database]..[Table]([Column1], [Column2], [Column3])
       SELECT 
           [Column1], [Column2], [Column3] 
       FROM 
           [database]..[SourceTable] 
END TRY
BEGIN CATCH
     INSERT INTO [database]..[ErrorTable]([Column1], [Column2], [Column3])
        -- What to do here? .... (select the same query as up?)
        SELECT 
            [Column1], [Column2], [Column3] 
        FROM [database]..[SourceTable]
END CATCH
Run Code Online (Sandbox Code Playgroud)

现在我想查看我的Error表格中的所有错误以及所有在表格中正确显示的错误,但我没有让它起作用?

源系统的数据类型是nvarchar,我的列是INT因为值应该只是 INT ..所以源系统的设计很糟糕?

Shi*_*aji 5

尝试这个

Begin Catch 

INSERT INTO [database]..[ErrorTable]
(
[Column1],
[Column2],
[Column3],
[Column4],
[Column5],
[Column5]
)
SELECT
    cast (ERROR_NUMBER() as <your datatype>)
    ,cast (ERROR_SEVERITY() as <your datatype>)
    ,cast (ERROR_STATE() as <your datatype>)
    ,cast (ERROR_PROCEDURE() as <your datatype>)
    ,cast (ERROR_LINE() as <your datatype>)
    ,cast (ERROR_MESSAGE() as <your datatype>)
End Catch
Run Code Online (Sandbox Code Playgroud)