我有简单的存储过程,即删除当前数据并输入新数据。如果输入失败,我想保留旧数据。我尝试使用以下代码,但旧的数据总是被删除,即使errorfilename生成错误。执行总是返回0并说成功。任何帮助将不胜感激。
ALTER PROCEDURE [dbo].[UpdateMyTable]
@FileName varchar(200),
@errorFileName varchar(300),
AS
BEGIN
SET XACT_ABORT ON
BEGIN TRY
BEGIN Transaction T
Delete FROM [dbo].[MyTable]
DBCC CHECKIDENT('MyTable',RESEED,0)
Declare @sql varchar(max)
set @sql = '
BULK INSERT MyTable
From ''' + @FileName + '''
WITH
(
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n'',
ERRORFILE = ''' + @errorFileName + '''
)'
EXEC (@sql)
COMMIT TRANSACTION T
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION T
END CATCH
END
更新问题:我使用sql express和management studio 2012.看起来EXEC将错误放入错误文件中并且没有错误被捕到外面。
感谢。