Ver Mensaje Individual
  #7 (permalink)  
Antiguo 18/04/2007, 02:53
Avatar de MACGREGOR
MACGREGOR
 
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 10 meses
Puntos: 0
De acuerdo Re: Problemas con una Select

Hola de nuevo.
Técnicamente lo que has dicho es cierto, las comillas simples molestan dentro de los paréntesis.
Pero esa técnica (por llamarla de alguna manera) la he utilizado en muchas ocasiones.
Lo cierto es que no la he usado en plsql, hasta hace poco programaba en Perl y conectaba con la DB Oracle para lanzar las consultas desde el propio perl.

Pero en plsql debería ser igual. Quiero decir que en realidad las comillas simples no existen.
Intentaré explicarme.

Técnicamente estás poniendo una variable varchar2 dentro del paréntesis con el resultado de tu consulta, esa cadena de texto empieza y acaba implicitamente por comillas simples, pero en realidad no las has puesto.

Si muestras tu variable por pantalla no muestra las comillas!

Si en dentro de una clausula where haces algo como var_texto = 'hola'
comprueba que tu variable de texto sea igual a hola las comillas indican que lo que hay a la derecha de la igualdad es de tipo texto, no que las contenga.

Por otro lado cuando tu haces tu consulta
Select *
from tabla t
where t.id_tabla in (1,2,3,4,....)

Todo es texto ;) Oracle antes de ejecutar la consulta comprovará que es correcta y mirará que cada valor de dentro de los paréntesis es del mismo tipo y que además coincide con el tipo del campo t.id_tabla.

Con todo este rollo quería decirte que no veo porqué no debería funcionar la idea de los mensajes anteriores.
Si no te funciona manda otro mensaje para dejarlo claro a todos los que lean este tema en el foro :)

Se me ocurre que, en caso de no funcionar, crees tu consulta en una variable del estilo
v_select:='select * from tabla t where t.id_tabla in (##lista_ids##)';

y luego hagas un
replace (v_select,'##lista_ids##',res_subconsulta);

res_subconsulta es la misma variable usada en mi mensaje anterior para el resultado de tratar la subconsulta

Ahora tendrás tu consulta con la subconsulta en una variable de texto y podrás ejecutarla.

Espero haberte ayudado :]

PD: si te funciona sin usar el replace también estaría bien que lo comentes.

Un saludo.