PDA

Ver la Versión Completa : Error en SP "Invalid colunm name"


Tauro78
19-02-2009, 18:05:07
hola a todos, he estado tratando de correr el siguiente SP en SQL SERVER pero me da error:

Invalid colunm name 'NOMBRE'
Invalid colunm name 'FECHA_VTO_DGI'
Invalid colunm name 'FECHA_VTO_BPS'
Invalid colunm name 'FECHA_VTO_PL_TRABAJO'


set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[SP_BUSCAR_EMPRESA]
-- Add the parameters for the stored procedure here
@SP_NOMBRE NVARCHAR(50) OUTPUT,
@RESULTADO INT OUTPUT,
@SP_FECHA_VTO_DGI DATETIME OUTPUT,
@SP_FECHA_VTO_BPS DATETIME OUTPUT,
@SP_FECHA_VTO_PL_TRABAJO DATETIME OUTPUT

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF EXISTS (SELECT NOMBRE, FECHA_VTO_DGI, FECHA_VTO_BPS, FECHA_VTO_PL_TRABAJO FROM EMPRESAS WHERE NOMBRE = @SP_NOMBRE)
BEGIN
SET @RESULTADO = 1
SET @SP_NOMBRE = NOMBRE
SET @SP_FECHA_VTO_DGI = FECHA_VTO_DGI
SET @SP_FECHA_VTO_BPS = FECHA_VTO_BPS
SET @SP_FECHA_VTO_PL_TRABAJO = FECHA_VTO_PL_TRABAJO
END
ELSE
SET @RESULTADO = 0
-- Insert statements for procedure here
END


desde ya muchas gracias.

ContraVeneno
19-02-2009, 18:17:03
En lugar de establecer el valor con "Set", asignales el valor en el mismo "select"


Select @sp_nombre= Nombre....
From empresas
Where Nombre = @SP_Nombre

ContraVeneno
19-02-2009, 18:36:48
yo tengo esto y me funciona muy bien:

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

-- Exec BuscaCliente 'Juanito'
CREATE PROCEDURE BuscaCliente
@Cliente varchar(20)
AS
Declare @Result bit

If Exists(Select Cliente From Clientes Where Cliente = @Cliente)
Begin
select @Result = 1
end else begin
Select @Result = 0
end

Select @Result as Resultado

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

Tauro78
19-02-2009, 19:17:00
hola, gracias por la ayuda, segui tu consejo e hice lo siguiente


set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[SP_BUSCAR_EMPRESA]
-- Add the parameters for the stored procedure here
@SP_NOMBRE NVARCHAR(50) OUTPUT,
@RESULTADO INT OUTPUT,
@SP_FECHA_VTO_DGI DATETIME OUTPUT,
@SP_FECHA_VTO_BPS DATETIME OUTPUT,
@SP_FECHA_VTO_PL_TRABAJO DATETIME OUTPUT

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF EXISTS (SELECT @SP_NOMBRE= NOMBRE, @SP_FECHA_VTO_DGI= FECHA_VTO_DGI, @SP_FECHA_VTO_BPS= FECHA_VTO_BPS,
@SP_FECHA_VTO_PL_TRABAJO= FECHA_VTO_PL_TRABAJO FROM EMPRESAS WHERE NOMBRE = @SP_NOMBRE)
BEGIN
SET @RESULTADO = 1
END
ELSE
SET @RESULTADO = 0
-- Insert statements for procedure here
END


pero me da error:

Mens 170, Nivel 15, Estado 1, Procedimiento SP_BUSCAR_EMPRESA, Línea 19
Line 19: Incorrect syntax near '='.

ContraVeneno
19-02-2009, 19:25:57
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

-- Exec BuscaCliente 'Juanito'
CREATE PROCEDURE BuscaCliente
@Cliente varchar(20)
AS
Declare @Result bit
Declare @Nombre varchar(20)

Select @Result = 1, @Nombre = Cliente
From Clientes
Where Cliente = @Cliente

Select IsNull(@result,0) as Resultado, @Nombre as Nombre

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

Tauro78
21-02-2009, 14:41:55
Hola, de esta forma me funciono, gracias.


set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON

GO

-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================

ALTERPROCEDURE [dbo].[SP_BUSCAR_EMPRESA]

-- Add the parameters for the stored procedure here

@SP_NOMBRE NVARCHAR(50) OUTPUT,

@RESULTADO INT OUTPUT,

@SP_FECHA_VTO_DGI DATETIME OUTPUT,

@SP_FECHA_VTO_BPS DATETIME OUTPUT,

@SP_FECHA_VTO_PL_TRABAJO DATETIME OUTPUT


AS
BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.

SET NOCOUNT ON;

IFEXISTS(SELECT NOMBRE, FECHA_VTO_DGI, FECHA_VTO_BPS, FECHA_VTO_PL_TRABAJO FROM EMPRESAS WHERE NOMBRE = @SP_NOMBRE)BEGIN
SET @RESULTADO = 1
SET @SP_NOMBRE =(SELECT NOMBRE FROM EMPRESAS WHERE NOMBRE = @SP_NOMBRE)
SET @SP_FECHA_VTO_DGI =(SELECT FECHA_VTO_DGI FROM EMPRESAS WHERE FECHA_VTO_DGI = @SP_FECHA_VTO_DGI)
SET @SP_FECHA_VTO_BPS =(SELECT FECHA_VTO_BPS FROM EMPRESAS WHERE FECHA_VTO_BPS = @SP_FECHA_VTO_BPS)
SET @SP_FECHA_VTO_PL_TRABAJO =(SELECT FECHA_VTO_PL_TRABAJO FROM EMPRESAS WHERE FECHA_VTO_PL_TRABAJO = @SP_FECHA_VTO_PL_TRABAJO)
END
ELSE
SET @RESULTADO = 0

-- Insert statements for procedure here

END