Bom dia, estou com problemas ao tentar excluir 1 registro, quando existe, mas ao executar só me mostra a mensagem mas não exclui.
Essa é minha query que executo dentro de um stored procedure onde os parâmetros são enviados de uma aplicação feita em estudos visuais
if(@tipo=11)begin
--execute AUTONORT_UBICACION_PRODUCTOS 9,'001','001','A','01','F','004','04A'
BEGIN TRY--en caso ocurra un error inesperado
BEGIN TRANSACTION
DECLARE @FLAG_DELETE CHAR(1) = ''
set @idUbicacion=RTRIM(@IDZONA)+RTRIM(@IDPAS)+'-'+RTRIM(@IDEST)+'-'+ltrim(rtrim(@IDFILCOL))
if not exists(select u.IDUBICACION from PRODUCTO_UBICACION u where u.IDSUCURSAL=RTRIM(@IDSUC) and u.IDALMACEN=RTRIM(@IDALM) and u.IDPRODUCTO=RTRIM(@IDPRODUCTO))begin
insert into PRODUCTO_UBICACION(idempresa,idsucursal,idalmacen,IDPRODUCTO,IDUBICACION,SINCRONIZA,FECHACREACION)
values(@IDEMP,RTRIM(@IDSUC),RTRIM(@IDALM),RTRIM(@IDPRODUCTO),@idUbicacion,'L',GETDATE())
end
else begin
SET @error = 'YA TIENE UNA ASIGNACION REGISTRADA''YA CUENTA CON UNA ASIGNACION REGISTRADA,PERO NO CUMPLE CON EL ESTANDAR ... SE PROCEDERA A ELIMINA ESTE REGISTRO.
INTENTE NUEVAMENTE LA ASGINACION DEL PRODUCTO'
DELETE
FROM PRODUCTO_UBICACION
WHERE IDSUCURSAL=RTRIM(@IDSUC) and IDALMACEN=RTRIM(@IDALM) and IDPRODUCTO=RTRIM(@IDPRODUCTO)
raiserror(@error,16,1)
return(99)
end
COMMIT TRANSACTION
END TRY
BEGIN CATCH---mostrar mensaje de error de la transicion
set @error=ERROR_MESSAGE()
raiserror( @error,16,1)
ROLLBACK TRANSACTION
END CATCH
end
Talvez eu esteja aplicando mal a sintaxe, alguma outra ideia de como realizar esse processo.
O
RAISERROR
afterDELETE
entrará no bloco CATCH e reverterá a transação. ARETURN
instrução após oRAISERROR
não será executada.