Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Sp - dividir La Consulta En Dos o mas partes

Estas en el tema de Sp - dividir La Consulta En Dos o mas partes en el foro de SQL Server en Foros del Web. Hola: Le explico.. estoy haciendo un SP de busqueda, pero no se como dividir la consulta en dos o en mas partes, el codigo en ...
  #1 (permalink)  
Antiguo 18/05/2007, 15:31
 
Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 17 años, 4 meses
Puntos: 0
Sp - dividir La Consulta En Dos o mas partes

Hola:

Le explico.. estoy haciendo un SP de busqueda, pero no se como dividir la consulta en dos o en mas partes, el codigo en visual me funciona pero ahora quiero pasarlo a procedimiento almacenado y tengo problemas con la sintaxis .Lo que quiero hacer es algo así(este esparte de mi codigo).

CREATE PROCEDURE [buscar]
(@rut [varchar](50))
AS
DECLARE @VAR int
if @rut <> ""

BEGIN
set @consulta = (select rut_cliente,nombres, apellidos from clientes)
set @consulta = @consulta + WHERE rut_cliente LIKE '%'+ @rut + '%'
set @VAR = 1
END


Donde lo que necesito saber es si puedo hacer el @consulta = @consulta + Where....y si se puede como es la sintaxis ya que al ejecutarlo me dice que la sintaxis sobre la palabra clave WHERE es incorrecta


Este es parte del codigo en visual basic(que funciona correctamente)


consulta = "select rut_cliente,nombres, apellidos from clientes "

If ruttecnico.Text <> "" Then
consulta = consulta & "WHERE rut_cliente LIKE '%" & ruttecnico & "%'"
var = 1
End If
'If nombres.Text <> "" Then
If var = 1 Then
consulta = consulta & " AND nombres like '%" & nombres.Text & "%'"
End If
If var = 0 Then
consulta = consulta & "WHERE nombres like '%" & nombres.Text & "%'"
var = 1
End If
End If


Necesito pasar este codigo a SP
Bueno eso ojala me puedan ayudar
  #2 (permalink)  
Antiguo 18/05/2007, 16:11
 
Fecha de Ingreso: mayo-2007
Mensajes: 20
Antigüedad: 17 años
Puntos: 0
Re: Sp - dividir La Consulta En Dos o mas partes

CREATE PROCEDURE [buscar]
(@rut [varchar](50))
AS
DECLARE @VAR int
if @rut <> ""

BEGIN
set @consulta = (select rut_cliente,nombres, apellidos from clientes)
set @consulta = @consulta + WHERE rut_cliente LIKE '%'+ @rut + '%'
set @VAR = 1
END

--Podriamos usar algo como esto

DECLARE @consulta VARCHAR(1000)
SET @consulta = 'SELECT rut_cliente,nombres, apellidos FROM clientes '
SET @consulta = @consulta + 'WHERE rut_cliente LIKE ' + '%'+ @rut + '%'


--en SQL TRANSACT las cadenas de texto van en comillas simples

--espero que te sirva.
  #3 (permalink)  
Antiguo 18/05/2007, 18:26
 
Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Sp - dividir La Consulta En Dos o mas partes

Primero gracias por responder:

Mira probe lo que me dijiste, al comprobar la sintaxis me dice que esta ok pero el problema ahora es que no me arroja ningun resultado(lo probe con exec buscar ' mi rut que esta en mi BD' go). Y la consulta esta correcta porque la probe en analizador de consultas y me entrega el resultado que quiero:

SELECT rut_cliente,nombres, apellidos FROM clientes WHERE rut_cliente LIKE '%'+@rut+'%'

Al hacerlo como tu me dijiste(colocar la consulta entre comillas) me deja en rojo la consulta, es como si lo tomara como un texto cualquiera y como que no cumple la funcion de select

Bueno esos gracias
Espero me ayuden
  #4 (permalink)  
Antiguo 21/05/2007, 09:06
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Re: Sp - dividir La Consulta En Dos o mas partes

Segun lo que veo, no requieres de SQl dinamico...
puedes realizar tu consulta directamente, sin estar armando cadenas para luego ejecutarlas....por ejemplo...

Código:
CREATE PROCEDURE dbo.spBuscarClientes(
         @rutaCliente     [varchar](50)         -- Suponiendo que la ruta es un parametro obligatorio para la busqueda
        ,@nombreCliente   [varchar](50) = null  -- Suponiendo que el nombre del cliente no es obligatorio
        )
AS

Select  rut_cliente
       ,nombres
       ,apellidos 
From    clientes 
Where   rut_cliente LIKE '%'+ @rut + '%'  And
        ( @nombreCliente is null Or nombres like  '%' + @nombreCliente + '%' )
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 25/05/2007, 11:50
 
Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Sp - dividir La Consulta En Dos o mas partes

gracias andres por la respuesta, lo probe asi y funciona pero igual me quede con la duda de si puedo hacerlo como me dijo jukkaman. Trate de arreglarlo asi, agregandole el exec, pero sigue sin funcionar:

SET @consulta = @consulta + 'WHERE rut_cliente LIKE ' + '%'+ @rut + '%'
exec(@consulta)

PERO solo me entrega resultados cuando lo le entrego un valor real al rut como:

SET @consulta = @consulta + 'WHERE rut_cliente LIKE ' + '111111111'
exec(@consulta)


Cuando lo hago asi al ejecutar el SP funciona, que raro.
Bueno seguire probando
gracias
  #6 (permalink)  
Antiguo 25/05/2007, 15:01
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Re: Sp - dividir La Consulta En Dos o mas partes

no te entendi muy bien,
pero si tu ampo rut_cliente es de tipo texto debes agregar comillas adicionales para contenerlo...
por ejemplo

Código:
Set @Consulta = 'Select * from clientes where nombre like ''%' + @nombre + '%''' 
Execute (@Consulta)
Aunque tambien podrias revizar el stored sp_ExecuteSQL que tiene la ventaja de que solo construyes una vez el query y luego solo actualizas parametros para ejecutarlo con otros valores

por ejemplo (de la ayuda de SQL)

Código:
DECLARE @IntVariable INT
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

/* Build the SQL string once. */
SET @SQLString =
     N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level'

/* Specify the parameter format once. */
SET @ParmDefinition = N'@level tinyint'

/* Execute the string with the first parameter value. */
SET @IntVariable = 35
EXECUTE sp_executesql @SQLString, @ParmDefinition,
                      @level = @IntVariable

/* Execute the same string with the second parameter value. */
SET @IntVariable = 32
EXECUTE sp_executesql @SQLString, @ParmDefinition,
                      @level = @IntVariable
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #7 (permalink)  
Antiguo 27/05/2007, 11:29
 
Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Sp - dividir La Consulta En Dos o mas partes(SOLUCIONADO)

Por Fin!!!! Gracias jukkaman y andres por la paciencia, el maldito problema era con las comillas simples, la cosa quedo finalmente así ,por si a alguien le sirve:

CREATE PROCEDURE [buscar]
(@rut [varchar](50))

AS

DECLARE @consulta varchar(1000)

set @consulta = ' SELECT rut_cliente,nombres, apellidos FROM clientes '
set @consulta = @consulta + ' WHERE rut_cliente LIKE + ''%' + @rut + '%'''
exec(@consulta)
GO

y eso era todo, ahora solo me falta adecuar la otra parte del codigo para completar la busqueda por rut, nombre o apellido, pero con esto la base ya esta

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:56.