Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-01-2007
Caballero Negro Caballero Negro is offline
Registrado
 
Registrado: jul 2005
Posts: 3
Poder: 0
Caballero Negro Va por buen camino
Problema con entrecomillado en sentencia select in dentro de un Store Procedure

Despues de hacer un cursor tengo un resultado con uno o varios registros.
056
004
057
Cabe decir que estos valores son alfanumericos.

Tengo una cadena dentro del stored que almacena los registros encontrados de la siguiente forma
'056','004','057'

El motivo de esta cadena es poder efectuar la siguiente consulta
select valor in ( @cadena ) from tabla

El problema se encuentra cuando asigno el entrecomillado a los valores de @cadena ya que al efectuar la consulta dentro del stored con select valor in ( @cadena ) from tabla, no presenta ningun valor.

Si asigno en el select la siguiente sentencia:
select valor in ( '056','004','057') from tabla
la consulta se hace correctamente.

El proceso de asignacion de las comillas a la cadena es el siguiente:
open Resultados
Fetch next from Resultados into @CadenaTemp
while @@FETCH_STATUS = 0
begin
set @contador = @contador + 1
set @cadena = @cadena +''''+@CadenaTemp+''''
if @contador < @Limite
begin
set @cadena = @cadena +','
end
Fetch next from Resultados into @IDRuta01str
end
close Resultados
deallocate Resultados

No quiero hacer un query mas complicado que lo arriba mostrado, ya que el select... in () es mas que suficiente para lo que se desea.
El problema es como armar correctamente el valor de @Cadena dentro de Stored Procedure.

Agradeciendo de antemano la ayuda a este "pequeño" problema les mando un afectuoso saludo a toda la comunidad de Club Delphi.
Responder Con Cita
  #2  
Antiguo 11-01-2007
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
si efectuas eso el SELECT buscará un valor que sea igual a @cadena
podrias hacer lo siguiente a cada valor le antecedes un caracter extraño por ejemplo ! es decir @cadena sería igual a: !056!004!057
luego tu sentencia seria algo asi como
[/sql]
SELECT * FROM tabla where CHARINDEX(@cadena, '!056')>0;
[/sql]

suerte
__________________
self.free;
Responder Con Cita
  #3  
Antiguo 12-01-2007
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
Buen dia

tiene que ser un IN sobre una cadena?

no podria ser algo asi como

Código SQL [-]
select campo1, campo2, campo3 from tutabla where
campo1 in (select otrocampo from otratabla where otrocampo2 = 'loquesa')

suponiendo que
Código SQL [-]
select otrocampo from otratabla where otrocampo2 = 'loquesea'
es la consulta que usas para armar el cursor y
Código SQL [-]
select campo1, campo2, campo3 from tutabla
es lo que quieres regresar?
Responder Con Cita
  #4  
Antiguo 12-01-2007
Caballero Negro Caballero Negro is offline
Registrado
 
Registrado: jul 2005
Posts: 3
Poder: 0
Caballero Negro Va por buen camino
Gracias a todos por su apoyo.

En efecto SinaloCarlos.

Le definicion de Sql aguanta perfectamente expresiones de consulta sobre la clausula IN.

Un amigo de la oficina me dio unos golpes en la cabeza para poder "ver lo evidente".

Me sucedio el sindrome del programador que trabaja con el tiempo encima.

De todas maneras gracias pro su apoyo.
Saludos!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Store procedure php jorgito MySQL 1 06-06-2006 08:55:12
Store procedure en firebird ronimaxh Firebird e Interbase 4 19-04-2006 11:42:12
Store Procedure en Delphi carlomagno Firebird e Interbase 5 21-09-2005 20:24:22
incremento de store procedure uper Firebird e Interbase 5 21-04-2004 19:15:59
store procedure ronimaxh Firebird e Interbase 2 24-06-2003 20:20:22


La franja horaria es GMT +2. Ahora son las 22:32:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi