STORED PROCEDURE

16/04/2004 - 22:48 por Carlos Mija | Informe spam
Buenas Tardes
Alguien me puede ayudar necesito saber sobre como
Hacer una consulta
que haciendo una sola consulta
Ejm
CREATE PROCEDURE SP_LISTACLIENTES2
@TIPO CHAR(1),
@TEXTO VARCHAR(80)
AS
IF @TIPO='C'
BEGIN
SELECT COMPANYNAME FROM CUSTOMERS
WHERE CUSTOMERID LIKE '%'+LTRIM(RTRIM(@TEXTO))+'%'
END
ELSE
BEGIN
SELECT COMPANYNAME FROM CUSTOMERS
WHERE COMPANYNAME LIKE '%'+LTRIM(RTRIM(@TEXTO))+'%'
END

GO


EXEC SP_LISTACLIENTES2 'n','al'

quiero Hacerlo con un solo Select(Consulta)

alquien me puede ayudar




..
Carlos Mija Torres
..
 

Leer las respuestas

#1 Miguel Egea
16/04/2004 - 23:40 | Informe spam
Con todos mis respetos para tu profesor, puedes decirle que igual desde el
punto de vista teórico sea interesante, desde luego no lo es en absoluto
desde el punto de vista de rendimiento.

ALTER PROCEDURE SP_CONSCLIENTE @TEXTO CHAR(1)
AS
DECLARE @CAMPO CHAR(11)
/*C=CODIGO N=NOMBRE */
IF @CAMPO='C'
BEGIN
SELECT @CAMPO='CUSTOMERID'
END
IF @CAMPO='N'
BEGIN
SELECT @CAMPO='COMPANYNAME'
SELECT @CAMPO
END
Declare @SQl nvarchar(4000)
set @sql='SELECT COMPANYNAME
FROM CUSTOMERS
WHERE ' + @CAMPO + ' LIKE ''%A%'''
exec(@sql)

GO

Suerte


"Carlos Mija" escribió en el mensaje
news:u#mLJm$
No recien estoy empezando lo que es SQL
y ese es un trabajo
el profesor queria que le hagan en una sola consulta
yo habia hecho asi pero creo que esta mal
lo que el profesor
queria era usar una variable para el CUSTOMERID y para
COMPANYNAME

ALTER PROCEDURE SP_CONSCLIENTE @TEXTO CHAR(1)
AS
DECLARE @CAMPO CHAR(11)
/*C=CODIGO N=NOMBRE */
IF @CAMPO='C'
BEGIN
SELECT @CAMPO='CUSTOMERID'
END
IF @CAMPO='N'
BEGIN
SELECT @CAMPO='COMPANYNAME'
SELECT @CAMPO
END
SELECT COMPANYNAME
FROM CUSTOMERS
WHERE '@CAMPO' LIKE '%A%'

GO

EXEC SP_CONSCLIENTE 'C'




..
Carlos Mija Torres
CADENOR S.A.C.
..
"Miguel Egea" escribió en el mensaje
news:OCjgUc$
Debo decirte que no me gusta hacer consultas con like que empiezen por %,
es garantía de recorrerse como mínimo todo el índice, eso quiere decir que
si hay millones de registros serán muuuuuchas lecturas, en cualquier caso.
Tampoco que los procedimientos empiecen por sp_, no aportan nada y puede
revisar en
portalsql.com que introducen una pequeña sobrecarga al sistema.

Por otra parte lo que pides puede hacerse con código dinámico, sin
embargo, yo lo dejaría tal cual está, porque al menos el optimizador de
consultas tiene una posibilidad de encontrar un índice que usar, de la otra
forma más te vale no crear un sp y hacer las consultas directamente en tu
aplicación. (Seguro que maxi y otros del grupo piensan que no es bueno hacer
sp's, pero esa no es la discusión, por favor :-) )

En cualquier caso con código dinamico se haría según las instrucciones de
los libros en pantalla en sp_executesql.


-

Miguel Egea Gómez
Webmaster de PortalSQL

(lo de online sobra)

Microsoft SqlServer M.V.P.



"Carlos Mija" escribió en el mensaje
news:eciHZR$

Buenas Tardes
Alguien me puede ayudar necesito saber sobre como
Hacer una consulta
que haciendo una sola consulta
Ejm
CREATE PROCEDURE SP_LISTACLIENTES2
@TIPO CHAR(1),
@TEXTO VARCHAR(80)
AS
IF @TIPO='C'
BEGIN
SELECT COMPANYNAME FROM CUSTOMERS
WHERE CUSTOMERID LIKE '%'+LTRIM(RTRIM(@TEXTO))+'%'
END
ELSE
BEGIN
SELECT COMPANYNAME FROM CUSTOMERS
WHERE COMPANYNAME LIKE '%'+LTRIM(RTRIM(@TEXTO))+'%'
END

GO


EXEC SP_LISTACLIENTES2 'n','al'

quiero Hacerlo con un solo Select(Consulta)

alquien me puede ayudar




..
Carlos Mija Torres
..


Preguntas similares