Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-02-2009
Tauro78 Tauro78 is offline
Miembro
 
Registrado: sep 2006
Posts: 88
Poder: 18
Tauro78 Va por buen camino
Error en procedimiento almacenado

hola he estado tratando de hacer un SP que verifique la existencia de un nombre y si encuentra una coincideincia me devuelva el nombre, si no lo encuentra me devuelve vacio, o sea @sp_nombre es entrada al SP y luego si ya existe ese nombre, me devuelve ese nombre en @sp_npombre como salida, si no existe ese nombre me devuelve @sp_npombre vacio.
Pero me da el siguiente error al correr la aplicacion.

ALTERPROCEDURE [dbo].[SP_EXISTE_EMPRESA]
-- Add the parameters for the stored procedure here
@SP_NOMBRE NVARCHAR(50) OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT NOMBRE FROM EMPRESAS
WHERE NOMBRE = @SP_NOMBRE
RETURN @SP_NOMBRE
-- Insert statements for procedure here
END

Database Server Error: SQL State: 4200, Server ErrorCode: 201
Procedure 'SP_EXISTE_EMPRESA' expects parameter '@SP_NOMBRE', wich was not supplied.
Responder Con Cita
  #2  
Antiguo 12-02-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código SQL [-]
Exec SP_Existe_Empresa 'Lonchería juanito'

¿esa instrucción te da error?
__________________

Responder Con Cita
  #3  
Antiguo 13-02-2009
Tauro78 Tauro78 is offline
Miembro
 
Registrado: sep 2006
Posts: 88
Poder: 18
Tauro78 Va por buen camino
Creo que lo que me da error es que al parecer cuando corro el programa, no se recibe el parametro esperado, lo que hago en el SP es volcar el valor del parametro con la instruccion RETURN @SP_NOMBRE (creo que return actua como INTO en firebird) y pasarlo a Delphi, pero no me doy cuenta que estoy haciendo mal cuando paso o recibo el parametro.
Responder Con Cita
  #4  
Antiguo 13-02-2009
Avatar de jcarteagaf
[jcarteagaf] jcarteagaf is offline
Miembro Premium
 
Registrado: abr 2006
Ubicación: La Paz, Bolivia
Posts: 651
Poder: 19
jcarteagaf Va por buen camino
En realidad RETURN en un Stored Procedure devuelve un valor entero para indicar el resultado de la ejecución (mas o menos como los .BAT del D.O.S.), si no se coloca devuelve 0.

Si lo que deseas es devolver el nombre de la empresa en una variable deberias usar algo asi:

Código SQL [-]
ALTER PROCEDURE [dbo][SP_EXISTE_EMPRESA]
@SP_NOMBRE NVARCHAR(50) OUTPUT
AS
BEGIN 
   SET NOCOUNT ON;
   SELECT @SP_NOMBRE = NOMBRE 
   FROM EMPRESAS
   WHERE NOMBRE = @SP_NOMBRE 
   IF @SP_NOMBRE IS NULL     -- Si no existe la variable tendra Valor NULL
      SET @SP_NOMBRE=''   -- Entonces le asignamos un string vacio
END

Ahora bien en delphi tu llamada seria asi

Código Delphi [-]
spExisteEmpresa.parameters.parambyname('@SP_NOMBRE').value := 'Mi_Empresa';
spExisteEmpresa.ExecProc;
if spExisteEmpresa.parameters.parambyname('@SP_NOMBRE').value = '' then
  ShowMessage('No existe');
else
  ShowMessage('Existe');

Lo anterior usando el TADOStoredProc

Espero que te ayude. Saludos

Última edición por jcarteagaf fecha: 13-02-2009 a las 11:46:28.
Responder Con Cita
  #5  
Antiguo 13-02-2009
Tauro78 Tauro78 is offline
Miembro
 
Registrado: sep 2006
Posts: 88
Poder: 18
Tauro78 Va por buen camino
gracias por la info, ya no me arroja más ese error, sin embargo ahora me tira
el siguiente error: 'SQLSPExiste_Empresa: Cursor not returned from query'.

A que se debe este error, creo que puede ser por el tema de la bidireccion de los controles dbExpress, tal vez me esta faltando algun componente intermedio, desde ya gracias.
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
Error en Procedimiento Almacenado Alejandro73 SQL 1 20-03-2007 17:45:57
Procedimiento almacenado no captura error Carlos Hurtado Firebird e Interbase 0 27-01-2007 15:07:39
Procedimiento Almacenado pichi Vignola Firebird e Interbase 2 17-08-2006 01:07:38
Captura de error en Procedimiento almacenado lucasarts_18 Firebird e Interbase 11 28-12-2005 15:02:42
procedimiento Almacenado Gabriel A Reyes Conexión con bases de datos 4 19-06-2003 00:14:31


La franja horaria es GMT +2. Ahora son las 23:57:20.


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