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

Error con procedimiento - Cual es el verdadero error??

Estas en el tema de Error con procedimiento - Cual es el verdadero error?? en el foro de SQL Server en Foros del Web. Hola, si pongo esta consulta solo pa la consulta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT Clie_Tipo =             CASE ...
  #1 (permalink)  
Antiguo 04/08/2009, 23:16
 
Fecha de Ingreso: febrero-2008
Mensajes: 54
Antigüedad: 16 años, 2 meses
Puntos: 0
Pregunta Error con procedimiento - Cual es el verdadero error??

Hola, si pongo esta consulta solo pa la consulta:

Código SQL:
Ver original
  1. SELECT Clie_Tipo =
  2.             CASE  Clie_Tipo
  3.                  WHEN 'J' THEN 'Juridico'
  4.                  WHEN 'N' THEN 'Natural'
  5.                  ELSE 'Tipo Incorrecto'
  6.             END,
  7.             (isnull(Clie_Nombre,' ')+' '+isnull(Clie_Apellido,' ')) AS NOMBRE
  8.             ,isnull(Clie_Domicilio,' ') AS DOMICILIO
  9.             ,isnull(Clie_Telefono,' ') AS TELEFONO
  10.             ,isnull(Distri_Nombre,' ') AS DISTRITO
  11.             FROM CLIENTE, DISTRITO
  12.             WHERE CLIENTE.Distri_Codigo = DISTRITO.Distri_Codigo

pos no hay ningun error...

pero, si con esta consulta lo hago como procedimiento almacenado con un union para realizar una busqueda con un texbox ya sea por apellido o por nombre y manejando a los campos con valor NULL pos falla, el problema me aparece en el segundo cuerpo osea despues del union, bueno chekeenlo porfa haber q es lo q pasa...

Código SQL:
Ver original
  1. CREATE PROCEDURE BUSCAR
  2. [arroba]Nombre nvarchar(100)
  3. AS
  4.     ((SELECT Clie_Tipo =
  5.             CASE  Clie_Tipo
  6.                  WHEN 'J' THEN 'Juridico'
  7.                  WHEN 'N' THEN 'Natural'
  8.                  ELSE 'Tipo Incorrecto'
  9.             END,
  10.             (isnull(Clie_Nombre,'')+' '+isnull(Clie_Apellido,'')) AS NOMBRE
  11.             ,isnull(Clie_Domicilio,'') AS DOMICILIO
  12.             ,isnull(Clie_Telefono,'') AS TELEFONO
  13.             ,isnull(Distri_Nombre,'') AS DISTRITO
  14.             FROM CLIENTE, DISTRITO
  15.             WHERE CLIENTE.Distri_Codigo = DISTRITO.Distri_Codigo AND
  16.             Clie_Nombre LIKE '%'+[arroba]Nombre+'%')
  17. UNION
  18.             (SELECT Clie_Tipo =
  19.             CASE  Clie_Tipo
  20.                  WHEN 'J' THEN 'Juridico'
  21.                  WHEN 'N' THEN 'Natural'
  22.                  ELSE 'Tipo Incorrecto'
  23.             END,
  24.             (isnull(Clie_Nombre,' ')+' '+isnull(Clie_Apellido,' ')) AS NOMBRE
  25.             ,isnull(Clie_Domicilio,' ') AS DOMICILIO
  26.             ,isnull(Clie_Telefono,' ') AS TELEFONO
  27.             ,isnull(Distri_Nombre,' ') AS DISTRITO
  28.             FROM CLIENTE, DISTRITO
  29.             WHERE CLIENTE.Distri_Codigo = DISTRITO.Distri_Codigo AND
  30.             Clie_Apellido LIKE '%'+[arroba]Nombre+'%')) AS seleccion
  31.             ORDER BY seleccion.Clie_Nombre ASC

el error q me sale es el siguiente:

Código:
Mens 156, Nivel 15, Estado 1, Procedimiento BUSCAR, Línea 30
Sintaxis incorrecta cerca de la palabra clave 'as'.
osea en " as seleccion"; ojala me pudan hechar una manita, ojala alguien tenga experiencia en estos codigos y pruebe el mio en su sql pa q vea q pasa, gracias de antemano... hasta luego y salu2...

Última edición por JoNhNaTaN; 04/08/2009 a las 23:25 Razón: Informacion adicional
  #2 (permalink)  
Antiguo 05/08/2009, 06:15
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Error con procedimiento - Cual es el verdadero error??

No es necesario el alias...


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 05/08/2009, 09:24
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Error con procedimiento - Cual es el verdadero error??

Creo que lo tienes que ejecutar como cadena es decir:

Código:
@varSQL = 'SELECT campo1, campo2, .. FROm tuTabla WHERE Clie_Nombre LIKE ''%'+@Nombre+'%'' '

EXEC @varSQL

...
  #4 (permalink)  
Antiguo 05/08/2009, 18:38
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error con procedimiento - Cual es el verdadero error??

EXEC @varSQL, se dejo de utilizar a partir de 2000, se debe hacer un exec sp_executesql @MyNVarchar
  #5 (permalink)  
Antiguo 06/08/2009, 09:18
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Error con procedimiento - Cual es el verdadero error??

Cierto, se me olvido comentar eso.

Y es que regularmente en las preguntas no ponen que versión usan.
  #6 (permalink)  
Antiguo 06/08/2009, 13:38
 
Fecha de Ingreso: agosto-2009
Mensajes: 4
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Error con procedimiento - Cual es el verdadero error??

Lo miro por arriba y veo cuatro cosas:
1. En el segundo codigo tenes esto:

Cita:
(SELECT Clie_Tipo =
CASE Clie_Tipo
WHEN 'J' THEN 'Juridico'
WHEN 'N' THEN 'Natural'
ELSE 'Tipo Incorrecto'
END,
Proba quitando el "="
2. Lo otro que te diria que intentes es quitar los alias en el codigo que viene despues del UNION

3. Despues del ultimo WHERE tenes esto:
Cita:
AND Clie_Apellido LIKE '%'+[arroba]Nombre+'%')) AS seleccion
Ese "AS seleccion" no va...

4. Y otra cosa mas importante... Lo que estas intentando hacer es obtener todos los registros que tengan esa cadena dentro del nombre o del apellido, no? Intenta hacerlo asi:


((SELECT Clie_Tipo =
CASE Clie_Tipo
WHEN 'J' THEN 'Juridico'
WHEN 'N' THEN 'Natural'
ELSE 'Tipo Incorrecto'
END,
(isnull(Clie_Nombre,'')+' '+isnull(Clie_Apellido,'')) AS NOMBRE
,isnull(Clie_Domicilio,'') AS DOMICILIO
,isnull(Clie_Telefono,'') AS TELEFONO
,isnull(Distri_Nombre,'') AS DISTRITO
FROM CLIENTE, DISTRITO
WHERE CLIENTE.Distri_Codigo = DISTRITO.Distri_Codigo

AND ((Clie_Nombre LIKE '%'+[arroba]Nombre+'%')) OR (Clie_Apellido LIKE '%'+[arroba]Nombre+'%')))

Espero que te sirva, perdon por lo desprolijo de mi respuesta... (Es mi primer post aca :D )
  #7 (permalink)  
Antiguo 06/08/2009, 21:59
 
Fecha de Ingreso: febrero-2008
Mensajes: 54
Antigüedad: 16 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Error con procedimiento - Cual es el verdadero error??

gracias Ezeyo88 y a todos, sus opiniones han ayudado a resolver mi problema y a examinar mas mi codigo con todas su sugerencias la solucion era simple...

me salia problema en esa linea con el as seleccion y lo q me faltaba era un select * from osea esto:
select * from (subconsulta de los dos cuerpos y con union) as seleccion order by....

osea mas completamente si alguien por aca requira el codigo...

Código SQL:
Ver original
  1. CREATE PROC BuscarCliente
  2.     @Nombre nvarchar(100)=NULL
  3. AS
  4. ----------- estas dos lineas me faltaban -----------------------------------------------------------
  5.         SELECT *
  6.         FROM
  7. --------------------------------------------------------------------------------------------------------------
  8.         (SELECT Clie_Tipo=
  9.         CASE Clie_Tipo
  10.                  WHEN 'J' THEN 'Juridico'
  11.                  WHEN 'N' THEN 'Natural'
  12.                  ELSE 'Tipo Incorrecto'
  13.         END,
  14.             (isnull(Clie_Nombre,'')+' '+isnull(Clie_Apellido,'')) AS NombreCliente
  15.             ,isnull(Clie_Domicilio,'')AS DomicilioCliente
  16.             ,isnull(Clie_Telefono,'')AS Telefono
  17.             ,isnull(Distri_Nombre,'')AS Distrito
  18.           FROM dbo.CLIENTE INNER JOIN
  19.           dbo.DISTRITO ON dbo.CLIENTE.Distri_Codigo = dbo.DISTRITO.Distri_Codigo
  20.         WHERE Clie_Nombre LIKE '%'+@Nombre+'%'
  21.     UNION
  22.         SELECT Clie_Tipo=
  23.         CASE Clie_Tipo
  24.                  WHEN 'J' THEN 'Juridico'
  25.                  WHEN 'N' THEN 'Natural'
  26.                  ELSE 'Tipo Incorrecto'
  27.         END,
  28.             (isnull(Clie_Nombre,'')+' '+isnull(Clie_Apellido,'')) AS NombreCliente
  29.             ,isnull(Clie_Domicilio,'')AS DomicilioCliente
  30.             ,isnull(Clie_Telefono,'')AS Telefono
  31.             ,isnull(Distri_Nombre,'')AS Distrito
  32.           FROM dbo.CLIENTE INNER JOIN
  33.           dbo.DISTRITO ON dbo.CLIENTE.Distri_Codigo = dbo.DISTRITO.Distri_Codigo
  34.         WHERE Clie_Apellido LIKE '%'+@Nombre+'%') AS seleccion
  35.         ORDER BY seleccion.NombreCliente ASC

tiene un poco de logica no??? no se como explicarlo pero si toda la consulta le pongo en una variable y le pongo un alias tonces no tiene sentido por q solo estoy cambiandole el nombre a una variable , tonces me falta hacerle una operacion a esa variable y recien puedo asignarle un alias, bueno asi maso lo entiendo...

muchas gracias a todos salu2
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 09:59.