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

#6 Isaías
14/04/2004 - 03:04 | Informe spam
¿Que le pasaria a Gustavo?, esto es de primer grado.

Podrias utilizar tambien

DECLARE @SQLString NVARCHAR(100)
SET @SQLString = 'SELECT count(*) FROM ' + @Tb_name
exec sp_executesql @SQLString
IF @@ROWCOUNT = 0
PRINT 'No hay valor'
ELSE
PRINT 'Si hay valor'
Respuesta Responder a este mensaje
#7 Maximiliano Damian Accotto
14/04/2004 - 04:33 | Informe spam
bue son solo opciones nomas!! todas validas :-)


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:
-

"Isaías" escribió en el mensaje
news:1c2e801c421bc$7058e9e0$
¿Que le pasaria a Gustavo?, esto es de primer grado.

Podrias utilizar tambien

DECLARE @SQLString NVARCHAR(100)
SET @SQLString = 'SELECT count(*) FROM ' + @Tb_name
exec sp_executesql @SQLString
IF @@ROWCOUNT = 0
PRINT 'No hay valor'
ELSE
PRINT 'Si hay valor'
Respuesta Responder a este mensaje
#8 Gustavo Larriera [MVP SQL]
14/04/2004 - 04:57 | Informe spam
Estimado Isaias, me temo que no funciona lo que propones. Creo que la
persona quiere comparar el valor retornado por el COUNT a ver si es 0 o no
lo es.

La solución que propones compara el valor de @@ROWCOUNT que *siempre* va a
devolver 1 puesto que la SELECT COUNT(*) responde siempre un valor escalar
(o sea, una única fila con una columna que vale lo que sea el resultado del
COUNT).

Es fácil de comprobar usando una tabla vacia sin filas:

USE pubs
GO

CREATE TABLE #vacia (col1 INT)
GO

DECLARE @TB_name NVARCHAR(20)
DECLARE @SQLString NVARCHAR(100)
SET @tb_name = '#vacia'
SET @SQLString = 'SELECT count(*) FROM ' + @Tb_name
exec sp_executesql @SQLString
IF @@ROWCOUNT = 0
PRINT 'No hay valor'
ELSE
PRINT 'Si hay valor'

Esto responde *erroneamente* 'Si hay valor' y no es LQQD :-) debido a que
@@ROWCOUNT correctamente responde 1 (una fila que almacena un 0).

Saludos cordiales
gux



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.
"Isaías" wrote in message
news:1c2e801c421bc$7058e9e0$
¿Que le pasaria a Gustavo?, esto es de primer grado.

Podrias utilizar tambien

DECLARE @SQLString NVARCHAR(100)
SET @SQLString = 'SELECT count(*) FROM ' + @Tb_name
exec sp_executesql @SQLString
IF @@ROWCOUNT = 0
PRINT 'No hay valor'
ELSE
PRINT 'Si hay valor'
Respuesta Responder a este mensaje
#9 Víctor Rafael Bocanegra Arias
14/04/2004 - 15:50 | Informe spam
A ver que les parece este codigo:

declare @pnvcSQL nvarchar(255)
declare @pnvcTabla nvarchar(255)
declare @piRows int
set @pnvcTabla=N'tblcorresponsales'
set @pnvcSQL=N'select @iRows=count(*) from '+@pnvcTabla
execute sp_executesql @pnvcSQL,N'@iRows int out',@piRows out
select @piRows

Salu2

Victor Rafael Bocanegra Arias
Lima, Peru

"Gustavo Larriera [MVP SQL]" escribió en el
mensaje news:
Estimado Isaias, me temo que no funciona lo que propones. Creo que la
persona quiere comparar el valor retornado por el COUNT a ver si es 0 o no
lo es.

La solución que propones compara el valor de @@ROWCOUNT que *siempre* va a
devolver 1 puesto que la SELECT COUNT(*) responde siempre un valor


escalar
(o sea, una única fila con una columna que vale lo que sea el resultado


del
COUNT).

Es fácil de comprobar usando una tabla vacia sin filas:

USE pubs
GO

CREATE TABLE #vacia (col1 INT)
GO

DECLARE @TB_name NVARCHAR(20)
DECLARE @SQLString NVARCHAR(100)
SET @tb_name = '#vacia'
SET @SQLString = 'SELECT count(*) FROM ' + @Tb_name
exec sp_executesql @SQLString
IF @@ROWCOUNT = 0
PRINT 'No hay valor'
ELSE
PRINT 'Si hay valor'

Esto responde *erroneamente* 'Si hay valor' y no es LQQD :-) debido a que
@@ROWCOUNT correctamente responde 1 (una fila que almacena un 0).

Saludos cordiales
gux



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.
"Isaías" wrote in message
news:1c2e801c421bc$7058e9e0$
¿Que le pasaria a Gustavo?, esto es de primer grado.

Podrias utilizar tambien

DECLARE @SQLString NVARCHAR(100)
SET @SQLString = 'SELECT count(*) FROM ' + @Tb_name
exec sp_executesql @SQLString
IF @@ROWCOUNT = 0
PRINT 'No hay valor'
ELSE
PRINT 'Si hay valor'



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