Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-03-2007
fcios fcios is offline
Miembro
 
Registrado: jul 2003
Posts: 108
Poder: 21
fcios Va por buen camino
Question EXCEPTION con parametros u otro comando para abortar

Utilizo firebird 1.5

¿ se puede definir una EXCEPTION con parametros ?
¿ como ?
ó ¿ que otro comando puedo utilizar para abortar ?

Al llamar a una EXCEPTION le quiero mandar el mensaje a mostrar

gracias
Responder Con Cita
  #2  
Antiguo 31-03-2007
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola fcios

Cita:
Al llamar a una EXCEPTION le quiero mandar el mensaje a mostrar
Asi puedes definir la exception y el mensaje que enviará

Código SQL [-]
   CREATE EXCEPTION mi_exception_1 “Mi mensaje de error 1.”;

Dentro de un procedimiento o función puedes levantar la exception así:

Código SQL [-]
  IF (VAR1>0) THEN
    EXCEPTION  mi_exception_1;

Saludos
Responder Con Cita
  #3  
Antiguo 31-03-2007
fcios fcios is offline
Miembro
 
Registrado: jul 2003
Posts: 108
Poder: 21
fcios Va por buen camino
Gracias Hector,
lo que quiero mostrar es distinto para cada registro y no me parece correcto crear una excepcion para cada valor de registro,

lo que quiero hacer es llamar a una exepcion con un parametro, por ejemplo con el valor de un campo,

o abortar un trigger de un delete y mostrar el valor de un campo

ej.
CREATE EXCEPTION mi_exception_1(PARAMETRO1 string);

y la usaria:
IF (VAR1>0) THEN
EXCEPTION mi_exception_1(CAMPO2);

gracias
Responder Con Cita
  #4  
Antiguo 31-03-2007
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Puedes crear una exception con un mensaje de error genérico, por ejemplo:

Código SQL [-]
 CREATE EXCEPTION ERR_GUARDAR_REG "Error al guardar el registro : ";

y después le concatenas otros mensajes dependiendo del tipo de error

Código SQL [-]
  IF A>B THEN
   EXCEPTION ERR_GUARDAR_REG 'Otros mensajes' || ' A es mayor a B';

  IF A=B THEN
   EXCEPTION ERR_GUARDAR_REG 'Otros mensajes' || ' A es igual a B';

Saludos
Responder Con Cita
  #5  
Antiguo 31-03-2007
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Por supuesto esa concatenación puede incluir algún campo de tus tablas, si es VARCHAR() lo concatenas directamente, si es de otro tipo puedes aplicar CAST();

Código SQL [-]
   EXCEPTION ERR_GUARDAR_REG 'Error en CampoCadena ' || CAMPO_CADENA ;

   EXCEPTION ERR_GUARDAR_REG 'Error en CampoInteger ' || CAST(CAMPO_INTEGER AS VARCHAR(14)) ;

Saludos
Responder Con Cita
  #6  
Antiguo 31-03-2007
fcios fcios is offline
Miembro
 
Registrado: jul 2003
Posts: 108
Poder: 21
fcios Va por buen camino
Eso es lo que necesito pero no lo puedo hacer funcionar

tengo
CREATE EXCEPTION ERR_GUARDAR_REG 'Error al guardar el registro : ';

y la llamo con
EXCEPTION ERR_GUARDAR_REG 'Error en CampoCadena ' || CAMPO_CADENA ;

pero lo unico que me muestra es el mensaje de la excepcion 'Error al guardar el registro : '

¿ que me falta ?

gracias
Responder Con Cita
  #7  
Antiguo 31-03-2007
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Acabo de hacer esta prueba y funciona

Código SQL [-]
CREATE PROCEDURE NEW_PROCEDURE (
    A INTEGER,
    B INTEGER)
AS
begin
  IF (A>B) THEN
    EXCEPTION ERR_GENERICO  'A es mayor a B';

  IF (A=B) THEN
    EXCEPTION ERR_GENERICO  'A es igual a B';
end^

Esto lo ejecute en línea de comandos con ISQL desde la carpeta de FireBird 2.0

Código:
SQL> execute procedure new_procedure(0,0);
Statement failed, SQLCODE = -836
exception 1
-ERR_GENERICO
-A es igual a B
-At procedure 'NEW_PROCEDURE'
SQL>
Responder Con Cita
  #8  
Antiguo 31-03-2007
fcios fcios is offline
Miembro
 
Registrado: jul 2003
Posts: 108
Poder: 21
fcios Va por buen camino
como tenes definido el CREATE EXCEPTION ERR_GENERICO ?

si lo defino sin el mensaje me da error en ;
CREATE EXCEPTION ERR_GENERICO;

(estoy utilizando FB 1.5 y actualmente no puedo pasar a la 2.0 )
gracias
Responder Con Cita
  #9  
Antiguo 31-03-2007
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Probablemente sea por la versión, la exception la creo de la manera habitual

Código SQL [-]
CREATE EXCEPTION ERR_GENERICO 'Error: ';
Responder Con Cita
  #10  
Antiguo 31-03-2007
fcios fcios is offline
Miembro
 
Registrado: jul 2003
Posts: 108
Poder: 21
fcios Va por buen camino
bueno muchas gracias Hector, si se te ocurre otra idea bienvenida será, gracias
Responder Con Cita
  #11  
Antiguo 31-03-2007
fcios fcios is offline
Miembro
 
Registrado: jul 2003
Posts: 108
Poder: 21
fcios Va por buen camino
Smile

PERDON PERDON no me funcionaba porque la estaba disparando en otro triggger

ESTO FUNCIONA CORRECTAMENTE

CREATE EXCEPTION ERR_GUARDAR_REG 'Error al guardar el registro : ';

y la llamo con
EXCEPTION ERR_GUARDAR_REG CAMPO_CADENA ;

si la lllamo con un string mas campo_cadena me da error
EXCEPTION ERR_GUARDAR_REG 'Error en CampoCadena ' || CAMPO_CADENA ;

Pero con esto es suficiente
MUCHAS GRACIAS HECTOR
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
comando en sql para comparar cadenas karla SQL 2 30-12-2006 22:55:12
Comando para Mirar el Uso de la CPU ggram2 Linux 2 07-04-2006 01:08:28
Comando EXPLORER y parámetros con comodines. Cabanyaler API de Windows 0 14-02-2005 10:15:33
Comando para EPSON TMU 200 gendelphi Impresión 1 30-12-2003 00:57:12
Traspasar valores de un form a otro por parametros andre Varios 3 05-06-2003 22:44:16


La franja horaria es GMT +2. Ahora son las 20:22:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi