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 |
|
WoodHouse
Posting Yak Master
211 Posts |
Posted - 2009-08-05 : 02:37:46
|
HiI have procedures like this. CREATE PROC TEST1AS EXEC TEST2CREATE PROC TEST2ASBEGINDECLARE @MODEL INTDECLARE @i INT WHILE @i<= 10 IF @MODEL = 1 EXEC TEST3 1 IF @MODEL = 2 EXEC TEST4 2 IF @MODEL = 3 EXEC TEST5 3 IF @MODEL = 4 EXEC TEST6 4 IF @MODEL = 5 EXEC TEST7 5 IF @MODEL = 6 EXEC TEST8 6 IF @MODEL = 7 EXEC TEST9 7 SET @i = @i + 1 ENDEND If I run this procedure TEST1 it will call inner proc Test2 So the test2 proc will call 7 inner procedures in while loop. I want to create error handling of this scenario. Scope If I get any error any of the procedures it will catch the error message and save it in table but the loop will continue to next proc…How to handle this. Help on this... |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2009-08-05 : 03:00:40
|
[code]CREATE PROC TEST1ASSET NOCOUNT ONEXEC TEST2GOCREATE PROC TEST2ASSET NOCOUNT ONDECLARE @MODEL INT, @i INT, @Errors INTSELECT @i = 1, @Errors = 0WHILE @i <= 10 BEGIN IF @MODEL = 1 BEGIN EXEC TEST3 @MODEL SET @Errors = @Errors + SIGN(ABS(@@ERROR)) END IF @MODEL = 2 BEGIN EXEC TEST4 @MODEL SET @Errors = @Errors + SIGN(ABS(@@ERROR)) END IF @MODEL = 3 BEGIN EXEC TEST5 @MODEL SET @Errors = @Errors + SIGN(ABS(@@ERROR)) END IF @MODEL = 4 BEGIN EXEC TEST6 @MODEL SET @Errors = @Errors + SIGN(ABS(@@ERROR)) END IF @MODEL = 5 BEGIN EXEC TEST7 @MODEL SET @Errors = @Errors + SIGN(ABS(@@ERROR)) END IF @MODEL = 6 BEGIN EXEC TEST8 @MODEL SET @Errors = @Errors + SIGN(ABS(@@ERROR)) END IF @MODEL = 7 BEGIN EXEC TEST9 @MODEL SET @Errors = @Errors + SIGN(ABS(@@ERROR)) END SET @i = @i + 1 ENDSELECT @Errors[/code] N 56°04'39.26"E 12°55'05.63" |
 |
|
|
WoodHouse
Posting Yak Master
211 Posts |
Posted - 2009-08-05 : 03:09:07
|
| Hi thanks peso..Am not understand why you used SIGN and ABS please explain me..@@ERROR will get only error number right..i need error message also..how can i rewrite this... |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2009-08-05 : 03:23:57
|
[code]CREATE PROC TEST1ASSET NOCOUNT ONEXEC TEST2GOCREATE PROC TEST2ASSET NOCOUNT ONDECLARE @MODEL INT, @i INTDECLARE @Errors TABLE ( Description VARCHAR(1000) )SELECT @i = 1, @Errors = 0WHILE @i <= 10 BEGIN IF @MODEL = 1 BEGIN EXEC TEST3 @MODEL INSERT @Errors SELECT ERROR_MESSAGE() WHERE ERROR_NUMBER() <> 0 END IF @MODEL = 2 BEGIN EXEC TEST4 @MODEL INSERT @Errors SELECT ERROR_MESSAGE() WHERE ERROR_NUMBER() <> 0 END IF @MODEL = 3 BEGIN EXEC TEST5 @MODEL INSERT @Errors SELECT ERROR_MESSAGE() WHERE ERROR_NUMBER() <> 0 END IF @MODEL = 4 BEGIN EXEC TEST6 @MODEL INSERT @Errors SELECT ERROR_MESSAGE() WHERE ERROR_NUMBER() <> 0 END IF @MODEL = 5 BEGIN EXEC TEST7 @MODEL INSERT @Errors SELECT ERROR_MESSAGE() WHERE ERROR_NUMBER() <> 0 END IF @MODEL = 6 BEGIN EXEC TEST8 @MODEL INSERT @Errors SELECT ERROR_MESSAGE() WHERE ERROR_NUMBER() <> 0 END IF @MODEL = 7 BEGIN EXEC TEST9 @MODEL INSERT @Errors SELECT ERROR_MESSAGE() WHERE ERROR_NUMBER() <> 0 END SET @i = @i + 1 ENDSELECT *FROM @Errors[/code] N 56°04'39.26"E 12°55'05.63" |
 |
|
|
|
|
|