concatenar dentro de un SP con comillas

25/05/2004 - 10:40 por Jomaweb | Informe spam
Hola

Tengo esta consulta que si lanzo desde un ASP me funciona perfecta.

SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS where GRUPO1= '
" & grupo & " ' OR GRUPO2 = ' " & grupo & "'

El problema es que quiero meterlo dentro de un Procedimiento almacenado que
recibe un parametro VARCHAR (@Grupo) y resulta que no hay dios de armar la
consulta por las comillas. Tengan en cuenta que el parámetro @grupo puede
llevar espacios y guiones. ¿cómo concateno tanta comilla sin error?

CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50) AS
DECLARE @CONSULTA VARCHAR(500)
SET @CONSULTA=SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS
where GRUPO1="'" + @G + "'" OR GRUPO2 = "'" + @G +
EXEC(@CONSULTA)
GO

Lo mismo me pasa para devolver concatenado el nombre y el apellido. No veo
manera de que no me salte error. Sé que el problema son las comillas.


gracias

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
25/05/2004 - 10:47 | Informe spam
Prueba con:

****************************************************************************
*

CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50) AS

SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS
WHERE GRUPO1= @G OR GRUPO2 = @G

****************************************************************************
*

No es necesario ejecutar dinámicamente la consulta para lo que necesitas


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jomaweb" escribió en el mensaje
news:
Hola

Tengo esta consulta que si lanzo desde un ASP me funciona perfecta.

SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS where GRUPO1'
" & grupo & " ' OR GRUPO2 = ' " & grupo & "'

El problema es que quiero meterlo dentro de un Procedimiento almacenado


que
recibe un parametro VARCHAR (@Grupo) y resulta que no hay dios de armar


la
consulta por las comillas. Tengan en cuenta que el parámetro @grupo puede
llevar espacios y guiones. ¿cómo concateno tanta comilla sin error?

CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50) AS
DECLARE @CONSULTA VARCHAR(500)
SET @CONSULTA=SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS
where GRUPO1="'" + @G + "'" OR GRUPO2 = "'" + @G +
EXEC(@CONSULTA)
GO

Lo mismo me pasa para devolver concatenado el nombre y el apellido. No veo
manera de que no me salte error. Sé que el problema son las comillas.


gracias


Respuesta Responder a este mensaje
#2 Jomaweb
25/05/2004 - 14:27 | Informe spam
Esto ya lo probé y no funciona porque como ya comenté el grupo incluye
espacios y guiones.

Debo de poder concatenar comillas.

Por ejemplo, cuando grupo es "madrid - sector centro", sino lo concateno me
da error en el guión.



"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:%23%

Prueba con:




****************************************************************************
*

CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50) AS

SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS
WHERE GRUPO1= @G OR GRUPO2 = @G




****************************************************************************
*

No es necesario ejecutar dinámicamente la consulta para lo que


necesitas


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jomaweb" escribió en el mensaje
news:
> Hola
>
> Tengo esta consulta que si lanzo desde un ASP me funciona perfecta.
>
> SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS where


GRUPO1> '
> " & grupo & " ' OR GRUPO2 = ' " & grupo & "'
>
> El problema es que quiero meterlo dentro de un Procedimiento almacenado
que
> recibe un parametro VARCHAR (@Grupo) y resulta que no hay dios de armar
la
> consulta por las comillas. Tengan en cuenta que el parámetro @grupo


puede
> llevar espacios y guiones. ¿cómo concateno tanta comilla sin error?
>
> CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50) AS
> DECLARE @CONSULTA VARCHAR(500)
> SET @CONSULTA=SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM


CONTRATOS
> where GRUPO1="'" + @G + "'" OR GRUPO2 = "'" + @G +
> EXEC(@CONSULTA)
> GO
>
> Lo mismo me pasa para devolver concatenado el nombre y el apellido. No


veo
> manera de que no me salte error. Sé que el problema son las comillas.
>
>
> gracias
>
>


Respuesta Responder a este mensaje
#3 Carlos Sacristan
25/05/2004 - 14:52 | Informe spam
Pero eso será por cómo llamas al procedimiento almacenado. Si quieres
que el valor de los parámetros contengan comilla simple tienes que hacerlo
así:

EXEC consulta '''madrid-centro'''

Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jomaweb" escribió en el mensaje
news:
Esto ya lo probé y no funciona porque como ya comenté el grupo incluye
espacios y guiones.

Debo de poder concatenar comillas.

Por ejemplo, cuando grupo es "madrid - sector centro", sino lo concateno


me
da error en el guión.



"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:%23%
>
> Prueba con:
>
>



****************************************************************************
> *
>
> CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50) AS
>
> SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS
> WHERE GRUPO1= @G OR GRUPO2 = @G
>
>



****************************************************************************
> *
>
> No es necesario ejecutar dinámicamente la consulta para lo que
necesitas
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> Por favor, responder únicamente al foro
> Se agradece la inclusión de sentencias DDL
>
>
> "Jomaweb" escribió en el mensaje
> news:
> > Hola
> >
> > Tengo esta consulta que si lanzo desde un ASP me funciona perfecta.
> >
> > SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS where
GRUPO1> > '
> > " & grupo & " ' OR GRUPO2 = ' " & grupo & "'
> >
> > El problema es que quiero meterlo dentro de un Procedimiento


almacenado
> que
> > recibe un parametro VARCHAR (@Grupo) y resulta que no hay dios de


armar
> la
> > consulta por las comillas. Tengan en cuenta que el parámetro @grupo
puede
> > llevar espacios y guiones. ¿cómo concateno tanta comilla sin error?
> >
> > CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50) AS
> > DECLARE @CONSULTA VARCHAR(500)
> > SET @CONSULTA=SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM
CONTRATOS
> > where GRUPO1="'" + @G + "'" OR GRUPO2 = "'" + @G +
> > EXEC(@CONSULTA)
> > GO
> >
> > Lo mismo me pasa para devolver concatenado el nombre y el apellido. No
veo
> > manera de que no me salte error. Sé que el problema son las comillas.
> >
> >
> > gracias
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Jomaweb
25/05/2004 - 15:12 | Informe spam
Tampoco, el problema es al concatenar dentro del SP.


> > CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50) AS
> >
> > SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS
> > WHERE GRUPO1= @G OR GRUPO2 = @G
> >
> >
>



****************************************************************************
> > *
> >
> > No es necesario ejecutar dinámicamente la consulta para lo que
> necesitas
> >
> >
> > Un saludo
> >
> > -
> > "Sólo sé que no sé nada. " (Sócrates)
> >
> > Por favor, responder únicamente al foro
> > Se agradece la inclusión de sentencias DDL
> >
> >
> > "Jomaweb" escribió en el mensaje
> > news:
> > > Hola
> > >
> > > Tengo esta consulta que si lanzo desde un ASP me funciona perfecta.
> > >
> > > SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS where
> GRUPO1> > > '
> > > " & grupo & " ' OR GRUPO2 = ' " & grupo & "'
> > >
> > > El problema es que quiero meterlo dentro de un Procedimiento
almacenado
> > que
> > > recibe un parametro VARCHAR (@Grupo) y resulta que no hay dios de
armar
> > la
> > > consulta por las comillas. Tengan en cuenta que el parámetro @grupo
> puede
> > > llevar espacios y guiones. ¿cómo concateno tanta comilla sin error?
> > >
> > > CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50) AS
> > > DECLARE @CONSULTA VARCHAR(500)
> > > SET @CONSULTA=SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM
> CONTRATOS
> > > where GRUPO1="'" + @G + "'" OR GRUPO2 = "'" + @G +
> > > EXEC(@CONSULTA)
> > > GO
> > >
> > > Lo mismo me pasa para devolver concatenado el nombre y el apellido.


No
> veo
> > > manera de que no me salte error. Sé que el problema son las


comillas.
> > >
> > >
> > > gracias
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#5 ulises
25/05/2004 - 15:26 | Informe spam
No veo porque el error, ejecutando lo siguiente :

1) Creando la tabla y poblando de datos

create table contratos ( nombre varchar(30),
apellidos varchar(30),
grupo1 varchar(30),
grupo2 varchar(30) )
go
insert into contratos
select 'NOMBREA', 'APELLIDOA' ,'MADRID - GRUPO
CENTRO', 'OTRO'
insert into contratos
select 'NOMBREB', 'APELLIDOB' ,'OTRO', 'MADRID - GRUPO
CENTRO'
go

2) creando el Žprocedimiento almacenado :

CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50)
AS
SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM CONTRATOS
WHERE GRUPO1= @GRUPO OR GRUPO2 = @GRUPO

3) ejecutandolo

exec consulta 'madrid - grupo centro'

te obtiene el resultado que deseas :

cliente
NOMBREA APELLIDOA
NOMBREB APELLIDOB

(2 row(s) affected)

no veo que el guion afecte para nada la consulta, lo que
veo en la consulta que has enviando es que no has
terminado de encerrar la comilla ni definir la variable
@g, lo que tienes definido es la variable @grupo, no sé si
eso es el problema o has enviando un extracto de tu
consulta.

Saludos,
Ulises

Tampoco, el problema es al concatenar dentro del SP.


> > CREATE PROCEDURE CONSULTA @GRUPO VARCHAR(50) AS
> >
> > SELECT NOMBRE + ' ' + APELLIDOS AS cliente FROM




CONTRATOS
> > WHERE GRUPO1= @G OR GRUPO2 = @G
> >
> >
>

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