Store Procedure

14/04/2004 - 00:33 por Mercedes | Informe spam
Saludos:
Alguien me puede asesorar con respecto a esta sección de
mi procedure
IF ('SELECT count(*) FROM ' + @Tb_name ) = '0'
BEGIN
PRINT 'No hay valor'
END
ELSE
BEGIN
PRINT 'Si hay valor'
END

Me manda este mensaje de error:

DTEFAC2
Server: Msg 245, Level 16, State 1, Line 32
Syntax error converting the varchar value 'SELECT count(*)
FROM DTEFAC2

De antemano, gracias

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP SQL]
14/04/2004 - 00:41 | Informe spam
COUNT retorna un número, pero lo estás comparando contra '0' en vez de
contra 0.

Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Mercedes" wrote in message
news:1c64a01c421a7$622f5260$
Saludos:
Alguien me puede asesorar con respecto a esta sección de
mi procedure
IF ('SELECT count(*) FROM ' + @Tb_name ) = '0'
BEGIN
PRINT 'No hay valor'
END
ELSE
BEGIN
PRINT 'Si hay valor'
END

Me manda este mensaje de error:

DTEFAC2
Server: Msg 245, Level 16, State 1, Line 32
Syntax error converting the varchar value 'SELECT count(*)
FROM DTEFAC2

De antemano, gracias
Respuesta Responder a este mensaje
#2 Anonimo
14/04/2004 - 00:54 | Informe spam
Si lo asigno con '0' me manda la respuesta pero no es
correcta ya que cuando la tabla no tiene registro me manda
el mensaje de que si tiene.
Si lo asigno con 0 , me manda el erro antes anotado.

No habra forma de que mande a una variable de tipo entero
el resultado del COUNT.

Gracias
COUNT retorna un número, pero lo estás comparando


contra '0' en vez de
contra 0.

Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y


no otorga ningun
derecho / This posting is provided "AS IS" with no


warranties, and confers
no rights.
"Mercedes" wrote in


message
news:1c64a01c421a7$622f5260$
Saludos:
Alguien me puede asesorar con respecto a esta sección de
mi procedure
IF ('SELECT count(*) FROM ' + @Tb_name ) = '0'
BEGIN
PRINT 'No hay valor'
END
ELSE
BEGIN
PRINT 'Si hay valor'
END

Me manda este mensaje de error:

DTEFAC2
Server: Msg 245, Level 16, State 1, Line 32
Syntax error converting the varchar value 'SELECT count(*)
FROM DTEFAC2

De antemano, gracias


.

Respuesta Responder a este mensaje
#3 Maximiliano Damian Accotto
14/04/2004 - 01:35 | Informe spam
Hola, es que el '0' esta mal, debe ser 0. ahora por lo que veo solo queres
ver la cantidad de registros y si es mayor que 0 ahcer algo y si es 0 no
hacer nada

fijate si esto te es util:

==create table #pepe (id char(10),nombre varchar(50))

declare @c int

select @c =count(*) from #pepe

if @c > 0
print 'hay valores'
else
print 'no hay valores'

=
Bye






Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Mercedes" escribió en el mensaje
news:1c64a01c421a7$622f5260$
Saludos:
Alguien me puede asesorar con respecto a esta sección de
mi procedure
IF ('SELECT count(*) FROM ' + @Tb_name ) = '0'
BEGIN
PRINT 'No hay valor'
END
ELSE
BEGIN
PRINT 'Si hay valor'
END

Me manda este mensaje de error:

DTEFAC2
Server: Msg 245, Level 16, State 1, Line 32
Syntax error converting the varchar value 'SELECT count(*)
FROM DTEFAC2

De antemano, gracias
Respuesta Responder a este mensaje
#4 Gustavo Larriera [MVP SQL]
14/04/2004 - 01:45 | Informe spam
El problema que estás teniendo es el siguiente:

La forma en que haces el IF hace que se compare el string 'SELECT count(*)
FROM ' + @Tb_name contra el valor '0'. Observa que NO ESTAS EJECUTANDO LA
SELECT, pues asi como lo escribes no es posible.

Por eso siempre te da la respuesta "Si hay valor" pues al comparar el string
contra '0', la comparación es negativa.

Si pones 0, te trae un error de comparación de tipos: estarias comparando un
string contra un número... ERROR.




Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
wrote in message
news:1955101c421aa$4264dd80$
Si lo asigno con '0' me manda la respuesta pero no es
correcta ya que cuando la tabla no tiene registro me manda
el mensaje de que si tiene.
Si lo asigno con 0 , me manda el erro antes anotado.

No habra forma de que mande a una variable de tipo entero
el resultado del COUNT.

Gracias
COUNT retorna un número, pero lo estás comparando


contra '0' en vez de
contra 0.

Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y


no otorga ningun
derecho / This posting is provided "AS IS" with no


warranties, and confers
no rights.
"Mercedes" wrote in


message
news:1c64a01c421a7$622f5260$
Saludos:
Alguien me puede asesorar con respecto a esta sección de
mi procedure
IF ('SELECT count(*) FROM ' + @Tb_name ) = '0'
BEGIN
PRINT 'No hay valor'
END
ELSE
BEGIN
PRINT 'Si hay valor'
END

Me manda este mensaje de error:

DTEFAC2
Server: Msg 245, Level 16, State 1, Line 32
Syntax error converting the varchar value 'SELECT count(*)
FROM DTEFAC2

De antemano, gracias


.

Respuesta Responder a este mensaje
#5 Gustavo Larriera [MVP SQL]
14/04/2004 - 02:37 | Informe spam
Otra vuelta de tuerca (para poder poner el nombre de la tabla en una
variable, que creo es lo que trata de hacer la persona):

USE pubs
GO

DECLARE @Tb_name VARCHAR(40)

SET @Tb_name = 'titles'

EXECUTE('SELECT cuenta=count(*) INTO tempTabla FROM ' + @Tb_name )

IF (SELECT cuenta FROM tempTabla) <= 0
BEGIN
PRINT 'No hay valor'
END
ELSE
BEGIN
PRINT 'Si hay valor'
END

DROP TABLE tempTabla


Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Maximiliano Damian Accotto" wrote in
message news:uAPqr$
Hola, es que el '0' esta mal, debe ser 0. ahora por lo que veo solo queres
ver la cantidad de registros y si es mayor que 0 ahcer algo y si es 0 no
hacer nada

fijate si esto te es util:

==> create table #pepe (id char(10),nombre varchar(50))

declare @c int

select @c =count(*) from #pepe

if @c > 0
print 'hay valores'
else
print 'no hay valores'

=>
Bye






Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Mercedes" escribió en el mensaje
news:1c64a01c421a7$622f5260$
Saludos:
Alguien me puede asesorar con respecto a esta sección de
mi procedure
IF ('SELECT count(*) FROM ' + @Tb_name ) = '0'
BEGIN
PRINT 'No hay valor'
END
ELSE
BEGIN
PRINT 'Si hay valor'
END

Me manda este mensaje de error:

DTEFAC2
Server: Msg 245, Level 16, State 1, Line 32
Syntax error converting the varchar value 'SELECT count(*)
FROM DTEFAC2

De antemano, gracias


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida