Consulta sql

16/03/2007 - 15:52 por Carlos DAgostino | Informe spam
Porque no me anda esto ???, estoy usando sql server 2005 y quiero ejecutar
esa cadena con ese parametro, el error que me da es el siguiente :

Msg 402, Level 16, State 1, Procedure CarteleraClarin_TO, Line 12

The data types nvarchar and bit are incompatible in the add operator.



set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go





ALTER PROCEDURE [dbo].[CarteleraClarin_TO]

@Selec bit

AS

BEGIN

DECLARE @Sql1 VARCHAR(2000)


set @sql1= N'SELECT dbo.[Cartelera para armar].desde, dbo.[Cartelera para
armar].hasta, dbo.Obras.TextoClarin, dbo.Teatros.Nombre, dbo.Obras.Obra,

dbo.Cartelera_Dias.Fecha, dbo.Cartelera_Dias.Dia, dbo.Cartelera_Dias.Horario

FROM dbo.[Cartelera para armar] LEFT OUTER JOIN

dbo.Obras ON dbo.[Cartelera para armar].id_obra = dbo.Obras.Id_Obra LEFT
OUTER JOIN

dbo.Teatros ON dbo.[Cartelera para armar].id_teatro = dbo.Teatros.Id_Teatro
LEFT OUTER JOIN

dbo.Cartelera_Dias ON dbo.[Cartelera para armar].id_cartelera =
dbo.Cartelera_Dias.Id_Cartelera

WHERE dbo.Cartelera_Dias.Selec=' +@Selec

print @sql1

EXECUTE (@sql1)


END



Que estoy haciendo mal ????

Gracias

Preguntas similare

Leer las respuestas

#6 Carlos DAgostino
16/03/2007 - 17:13 | Informe spam
el print lo pongo para ver como queda armada la cadena, lo interezante
seria que probaran con una base que uds tengan y vean lo que pasa, no lo
puedo hacer funcionar. Para colmo no tengo la base pub instalada para
mandarle directamente un ejemplo de que vean lo que pasa.
Saludos


"DNC" escribió en el mensaje
news:
Hola carlos,

no se que estaras haciendo pero empieza por comentar el exec y ver que
muestra el print

declare @sql1 nvarchar(2000)


declare @selec char(1)
set @selec = '1'

set @sql1= N'select a.desde, a.hasta, b.textoclarin, c.nombre, b.obra'
+', d.fecha'
+' , d.dia'
+' , d.horario '
+' from dbo.[cartelera para armar] a '
+'left join dbo.obras b '
+' on a.id_obra = b.id_obra '
+'left join dbo.teatros c '
+' on a.id_teatro = c.id_teatro '
+'left join dbo.cartelera_dias d '
+' on a.id_cartelera = d.id_cartelera '
+'where d.selec=' + @selec


print @sql1



On 16 mar, 12:55, "Carlos DAgostino" wrote:
Tampoco funciona lo que me decis, esto es un ejemplo lo que te mando, lo
necesito porque en base a los parametros que recibo pongo condiciones if,
entonces voy uniendo cadenas en base a lo que reciba, entedes ? and or
etc.
Saludos

"Carlos Sacristan" <nomail> escribió en el
mensajenews:eFxnVE%



> Estás intentando concatenar una cadena de caracteres con un tipo de
> datos bit. Tendrás que hacer una conversión del parámetro @Selec a
> NVARCHAR para que te funcione.

> Otra cosa... ¿para qué necesitas query dinámico en tu caso? No le veo
> la utilidad y sí varios problemas...

> "Carlos DAgostino" escribió en el mensaje
>news:
>> Tampoco funciona, otra idea ?

>> "Ele" escribió en el mensaje
>>news:
>>> cambia el tipo de dato de la variable @sql1 como nvarchar

>>> "Carlos DAgostino" escribió en el mensaje
>>>news:Owwl$
>>>> Porque no me anda esto ???, estoy usando sql server 2005 y quiero
>>>> ejecutar esa cadena con ese parametro, el error que me da es el
>>>> siguiente :

>>>> Msg 402, Level 16, State 1, Procedure CarteleraClarin_TO, Line 12

>>>> The data types nvarchar and bit are incompatible in the add operator.

>>>> set ANSI_NULLS ON

>>>> set QUOTED_IDENTIFIER ON

>>>> go

>>>> ALTER PROCEDURE [dbo].[CarteleraClarin_TO]

>>>> @Selec bit

>>>> AS

>>>> BEGIN

>>>> DECLARE @Sql1 VARCHAR(2000)

>>>> set @sql1= N'SELECT dbo.[Cartelera para armar].desde, dbo.[Cartelera
>>>> para armar].hasta, dbo.Obras.TextoClarin, dbo.Teatros.Nombre,
>>>> dbo.Obras.Obra,

>>>> dbo.Cartelera_Dias.Fecha, dbo.Cartelera_Dias.Dia,
>>>> dbo.Cartelera_Dias.Horario

>>>> FROM dbo.[Cartelera para armar] LEFT OUTER JOIN

>>>> dbo.Obras ON dbo.[Cartelera para armar].id_obra = dbo.Obras.Id_Obra
>>>> LEFT OUTER JOIN

>>>> dbo.Teatros ON dbo.[Cartelera para armar].id_teatro > >>>> dbo.Teatros.Id_Teatro LEFT OUTER JOIN

>>>> dbo.Cartelera_Dias ON dbo.[Cartelera para armar].id_cartelera > >>>> dbo.Cartelera_Dias.Id_Cartelera

>>>> WHERE dbo.Cartelera_Dias.Selec=' +@Selec

>>>> print @sql1

>>>> EXECUTE (@sql1)

>>>> END

>>>> Que estoy haciendo mal ????

>>>> Gracias- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#7 DNC
16/03/2007 - 17:59 | Informe spam
Hola Carlos,

te dije lo del print justamente para ver como quedaba la cadena.

querias un ejemplo, fijate:

declare @sql1 nvarchar(2000)

declare @selec char
set @selec = '1'

set @sql1= N'SELECT [au_id], [au_lname], [au_fname], [phone],
[address], [city], [state], [zip], [contract] '
+ 'FROM [pubs].[dbo].[authors] where contract = ' + @selec

exec(@sql1)

go


On 16 mar, 13:13, "Carlos DAgostino" wrote:
el print lo pongo para ver como queda armada la cadena, lo interezante
seria que probaran con una base que uds tengan y vean lo que pasa, no lo
puedo hacer funcionar. Para colmo no tengo la base pub instalada para
mandarle directamente un ejemplo de que vean lo que pasa.
Saludos

"DNC" escribió en el mensajenews:
Hola carlos,

no se que estaras haciendo pero empieza por comentar el exec y ver que
muestra el print

declare @sql1 nvarchar(2000)

declare @selec char(1)
set @selec = '1'

set @sql1= N'select a.desde, a.hasta, b.textoclarin, c.nombre, b.obra'
+', d.fecha'
+' , d.dia'
+' , d.horario '
+' from dbo.[cartelera para armar] a '
+'left join dbo.obras b '
+' on a.id_obra = b.id_obra '
+'left join dbo.teatros c '
+' on a.id_teatro = c.id_teatro '
+'left join dbo.cartelera_dias d '
+' on a.id_cartelera = d.id_cartelera '
+'where d.selec=' + @selec

print @sql1

On 16 mar, 12:55, "Carlos DAgostino" wrote:



> Tampoco funciona lo que me decis, esto es un ejemplo lo que te mando, lo
> necesito porque en base a los parametros que recibo pongo condiciones if,
> entonces voy uniendo cadenas en base a lo que reciba, entedes ? and or
> etc.
> Saludos

> "Carlos Sacristan" <nomail> escribió en el
> mensajenews:eFxnVE%

> > Estás intentando concatenar una cadena de caracteres con un tipo de
> > datos bit. Tendrás que hacer una conversión del parámetro @Selec a
> > NVARCHAR para que te funcione.

> > Otra cosa... ¿para qué necesitas query dinámico en tu caso? No le veo
> > la utilidad y sí varios problemas...

> > "Carlos DAgostino" escribió en el mensaje
> >news:
> >> Tampoco funciona, otra idea ?

> >> "Ele" escribió en el mensaje
> >>news:
> >>> cambia el tipo de dato de la variable @sql1 como nvarchar

> >>> "Carlos DAgostino" escribió en el mensaje
> >>>news:Owwl$
> >>>> Porque no me anda esto ???, estoy usando sql server 2005 y quiero
> >>>> ejecutar esa cadena con ese parametro, el error que me da es el
> >>>> siguiente :

> >>>> Msg 402, Level 16, State 1, Procedure CarteleraClarin_TO, Line 12

> >>>> The data types nvarchar and bit are incompatible in the add operator.

> >>>> set ANSI_NULLS ON

> >>>> set QUOTED_IDENTIFIER ON

> >>>> go

> >>>> ALTER PROCEDURE [dbo].[CarteleraClarin_TO]

> >>>> @Selec bit

> >>>> AS

> >>>> BEGIN

> >>>> DECLARE @Sql1 VARCHAR(2000)

> >>>> set @sql1= N'SELECT dbo.[Cartelera para armar].desde, dbo.[Cartelera
> >>>> para armar].hasta, dbo.Obras.TextoClarin, dbo.Teatros.Nombre,
> >>>> dbo.Obras.Obra,

> >>>> dbo.Cartelera_Dias.Fecha, dbo.Cartelera_Dias.Dia,
> >>>> dbo.Cartelera_Dias.Horario

> >>>> FROM dbo.[Cartelera para armar] LEFT OUTER JOIN

> >>>> dbo.Obras ON dbo.[Cartelera para armar].id_obra = dbo.Obras.Id_Obra
> >>>> LEFT OUTER JOIN

> >>>> dbo.Teatros ON dbo.[Cartelera para armar].id_teatro > > >>>> dbo.Teatros.Id_Teatro LEFT OUTER JOIN

> >>>> dbo.Cartelera_Dias ON dbo.[Cartelera para armar].id_cartelera > > >>>> dbo.Cartelera_Dias.Id_Cartelera

> >>>> WHERE dbo.Cartelera_Dias.Selec=' +@Selec

> >>>> print @sql1

> >>>> EXECUTE (@sql1)

> >>>> END

> >>>> Que estoy haciendo mal ????

> >>>> Gracias- Ocultar texto de la cita -

> - Mostrar texto de la cita -- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#8 Carlos DAgostino
16/03/2007 - 18:42 | Informe spam
como char te funciona, el tema es cuando es de fecha o bit etc, el print no
me muestra nada, tenes msn, mi cuenta es ?
Saludos

"DNC" escribió en el mensaje
news:
Hola Carlos,

te dije lo del print justamente para ver como quedaba la cadena.

querias un ejemplo, fijate:

declare @sql1 nvarchar(2000)

declare @selec char
set @selec = '1'

set @sql1= N'SELECT [au_id], [au_lname], [au_fname], [phone],
[address], [city], [state], [zip], [contract] '
+ 'FROM [pubs].[dbo].[authors] where contract = ' + @selec

exec(@sql1)

go


On 16 mar, 13:13, "Carlos DAgostino" wrote:
el print lo pongo para ver como queda armada la cadena, lo interezante
seria que probaran con una base que uds tengan y vean lo que pasa, no lo
puedo hacer funcionar. Para colmo no tengo la base pub instalada para
mandarle directamente un ejemplo de que vean lo que pasa.
Saludos

"DNC" escribió en el
mensajenews:
Hola carlos,

no se que estaras haciendo pero empieza por comentar el exec y ver que
muestra el print

declare @sql1 nvarchar(2000)

declare @selec char(1)
set @selec = '1'

set @sql1= N'select a.desde, a.hasta, b.textoclarin, c.nombre, b.obra'
+', d.fecha'
+' , d.dia'
+' , d.horario '
+' from dbo.[cartelera para armar] a '
+'left join dbo.obras b '
+' on a.id_obra = b.id_obra '
+'left join dbo.teatros c '
+' on a.id_teatro = c.id_teatro '
+'left join dbo.cartelera_dias d '
+' on a.id_cartelera = d.id_cartelera '
+'where d.selec=' + @selec

print @sql1

On 16 mar, 12:55, "Carlos DAgostino" wrote:



> Tampoco funciona lo que me decis, esto es un ejemplo lo que te mando, lo
> necesito porque en base a los parametros que recibo pongo condiciones
> if,
> entonces voy uniendo cadenas en base a lo que reciba, entedes ? and or
> etc.
> Saludos

> "Carlos Sacristan" <nomail> escribió en el
> mensajenews:eFxnVE%

> > Estás intentando concatenar una cadena de caracteres con un tipo de
> > datos bit. Tendrás que hacer una conversión del parámetro @Selec a
> > NVARCHAR para que te funcione.

> > Otra cosa... ¿para qué necesitas query dinámico en tu caso? No le
> > veo
> > la utilidad y sí varios problemas...

> > "Carlos DAgostino" escribió en el mensaje
> >news:
> >> Tampoco funciona, otra idea ?

> >> "Ele" escribió en el mensaje
> >>news:
> >>> cambia el tipo de dato de la variable @sql1 como nvarchar

> >>> "Carlos DAgostino" escribió en el mensaje
> >>>news:Owwl$
> >>>> Porque no me anda esto ???, estoy usando sql server 2005 y quiero
> >>>> ejecutar esa cadena con ese parametro, el error que me da es el
> >>>> siguiente :

> >>>> Msg 402, Level 16, State 1, Procedure CarteleraClarin_TO, Line 12

> >>>> The data types nvarchar and bit are incompatible in the add
> >>>> operator.

> >>>> set ANSI_NULLS ON

> >>>> set QUOTED_IDENTIFIER ON

> >>>> go

> >>>> ALTER PROCEDURE [dbo].[CarteleraClarin_TO]

> >>>> @Selec bit

> >>>> AS

> >>>> BEGIN

> >>>> DECLARE @Sql1 VARCHAR(2000)

> >>>> set @sql1= N'SELECT dbo.[Cartelera para armar].desde,
> >>>> dbo.[Cartelera
> >>>> para armar].hasta, dbo.Obras.TextoClarin, dbo.Teatros.Nombre,
> >>>> dbo.Obras.Obra,

> >>>> dbo.Cartelera_Dias.Fecha, dbo.Cartelera_Dias.Dia,
> >>>> dbo.Cartelera_Dias.Horario

> >>>> FROM dbo.[Cartelera para armar] LEFT OUTER JOIN

> >>>> dbo.Obras ON dbo.[Cartelera para armar].id_obra = dbo.Obras.Id_Obra
> >>>> LEFT OUTER JOIN

> >>>> dbo.Teatros ON dbo.[Cartelera para armar].id_teatro > > >>>> dbo.Teatros.Id_Teatro LEFT OUTER JOIN

> >>>> dbo.Cartelera_Dias ON dbo.[Cartelera para armar].id_cartelera > > >>>> dbo.Cartelera_Dias.Id_Cartelera

> >>>> WHERE dbo.Cartelera_Dias.Selec=' +@Selec

> >>>> print @sql1

> >>>> EXECUTE (@sql1)

> >>>> END

> >>>> Que estoy haciendo mal ????

> >>>> Gracias- Ocultar texto de la cita -

> - Mostrar texto de la cita -- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#9 DNC
16/03/2007 - 18:53 | Informe spam
eso justamente te estan diciendo todos cuando te piden castear el tipo
de datos, tene en cuenta que lo que queres es concatenar una cadena.

si te fijas en el ejemplo el parametro se evalua contra el campo
[contract] siendo el tipo de datos del mismo en la tabla authors bit
([contract] [bit] NOT NULL)

saludos!



On 16 mar, 14:42, "Carlos DAgostino" wrote:
como char te funciona, el tema es cuando es de fecha o bit etc, el print no
me muestra nada, tenes msn, mi cuenta es ?
Saludos

"DNC" escribió en el mensajenews:
Hola Carlos,

te dije lo del print justamente para ver como quedaba la cadena.

querias un ejemplo, fijate:

declare @sql1 nvarchar(2000)

declare @selec char
set @selec = '1'

set @sql1= N'SELECT [au_id], [au_lname], [au_fname], [phone],
[address], [city], [state], [zip], [contract] '
+ 'FROM [pubs].[dbo].[authors] where contract = ' + @selec

exec(@sql1)

go

On 16 mar, 13:13, "Carlos DAgostino" wrote:



> el print lo pongo para ver como queda armada la cadena, lo interezante
> seria que probaran con una base que uds tengan y vean lo que pasa, no lo
> puedo hacer funcionar. Para colmo no tengo la base pub instalada para
> mandarle directamente un ejemplo de que vean lo que pasa.
> Saludos

> "DNC" escribió en el
> mensajenews:
> Hola carlos,

> no se que estaras haciendo pero empieza por comentar el exec y ver que
> muestra el print

> declare @sql1 nvarchar(2000)

> declare @selec char(1)
> set @selec = '1'

> set @sql1= N'select a.desde, a.hasta, b.textoclarin, c.nombre, b.obra'
> +', d.fecha'
> +' , d.dia'
> +' , d.horario '
> +' from dbo.[cartelera para armar] a '
> +'left join dbo.obras b '
> +' on a.id_obra = b.id_obra '
> +'left join dbo.teatros c '
> +' on a.id_teatro = c.id_teatro '
> +'left join dbo.cartelera_dias d '
> +' on a.id_cartelera = d.id_cartelera '
> +'where d.selec=' + @selec

> print @sql1

> On 16 mar, 12:55, "Carlos DAgostino" wrote:

> > Tampoco funciona lo que me decis, esto es un ejemplo lo que te mando, lo
> > necesito porque en base a los parametros que recibo pongo condiciones
> > if,
> > entonces voy uniendo cadenas en base a lo que reciba, entedes ? and or
> > etc.
> > Saludos

> > "Carlos Sacristan" <nomail> escribió en el
> > mensajenews:eFxnVE%

> > > Estás intentando concatenar una cadena de caracteres con un tipo de
> > > datos bit. Tendrás que hacer una conversión del parámetro @Selec a
> > > NVARCHAR para que te funcione.

> > > Otra cosa... ¿para qué necesitas query dinámico en tu caso? No le
> > > veo
> > > la utilidad y sí varios problemas...

> > > "Carlos DAgostino" escribió en el mensaje
> > >news:
> > >> Tampoco funciona, otra idea ?

> > >> "Ele" escribió en el mensaje
> > >>news:
> > >>> cambia el tipo de dato de la variable @sql1 como nvarchar

> > >>> "Carlos DAgostino" escribió en el mensaje
> > >>>news:Owwl$
> > >>>> Porque no me anda esto ???, estoy usando sql server 2005 y quiero
> > >>>> ejecutar esa cadena con ese parametro, el error que me da es el
> > >>>> siguiente :

> > >>>> Msg 402, Level 16, State 1, Procedure CarteleraClarin_TO, Line 12

> > >>>> The data types nvarchar and bit are incompatible in the add
> > >>>> operator.

> > >>>> set ANSI_NULLS ON

> > >>>> set QUOTED_IDENTIFIER ON

> > >>>> go

> > >>>> ALTER PROCEDURE [dbo].[CarteleraClarin_TO]

> > >>>> @Selec bit

> > >>>> AS

> > >>>> BEGIN

> > >>>> DECLARE @Sql1 VARCHAR(2000)

> > >>>> set @sql1= N'SELECT dbo.[Cartelera para armar].desde,
> > >>>> dbo.[Cartelera
> > >>>> para armar].hasta, dbo.Obras.TextoClarin, dbo.Teatros.Nombre,
> > >>>> dbo.Obras.Obra,

> > >>>> dbo.Cartelera_Dias.Fecha, dbo.Cartelera_Dias.Dia,
> > >>>> dbo.Cartelera_Dias.Horario

> > >>>> FROM dbo.[Cartelera para armar] LEFT OUTER JOIN

> > >>>> dbo.Obras ON dbo.[Cartelera para armar].id_obra = dbo.Obras.Id_Obra
> > >>>> LEFT OUTER JOIN

> > >>>> dbo.Teatros ON dbo.[Cartelera para armar].id_teatro > > > >>>> dbo.Teatros.Id_Teatro LEFT OUTER JOIN

> > >>>> dbo.Cartelera_Dias ON dbo.[Cartelera para armar].id_cartelera > > > >>>> dbo.Cartelera_Dias.Id_Cartelera

> > >>>> WHERE dbo.Cartelera_Dias.Selec=' +@Selec

> > >>>> print @sql1

> > >>>> EXECUTE (@sql1)

> > >>>> END

> > >>>> Que estoy haciendo mal ????

> > >>>> Gracias- Ocultar texto de la cita -

> > - Mostrar texto de la cita -- Ocultar texto de la cita -

> - Mostrar texto de la cita -- Ocultar texto de la cita -

- Mostrar texto de la cita -
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida