Почему я получаю ошибку goto..
Я получаю ошибку Goto, даже если я помечен..
Msg 133, Уровень 15, Состояние 1, Строка 79
Оператор GOTO ссылается на метку "ERROR_HANDLER", но эта метка не была объявлена.
Обработчик ошибок отображает таблицу формата проверки в конце она работает нормально, но так как goto выбрасывает ошибку в error_handler Nodups не должны были быть напечатаны и созданы.
Заранее спасибо.
Что я уже пробовал:
-------- 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
CHill60
Error_Handler не объявляется в SQL @SRC_HM_DATA_TYPE, который запускается в отдельном сеансе для @ERROR_HANDLER
Member 13138564
Как ее решить ?