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 25-07-2010
dant dant is offline
Registrado
 
Registrado: jul 2010
Posts: 3
Poder: 0
dant Va por buen camino
Post Error de sintaxis al ejecutar procedimiento almacenado en Firebird 2.1.3

Hola a todos; soy nuevo en este foro y estoy recien aprendiendo la sintaxis SQL en firebird. Tengo el siguiente procedimiento almacenado el cual me permite ingresar nuevos registros verificando antes que estos no se repitan ( comprobando el campo código "CODPER" ):

SET TERM ^ ;
CREATE PROCEDURE INGRESARPER (
CODPER char(5),
APEPER varchar(25),
NOMPER varchar(25),
DNIPER char(8),
FNACPER date,
DIRPER varchar(30),
PROVPER varchar(25),
TELFPER varchar(12),
CELPER varchar(16),
EMAILPER varchar(30),
CARGPER varchar(25),
FINGPER date,
FCESPER date,
PLAPER char(1),
FONDPENSPER varchar(25),
CODESSPER varchar(15) )
AS
declare variable existe smallint;
BEGIN
SELECT COUNT(*) FROM REGISTROSPER WHERE REGISTROSPER.COD_PER = :codper INTO :existe;
IF (:existe = 0) THEN BEGIN
INSERT INTO REGISTROSPER VALUES (:codper, :apeper, :nomper, :dniper, :fnacper, :dirper, rovper, :telfper, :celper, :emailper, :cargper,
:fingper, :fcesper, laper, :fondpensper, :codessper);
END
END^
SET TERM ; ^

El problema es que al momento de ejecutar el procedimiento almacenado a través de esta sintaxis:

EXECUTE PROCEDURE INGRESARPER('T1000', 'Pérez Aguilar', 'Carlos Daniel', '12345897', '25/05/1990', 'Av. Larco # 846', 'Trujillo', '(044)-425810', '(044)948-654-127', 'pacd@gmail.com', 'Administrador', '15/02/2010', '15/02/2012', '1', 'SNP', 'SDF789RTY156FG5');


Me da el siguiente mensaje de error:

Message: isc_dsql_execute2 failed
SQL Message : -413
Overflow occurred during data type conversion.
Engine Code : 335544334
Engine Message :
conversion error from string "25/05/1990"

Al parecer el problema es que estoy dando mal los parámetros para los campos de tipo DATE -> conversion error from string "25/05/1990", pero no se como solucionar eso.

Agradeceria su aporte.
Responder Con Cita
  #2  
Antiguo 25-07-2010
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
Hola

Debes poner las fechas en formato mm/dd/yy o mm/dd/yyyy

Código SQL [-]
EXECUTE PROCEDURE INGRESARPER('T1000', 'Pérez Aguilar', 'Carlos Daniel', '12345897', '05/25/1990', 'Av. Larco # 846', 'Trujillo', '(044)-425810', '(044)948-654-127', 'pacd@gmail.com', 'Administrador', '02/15/2010', '02/15/2012', '1', 'SNP', 'SDF789RTY156FG5');

Saludos
Responder Con Cita
  #3  
Antiguo 26-07-2010
dant dant is offline
Registrado
 
Registrado: jul 2010
Posts: 3
Poder: 0
dant Va por buen camino
Smile [Resuelto]

Muchas gracias man algo tan simple jejeje...
Responder Con Cita
  #4  
Antiguo 26-07-2010
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Tambien puedes dar mormato a la fecha con puntos barras o guiones:
dd.mm.yy o dd.mm.yyyy
mm/dd/yy o mm/dd/yyyy
yy-mm-dd o yyyy-mm-dd
Responder Con Cita
  #5  
Antiguo 26-07-2010
Gallosuarez Gallosuarez is offline
Miembro
 
Registrado: feb 2007
Posts: 92
Poder: 18
Gallosuarez Va por buen camino
Talking Opinión personal...

dant:

Según mi opinión personal, lo que estás tratando de hacer es un poco ineficiente. Mira yo lo haría de la siguiente forma:
1.- Crear mi base de datos con el siguiente juego de caracteres: ISO8859_1 (que es el juego de caracteres para la mayoría de los idiomas occidentales, incluyendo el Español, por supuesto).
2.-Crear los campos de Nombre, Apellido Paterno y Apellido Materno con el juego de caracteres mencionado arriba y utilizar el siguiente collate: ES_ES_CI_AI (Español de España, Caracter Insensitive, Accent Insentive), es decir tus campos no van a ser sensibles a mayúsculas ni minúsculas ni a los acentos. Por ejemplo, el siguiente nombre: Gerardo Suárez Trejo, sería exactamente igual a GERARDO Suarez Trejo (me explico, no importan las mayúsculas ni los acentos).
3.- Crear un campo computado con la concatenación de Apellido Paterno + Apellido Materno + Nombre (puedes calcular este campo con las valores antes capturados y es mucho mas cómodo para los usuarios).
4.- Creas un índice con el campo calculado (tu búsquedas sería de lo mas rápido que puedas imaginar, incluso puedes hacer búsquedas parciales, por ejemplo nombre_cmplto = 's', o nombre_cmplto = 'sua', etc. (la búsqueda automáticamente utilizaría el índice antes mencionados lo cual nos traería muchos beneficios en cuanto a velocidad se refiere).
5.-Creas un disparador (trigger before insert or update), y aquí haces una búsqueda para saber si existe el nombre_cmplto antes de hacer la inserción en la BD)
anexo un pequeño ejemplo que hice para una Escuela.
Código SQL [-]
CREATE OR ALTER trigger alumnos_biu0 for alumnos
active before insert or update position 0
AS
BEGIN
  IF(NEW.ID IS NULL) THEN
    NEW.ID = GEN_UUID();
  /* Quita espacios en blanco al inicio y al final del campo */
  NEW.NOMBRE = TRIM(NEW.NOMBRE);
  /* Quita espacios en blanco y se asegura que los Apellidos no contengan un valor NULL */
  NEW.A_PATERNO = COALESCE(TRIM(NEW.A_PATERNO), '');
  NEW.A_MATERNO = COALESCE(TRIM(NEW.A_MATERNO), '');
  /* No permite que haya Alumnos repetidos */
  IF (EXISTS(
    SELECT 1
    FROM ALUMNOS
    WHERE NEW.ID <> ID AND NEW.NOMBRE_CMPLTO = NOMBRE_CMPLTO)) THEN
      EXCEPTION ALUMNO_REPETIDO;
END

Saludos,
Gerardo Suárez Trejo

PD. No dejes de platicarnos como te fue...
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
Procedimiento Almacenado de DBF a FireBird sierraja Firebird e Interbase 4 05-09-2007 19:04:41
ejecutar Procedimiento almacenado en SQL Server, Intraweb. Roilo Internet 9 25-07-2007 18:01:32
Ejecutar Procedimiento Almacenado en Trigger AGAG4 SQL 16 21-09-2004 03:27:47
Ejecutar un Procedimiento almacenado saul saldaña MS SQL Server 1 03-08-2004 21:20:30
Como Ejecutar Un Query Desde Un Procedimiento Almacenado multisof Firebird e Interbase 2 04-11-2003 06:15:28


La franja horaria es GMT +2. Ahora son las 01:34:30.


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