¿Por qué siempre devuelve 0?

15/10/2006 - 00:31 por dgironal | Informe spam
Microsoft SQL Server 2000
Visual Basic .NET

Creo el comando, inicializo parámetros y cuando

cmd.ExecuteNonQuery()
flag = DirectCast(cmd.Parameters("@ok").Value, Boolean)

¿Por qué SIEMPRE ME DEVUELVE CERO (0), falso?
Cuando existen valores que debería devolver 1 (true)

El select count(*) LO CALCULA BIEN (comprobado), no entiendo !!!!

CREATE PROCEDURE PlazasOcupadas
(
@tipo int,
@dia smalldatetime,
@temporada as int,

@disponibles as int,
@solicitadas as int,

@ok bit OUTPUT
)

AS

DECLARE @ocupadas INT

SELECT @ocupadas (
SELECT COUNT(*) AS plazasOcupadas
FROM reservadias INNER JOIN Reserva ON (reservadias.rReserva=Reserva.id)
WHERE
(Reserva.status=0)
AND ((reserva.Localizador IS NULL) OR (reserva.Localizador LIKE 'AR%'))
AND reservadias.rSubtipoAlojamiento=@tipo
AND reservadias.dia=@dia
AND reservadias.rTemporada=@temporada
)


if (@ocupadas + @solicitadas > @disponibles) set @ok = 0
else set @ok = 1

return (0)
GO

Preguntas similare

Leer las respuestas

#1 Angel Hernández
15/10/2006 - 03:55 | Informe spam
Siempre devuelves 0 (return (0)). Cómo tienes la implementación en VB?

Saludos,


Angel J. Hernández M.
MCP,MCAD,MCSD,MCDBA,MCT
Microsoft MVP ASP/ASP.NET
http://msmvps.com/blogs/angelhernandez
http://groups.msn.com/desarrolladoresmiranda



"dgironal" wrote in message
news:OYTZAC%
Microsoft SQL Server 2000
Visual Basic .NET

Creo el comando, inicializo parámetros y cuando

cmd.ExecuteNonQuery()
flag = DirectCast(cmd.Parameters("@ok").Value, Boolean)

¿Por qué SIEMPRE ME DEVUELVE CERO (0), falso?
Cuando existen valores que debería devolver 1 (true)

El select count(*) LO CALCULA BIEN (comprobado), no entiendo !!!!

CREATE PROCEDURE PlazasOcupadas
(
@tipo int,
@dia smalldatetime,
@temporada as int,

@disponibles as int,
@solicitadas as int,

@ok bit OUTPUT
)

AS

DECLARE @ocupadas INT

SELECT @ocupadas > (
SELECT COUNT(*) AS plazasOcupadas
FROM reservadias INNER JOIN Reserva ON (reservadias.rReserva=Reserva.id)
WHERE
(Reserva.status=0)
AND ((reserva.Localizador IS NULL) OR (reserva.Localizador LIKE 'AR%'))
AND reservadias.rSubtipoAlojamiento=@tipo
AND reservadias.dia=@dia
AND reservadias.rTemporada=@temporada
)


if (@ocupadas + @solicitadas > @disponibles) set @ok = 0
else set @ok = 1

return (0)
GO



Respuesta Responder a este mensaje
#2 dgironal
15/10/2006 - 14:51 | Informe spam
Pero recojo el vaolor de retorno en el parámetro @ok:

cmd.ExecuteNonQuery()
flag = DirectCast(cmd.Parameters("@ok").Value, Boolean)

El Return(0) es para "decirle" a SQL Server 2000 que todo ha ido bien
Respuesta Responder a este mensaje
#3 Alejandro Mesa
15/10/2006 - 17:01 | Informe spam
Por que no posteas un poco mas de codigo, por ejemplo, como llenas la
coleccion de parametros del objecto command?

AMB


"dgironal" wrote:

Pero recojo el vaolor de retorno en el parámetro @ok:

cmd.ExecuteNonQuery()
flag = DirectCast(cmd.Parameters("@ok").Value, Boolean)

El Return(0) es para "decirle" a SQL Server 2000 que todo ha ido bien




Respuesta Responder a este mensaje
#4 dgironal
15/10/2006 - 17:46 | Informe spam
Microsoft SQL Server 2000

Procedimiento almacenado (SIMPLIFICADO)


CREATE PROCEDURE PlazasOcupadas
(
@temporada as int,

@disponibles as int,
@solicitadas as int,

@ok bit OUTPUT
)

AS

DECLARE @ocupadas INT

SELECT @ocupadas (
SELECT COUNT(*) AS plazasOcupadas
FROM Reserva
WHERE
Reserva.Temporada=@temporada
)


if (@ocupadas + @solicitadas > @disponibles) set @ok = 0
else set @ok = 1

return (0)
GO

Visual basic .NET (2003)


HECHOS (como en Memento)
Creo el comando
Creo los parámetros
Los inicializO

(@temporada 8 , @disponibles , @solicitadas=3 ) (

TODO CORRECTO (hacer un acto de Fé)

SE QUE TIENE QUE DEVOLVER @ok=1 algunas veces SEGURO

Recojo el valor de @ok Y SIEMPRE VALE CERO

¿hay que hacer algún tipo de conversión de TIPOS en el procedimiento
almacenado?
Respuesta Responder a este mensaje
#5 Alejandro Mesa
16/10/2006 - 14:50 | Informe spam
dgironal,

HECHOS (como en Memento)
Creo el comando
Creo los parámetros
Los inicializO



Donde esta el codigo?


AMB


"dgironal" wrote:

Microsoft SQL Server 2000

Procedimiento almacenado (SIMPLIFICADO)


CREATE PROCEDURE PlazasOcupadas
(
@temporada as int,

@disponibles as int,
@solicitadas as int,

@ok bit OUTPUT
)

AS

DECLARE @ocupadas INT

SELECT @ocupadas > (
SELECT COUNT(*) AS plazasOcupadas
FROM Reserva
WHERE
Reserva.Temporada=@temporada
)


if (@ocupadas + @solicitadas > @disponibles) set @ok = 0
else set @ok = 1

return (0)
GO

Visual basic .NET (2003)


HECHOS (como en Memento)
Creo el comando
Creo los parámetros
Los inicializO

(@temporada 8 , @disponibles , @solicitadas=3 ) (

TODO CORRECTO (hacer un acto de Fé)

SE QUE TIENE QUE DEVOLVER @ok=1 algunas veces SEGURO

Recojo el valor de @ok Y SIEMPRE VALE CERO

¿hay que hacer algún tipo de conversión de TIPOS en el procedimiento
almacenado?




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida