This is what Transact-SQL I am trying to run through sqlcmd (SQL Server 2005).
USE PUK; GO BEGIN TRANSACTION; BEGIN TRY -- - Modify RETRIEVAL_STAT alter table dbo.RETRIEVAL_STAT add SOURCE nvarchar(10) NULL, ACCOUNTNUMBER nvarchar(50) NULL, PUK nvarchar(20) NULL; -- transform logic. update dbo.RETRIEVAL_STAT set SOURCE = 'XX', ACCOUNTNUMBER = 'XX', PUK = 'XX'; END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber ,ERROR_SEVERITY() AS ErrorSeverity ,ERROR_STATE() AS ErrorState ,ERROR_PROCEDURE() AS ErrorProcedure ,ERROR_LINE() AS ErrorLine ,ERROR_MESSAGE() AS ErrorMessage; IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; END CATCH; IF @@TRANCOUNT > 0 COMMIT TRANSACTION; GO
I get the following error:
(0 rows affected) Changed database context to 'PUK'. Msg 207, Level 16, State 1, Server localhost\SQLEXPRESS, Line 11 Invalid column name 'SOURCE'. Msg 207, Level 16, State 1, Server localhost\SQLEXPRESS, Line 11 Invalid column name 'ACCOUNTNUMBER'. Msg 207, Level 16, State 1, Server localhost\SQLEXPRESS, Line 11 Invalid column name 'PUK'.
I assume that this is because the new columns introduced by the alter operator have not yet been completed, so the update does not work.
My question is: how do I get this to work? I want this to be executed as one transaction, which I can rollback if something goes wrong. This is important because I have a few more addition sentences that need to be included, but I'm a little disappointed that I can't get past this point.
Any help would be most appreciated!
Rob :)