Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
skillile
Posting Yak Master
208 Posts |
Posted - 2002-05-03 : 16:21:03
|
| I have a simple trans that processes a select then insert. At each step I write an error return. I want the transaction to fail on errorbut I want to write the error to a table on the error rollback. Can this be done. Thanks here is a sample.BEGIN TRANSACTION extract--**************************************************************************--check to make sure serverid was passed step 1--**************************************************************************if @serverid < 1beginset @err = 1set @msg='Server ID < 1 /' + convert(varchar(20),getdate(),109) + ' / Serverid Passed= ' + cast(@serverid as char(5)) + ' /failed at step 1'goto errorend--**************************************************************************--set vars step 2--**************************************************************************set @err=0set @servername=(select servername from tblservers where serverid= @serverid)set @catalogname=(select catalogname from tblservers where serverid= @serverid)if @@error <> 0 OR @err <> 0 beginset @err = 2set @msg='Variables Incorrect /' + convert(varchar(20),getdate(),109) + ' / Serverid Passed= ' + cast(@serverid as char(5)) + ' /failed at step 2'goto ERRORend--**************************************************************************--delete/pull order info step 3--**************************************************************************--set SQLstringset @sqlString = 'select '''+ @catalogname + ''', ' + convert(varchar(5),@serverid) + ', Fld.iFolder, blah blah '--First delete all orders from table that match @serverid step 3--**************************************************************************delete from tblorderswhere catalogid=@serveridif @@error <> 0 OR @err <> 0 beginset @err = 3set @msg='Order Delete ***FAILED***- ' + @servername + @catalogname + ' /' + convert(varchar(20),getdate(),109) + ' / Serverid Passed= ' + cast(@serverid as char(5)) + ' /failed at step 3'goto ERRORend--Now insert data into table step 4--**************************************************************************--insert data into tableinsert into tblorders ( catalogname, catalogid,execute (@sqlString)if @@error <> 0 OR @err <> 0 beginset @err = 4set @msg='Order INSERT ***FAILED***- ' + @servername + @catalogname + ' /' + convert(varchar(20),getdate(),109) + ' / Serverid Passed= ' + cast(@serverid as char(5)) + ' /failed at step 4'goto ERRORendset @msg='DATA Extraction SUCCESS- ' + convert(varchar(20), getdate(),109)insert into tblserverjournal (serverid, journalnote, journaltimestamp, journalcreatedby) values (@serverid, @msg, getdate(), @@servername)COMMIT TRANSACTION--*****************************************************--error return and write to journal--*****************************************************ERROR:BEGIN TRANSACTION insertjournalexecute ps_insert_journal @serverid, @msg, @@servernameCOMMIT TRANSACTION insertjournalROLLBACK TRANSACTION extractreturn @errslow down to move faster... |
|
|
robvolk
Most Valuable Yak
15732 Posts |
|
|
|
|
|
|
|