Oracle - Nombre de tabla

   
Vista:

Nombre de tabla

Publicado por Josue Gomez jesrat.g@gmail.com (14 intervenciones) el 30/04/2015 21:19:39
Estimados nuevamente recurro a ustedes con un problema

tengo 3 tablas de categoria de clientes tablaA,tablaB,tablaC

y un campo que contiene la categoria de los clientes en la tabla clientes

select a.categoria from clientes a where a.cod_cliente = '12345'
devuelve A


select 'tabla'||a.categoria from clientes a where a.cod_cliente = '12345'
devuelve tablaA

quisiera ocupar esto en un from es decir algo asi:
select * from (select 'tabla'||a.categoria from clientes a where a.cod_cliente = '12345'
devuelve tablaA)

pero no me funciona
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Nombre de tabla

Publicado por Rafael (177 intervenciones) el 04/05/2015 14:32:43
Tal como pides la consulta es imposible de hacer...

Lo suyo seria meterlo dentro de un procedure, y mandar ejecutar la segunda consulta mediante el execute immediate y quizas devolver el resultado con un Package...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Nombre de tabla

Publicado por Jorge (21 intervenciones) el 04/05/2015 16:33:22
Hola, segun lo que mencionas estan usandolo dentro de un procedure, podrías colocar tu script de tu procedure? para poder darte una mejor ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Nombre de tabla

Publicado por Josue Gomez (14 intervenciones) el 04/05/2015 19:28:07
Hola Rafael y Jorge

pues no estoy ocupando un procedure la solo estaba armando una query "simple" hasta donde la palabra simple pueda llegar. armando el nombre de una tabla a consultar atraves de un texto mas un valor de un campo, asi tal cual lo puse fue como se me vino a la cabeza no tengo idea de como podria hacerlo a traves de un procedure
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Nombre de tabla

Publicado por Jorge (21 intervenciones) el 04/05/2015 21:03:34
Hola, pues si es una consulta simple siempre podrás escribir el nombre correcto de la tabla. Caso contrario ocurre cuando se quiere automatizar el proceso con un procedure. Segun el formato de la sentencia select, luego del from debe ir el nombre de una vista o una tabla, no puede ir una variable o cadena como la que estás obteniendo del select previo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Nombre de tabla

Publicado por Josue Gomez (14 intervenciones) el 05/05/2015 17:15:23
Gracias Jorge

podrias "explicarme" como hacerlo por medio de un procedure
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Nombre de tabla

Publicado por Jorge (21 intervenciones) el 06/05/2015 16:19:32
Hola, sería algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
create or replace procedure prueba is
 
v_tabla     VARCHAR2(255);
v_query     VARCHAR2(255);
 
begin
 
select 'tabla'||a.categoria
into v_tabla
from clientes a
where a.cod_cliente = '12345';
 
v_query := 'select * from ' || v_tabla;
 
execute immediate v_query;
 
(....)
 
end;

No tengo oracle en este momento asi que deberías probar. El EXECUTE IMMEDIATE te sirve para ejecutar sentencias que se encuentran en una variable. Lo que quieras hacer con el resultado del select ya depende de ti.

Te recomiento revisar: http://devjoker.com/contenidos/catss/66/SQL-Dinamico.aspx

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Nombre de tabla

Publicado por Josue Gomez (14 intervenciones) el 07/05/2015 18:33:10
Muchas Gracias estimado me funciona correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar