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-10-2005
XBart XBart is offline
Miembro
 
Registrado: sep 2005
Posts: 23
Poder: 0
XBart Va por buen camino
Problema con procedimiento almacenado

Gracias por adelantado por su atencion, ahora, el problema es el siguiente:

uso firebird 1.5 y delphi sp2 con ibx

tengo un procedimiento almacenado(SP) el cual debe de verificar si una ciudad ya existe en la base de datos, en su respectiva tabla ciudad, y debe de regresar un resultado, el asunto es que no me regresa el resultado correcto, supongo que por mala escritura de la SP, a qui pongo el codigo de la sp, agradesco de antemano cualquier ayuda....

Código:
 SET TERM ^ ;
 
 CREATE PROCEDURE SP_VERIFICA_CIUDAD (
 	NOMBRE VARCHAR(40))
 RETURNS (
 	RESULTADO INTEGER)
 AS
 DECLARE VARIABLE CODIGO INTEGER;
 DECLARE VARIABLE NOMBREVAR VARCHAR(10);
 begin
   SELECT CIUDADKEY, CIUDADNOMBRE FROM CCIUDAD
   WHERE CIUDADNOMBRE=:nombre
   into :codigo, :nombrevar;
   if (nombrevar='') then
 	 resultado=0;
   else
 	 resultado=1;
 
   suspend;
 end
 ^
 
 SET TERM ; ^
Responder Con Cita
  #2  
Antiguo 25-10-2005
sanxpue sanxpue is offline
Miembro
 
Registrado: jul 2003
Posts: 196
Poder: 21
sanxpue Va por buen camino
Talking Saludos

Tu procedimiento esta en lo correcto nada mas que no es lo mismo Nulo que vacio y tu estas tratando de comparar vacio con Nulo, cuando la ciudad no la encuentra el valor te regresa Nulo
Código:
SET TERM ^ ;
 
 CREATE PROCEDURE SP_VERIFICA_CIUDAD (
 	NOMBRE VARCHAR(40))
 RETURNS (
 	RESULTADO INTEGER)
 AS
 DECLARE VARIABLE CODIGO INTEGER;
 DECLARE VARIABLE NOMBREVAR VARCHAR(10);
 begin
   SELECT CIUDADKEY, CIUDADNOMBRE FROM CCIUDAD
   WHERE CIUDADNOMBRE=:nombre
   into :codigo, :nombrevar;
   if (nombrevar IS NULL) then
      resultado=0;
   else
      resultado=1;
 
   suspend;
 end
 ^
 
 SET TERM ; ^
Saludos
__________________
saludos desde Puebla Mexico..
asanxt@hotmail.com
"como siempre a sus ordenes y siempre con buena cara"
'lolita me excitas, perversa piel de melocotón'
Responder Con Cita
  #3  
Antiguo 25-10-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Prueba así:

Código SQL [-]
create procedure SP_Verifica_Ciudad (
  Nombre varchar(40))
returns (
  Resultado integer)
as
  declare variable Codigo integer;
begin
  select CIUDADKEY from CCIUDAD
  where CIUDADNOMBRE = :Nombre
  into :Codigo;
  if (Codigo is Null) then
    Resultado = 0;
  else
    Resultado = 1;
  suspend;
end

Edit: Veo que en lo que tardé en formar mi mensaje te respondieron... Pero bueno, la versión que te pongo del procedimiento usa una variable menos, la cual tu declaras pero no haces uso de ella, a menos que hayas puesto una versión reducida de tu procedimiento.


Saludos...
Responder Con Cita
  #4  
Antiguo 27-10-2005
Avatar de Spynosa
Spynosa Spynosa is offline
Miembro
 
Registrado: nov 2004
Ubicación: Ecija - Sevilla
Posts: 99
Poder: 20
Spynosa Va por buen camino
Prueba con esto:
Código SQL [-]
 SET TERM ^ ;
  
  CREATE PROCEDURE SP_VERIFICA_CIUDAD (
      NOMBRE VARCHAR(40))
  RETURNS (
      RESULTADO INTEGER)
  AS
 
  begin
 
    if (exists (SELECT CIUDADNOMBRE FROM CCIUDAD
    WHERE CIUDADNOMBRE=:nombre)) then
             resultado=1;
    else
       resultado=0;
 
    suspend;
  end
  ^
  
  SET TERM ; ^
a ver si te sirve
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


La franja horaria es GMT +2. Ahora son las 11:52:59.


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