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

Preguntas similare

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$
Mostrar la cita
#2 Javier Loria
17/04/2004 - 01:32 | Informe spam
Hola Carlos:
Revisa la siguiente sentencia.
= SELECT CompanyName
FROM Customers
WHERE CASE WHEN @Tipo='C'
AND CustomerID LIKE
'%'+LTRIM(RTRIM(@TEXTO))+'%'
THEN 1
CASE WHEN @Tipo<>'C'
AND CompanyName LIKE
'%'+LTRIM(RTRIM(@TEXTO))+'%'
THEN 1
ELSE 0
END=1
= Ahora, la sintaxis anterior funciona pero debe preocuparte. La razon no
es tanto el desempeno (que en esto esoy de acuerdo con Miguel, es malo o
pesimo), pero eso podria solucionarlo MS en la proxima version de SQL; el
problema mas serio, en mi opinion, es la falta de COHESION, que es un
principio basico de desarrollo. Especificamente la Cohesion
Funcional que es la mas fuerte y mejor forma de cohesion exige que una
rutina realize una y solo una operacion. Hay una cantidad importante de
estudios que prueba que la cantidad de errores cuando la cohesion es baja
crece exponencialmente.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
"Carlos Mija" wrote in message
news:eciHZR$
Mostrar la cita
Ads by Google
Search Busqueda sugerida