早上好,当我尝试删除 1 条记录时遇到问题,当它存在时,但在执行时只显示消息但不会删除它。
这是我在存储过程中执行的查询,其中参数是从视觉研究中的应用程序发送的
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
也许我误用了语法,以及有关如何执行此过程的任何其他想法。
RAISERROR
之后将DELETE
进入 CATCH 块并回滚事务。后面的RETURN
语句RAISERROR
不会被执行。