Click here to Skip to main content
15,915,336 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I am getting Goto Error even i have labeled..

Msg 133, Level 15, State 1, Line 79
A GOTO statement references the label 'ERROR_HANDLER' but the label has not been declared.

Error Handler is displaying check format table at the end it is working fine but as goto is throwing error to error_handler Nodups should not have been printed and created.

Thanks in advance.

What I have tried:

SQL
-------- FONM --------

ALTER PROCEDURE USP_FONM_16_FILES
(
@COMMAND NVARCHAR (MAX) 		,
@DBNAME NVARCHAR(MAX) 			,
@FORMAT_TABLE NVARCHAR (MAX) 	,
@FORMAT_NODUPS NVARCHAR (MAX)	--,
--@MAX_IDENTITY NVARCHAR (MAX)
)

AS 
BEGIN 

IF @COMMAND =N'HOMEOWNER'

BEGIN

DECLARE @SRC_HM_DATA_TYPE NVARCHAR(MAX)
SET @SRC_HM_DATA_TYPE=N''+
CONCAT('
BEGIN
IF EXISTS (SELECT [SRC_HM],DATA_TYPE FROM ',@DBNAME,'..',@FORMAT_TABLE,' WHERE [SRC_HM]=''1'' AND DATA_TYPE=''D'')
   PRINT ''SRC_HM=1 AND DATA_TYPE = D''
ELSE
GOTO ERROR_HANDLER;
END'
)
END

Begin
DECLARE @ERROR_HANDLER NVARCHAR(MAX)
SET @ERROR_HANDLER=N''+
CONCAT
(
	'ERROR_HANDLER:',
'
	Print ''check format table '''
)
End
BEGIN

DECLARE @REMOVE_NODUPS NVARCHAR (MAX)
PRINT '-- REMOVE DUPLICATES -- '		
SET @REMOVE_NODUPS=N''+

CONCAT(
	'IF OBJECT_ID (','''',@FORMAT_NODUPS,'''',',','''','U','''',') IS NOT NULL DROP TABLE ', @DBNAME,'..',@FORMAT_NODUPS
		,'
;WITH SAMPLECTE
AS 
(
	SELECT A.*, ROW_NUMBER () OVER ( PARTITION BY FIRST_NAME, LAST_NAME, ADDRESS, ZIP ORDER BY FIRST_NAME ) AS RNUM
	FROM ', @DBNAME,'..',@FORMAT_TABLE,' A
)
SELECT * INTO ', @DBNAME,'..',@FORMAT_NODUPS,'
FROM SAMPLECTE WHERE RNUM=1'
	)
END
		
	PRINT @SRC_HM_DATA_TYPE
	EXEC (@SRC_HM_DATA_TYPE)
	PRINT @REMOVE_NODUPS
	EXEC (@REMOVE_NODUPS)
	PRINT @ERROR_HANDLER
	EXEC (@ERROR_HANDLER)

END	

-- Output --

-- REMOVE DUPLICATES -- 

BEGIN
IF EXISTS (SELECT [SRC_HM],DATA_TYPE FROM prac..test_format1 WHERE [SRC_HM]='1' AND DATA_TYPE='D')
   PRINT 'SRC_HM=1 AND DATA_TYPE = D'
ELSE
GOTO ERROR_HANDLER;
END
Msg 133, Level 15, State 1, Line 77
A GOTO statement references the label 'ERROR_HANDLER' but the label has not been declared.
IF OBJECT_ID ('Test_format_nodups','U') IS NOT NULL DROP TABLE prac..Test_format_nodups
;WITH SAMPLECTE
AS 
(
	SELECT A.*, ROW_NUMBER () OVER ( PARTITION BY FIRST_NAME, LAST_NAME, ADDRESS, ZIP ORDER BY FIRST_NAME ) AS RNUM
	FROM prac..test_format1 A
)
SELECT * INTO prac..Test_format_nodups
FROM SAMPLECTE WHERE RNUM=1

(5 rows affected)
ERROR_HANDLER:
	Print 'check format table '
check format table 

--its working
Posted
Updated 11-Oct-18 2:24am
v2
Comments
CHill60 3-Oct-18 11:09am    
Error_Handler is not declared in the SQL @SRC_HM_DATA_TYPE which is run in a separate session to @ERROR_HANDLER
Member 13138564 5-Oct-18 5:35am    
How to solve it ?

1 solution

I didn't see your reply as you didn't use "Reply" otherwise I would have answered this sooner.

Concatenate all of the SQL into a single Exec...
SQL
DECLARE @FinalSQL NVARCHAR(MAX)
SET @FinalSQL = @SRC_HM_DATA_TYPE + ' ' + @REMOVE_NODUPS + ' ' + @ERROR_HANDLER
EXEC (@FinalSQL)
The spaces might not be necessary but don't do any harm
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900