Manejo de error en sql

Hola,
tengo una duda y quería saber si alguien sabe que puede estar ocurriendo,
el tema es que tengo un sp a que llama a uno b ej
proc a
AS
begin Tran
EXEC @RESULTADO= B PARAM1, PARAM2
IF @RESULTADO = 1
BEGIN
COMMIT TRAN
RETURN 1
END
ELSE
BEGIN
ROLLBACK TRAN
RETURN -1
END
GO
ENTONCES SUPONGAMOS QUE DENTRO DEL SP B OCURRE ESTE ERROR!!
INSERT INTO @TABLA VALUES (99999999999, 'ESTO PRODUCE OVER FLOW')
Esto produce un error de over flow ya que el campo numérico de la tabla supongamos que acepta 5 dígitos numéricos
IF @@ERROR <> 0 GOTO MAL
MAL:
RETURN -20
Bueno el tema es que el store a reconoce el error de b y pone en el return -1 y hace el rollback, pero este store a es llamado desde una componente en vb6 con ado y este recibe como error 0 tengo una aplicación que recoge los errores y los informa por mail y este muestra como salida -1, pero la componente recibe 0
¿Sabes qué puede ocurrir?

1 respuesta

Respuesta
1
Este problema lo sufrí yo mismo, utilizando VB5 pero con RDO en vez de con ADO. Llegue a la conclusión de que era un bug del controlador ODBC, ya que siempre ocurría con los cursores definidos del lado ODBC y no con los del lado servidor. Creía que esto se habría solucionado con ADO, pero veo que sigue teniendo un comportamiento anómalo.
Nunca conseguí solucionarlo, ni encontré documentación alguna al respecto.
Opte por tomar otro camino, y este era tratar el error con un parámetro de salida, distinto al parámetro (0) y considerar sus valores en la rutina de salida de la rutina / función VB. En la mayoría de los casos suplí este error con esta estrategia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas