Control errores sql 2000
Publicado por Miguel (10 intervenciones) el 24/11/2009 10:21:47
SELECT @SQL='DELETE FROM '+@STABLA+' WHERE RIGHT (XSECCION_ID,1) = '''+@SECCION+''''
EXEC (@SQL)
SELECT @MYERROR = @@ERROR, @MYROWCOUNT = @@ROWCOUNT
IF @MYERROR = 208 OR @MYERROR = 207
BEGIN
SELECT @WERROR = 0
SELECT @SQL='UPDATE '+@DBNAME+'.IMP.ADV_DEPURAR_TAB SET XDEPURADO=1 WHERE XTABLA_ID='''+@STABLA+''''
EXEC (@SQL)
CONTINUE
END
ELSE
IF @MYERROR<>0
BEGIN
SELECT @WERROR = -1
CONTINUE
END
IF @MYERROR = 0 AND @MYROWCOUNT = 0
BEGIN
SELECT @WERROR = 0
SELECT @SQL='UPDATE '+@DBNAME+'.IMP.ADV_DEPURAR_TAB SET XDEPURADO=1 WHERE XTABLA_ID='''+@STABLA+''''
EXEC (@SQL)
END
Este código está dentro de un cursor que obtiene el valor de @STABLA y lo que intento es que si me provoca error la instrucción DELETE me continue por el siguiente registro, pero se me corta la ejecución.
Este SP se ejecuta desde un trabajo programado.
EXEC (@SQL)
SELECT @MYERROR = @@ERROR, @MYROWCOUNT = @@ROWCOUNT
IF @MYERROR = 208 OR @MYERROR = 207
BEGIN
SELECT @WERROR = 0
SELECT @SQL='UPDATE '+@DBNAME+'.IMP.ADV_DEPURAR_TAB SET XDEPURADO=1 WHERE XTABLA_ID='''+@STABLA+''''
EXEC (@SQL)
CONTINUE
END
ELSE
IF @MYERROR<>0
BEGIN
SELECT @WERROR = -1
CONTINUE
END
IF @MYERROR = 0 AND @MYROWCOUNT = 0
BEGIN
SELECT @WERROR = 0
SELECT @SQL='UPDATE '+@DBNAME+'.IMP.ADV_DEPURAR_TAB SET XDEPURADO=1 WHERE XTABLA_ID='''+@STABLA+''''
EXEC (@SQL)
END
Este código está dentro de un cursor que obtiene el valor de @STABLA y lo que intento es que si me provoca error la instrucción DELETE me continue por el siguiente registro, pero se me corta la ejecución.
Este SP se ejecuta desde un trabajo programado.
Valora esta pregunta


0