Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Procedimiento almacenado en SQL Server (https://www.clubdelphi.com/foros/showthread.php?t=63215)

Tauro78 03-02-2009 20:58:20

Procedimiento almacenado en SQL Server
 
hola, tengo un SP que deberia chequear si existe el nombre de una empresa
antes de darla de alta, entonces si ya existe una empresa con ese nombre
lo guarda en la variable @nombre, luego pregunto si la variable me devuelve un valor no nulo entonces ya existe una empresa con ese nombre, pero el SP me da el siguiente error:

Mens 208, Nivel 16, Estado 6, Procedimiento SP_EXISTE_EMPRESA, Línea 17
Invalid object name 'dbo.SP_EXISTE_EMPRESA'.

estoy usando Microsoft SQL Server Managment Studio Express, desde ya
muchas gracias.

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


luisgutierrezb 03-02-2009 21:04:46

pusiste todo el codigo del SP?? el error menciona una linea 17 y todo lo que pusiste son 14 lineas, ya pudiste correr 1 vez el procedimiento? esto porque usas el Alter pero si no existe no lo modifica, necesitas primero el create procedure y despues el Alter

Tauro78 03-02-2009 21:23:30

Este es el codigo completo del SP, gracias

-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATEPROCEDURE [dbo].[SP_EXISTE_EMPRESA]
-- Add the parameters for the stored procedure here
@SP_NOMBRE NVARCHAR(50),
@NOMBRE
NVARCHAR(50) OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT EMPRESAS.NOMBRE FROM EMPRESAS
WHERE EMPRESAS.NOMBRE = @SP_NOMBRE
RETURN @NOMBRE
-- Insert statements for procedure here
END
GO

Neftali [Germán.Estévez] 04-02-2009 09:10:59

Pues yo lo he probado y funciona perfectamente, salvo por una cosa:
* En el CREATEPROCEDURE te falta un espacio entre ambas palabras (supongo que es error de transcripción)

Supongo además que cuando ya está creado, utilizas ALTER PROCEDURE en lugar de CREATE PROCEDURE para modificarlo. Por lo demás lo dicho, a mi me funciona bien.

ContraVeneno 04-02-2009 16:29:33

Salvo el espacio en "CREATE PROCEDURE", a mi también me funcionó bien.

jcarteagaf 04-02-2009 17:37:29

Si el procedimiento no existe deberias usar CREATE PROCEDURE en vez de ALTER PROCEDURE y ademas creo que deberias asignar el valor a tu variable de salida:


Código SQL [-]
CREATE PROCEDURE [dbo][SP_EXISTE_EMPRESA] 
-- Add the parameters for the stored procedure here
@SP_NOMBRE NVARCHAR(50), 
@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 = EMPRESAS.NOMBRE FROM EMPRESAS 
  WHERE EMPRESAS.NOMBRE = @SP_NOMBRE
  RETURN @NOMBRE
 
END

Saludos

mierda 04-02-2009 17:42:17

Pa mi q te falta esto
 
SELECT @nombre = EMPRESAS.NOMBRE FROM EMPRESAS
WHERE EMPRESAS.NOMBRE = @SP_NOMBRE

Un saludo


poliburro 06-02-2009 16:45:09

Ese error indica que estás tratando de modificar un SP que no existe,
Arega el siguiente encabezado:

Código SQL [-]
 
IF EXISTS (SELECT name 
    FROM   sysobjects 
    WHERE  name = N'SP_EXISTE_EMPRESA' 
    AND    type = 'P')
    DROP PROCEDURE SP_EXISTE_EMPRESA
GO
 
CREATE PROCEDURE SP_EXISTE_EMPRESA
.....


Saludos.


La franja horaria es GMT +2. Ahora son las 21:58:09.

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