Oracle - Cursor en Oracle, Ocupar Variable en Campo

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 3 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

Cursor en Oracle, Ocupar Variable en Campo

Publicado por Luis (1 intervención) el 28/09/2020 15:31:15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
DECLARE
     tabla_1 VARCHAR2(100);
     CURSOR TABLA_IND IS
     SELECT   ID ,
                      NOMBRE_TABLA_GENERADA AS TBL,
                     CAMPO_SEMAFORICO ,
                     MIN_VERDE
     FROM INDICADORES_PRUEBA
     WHERE NOMBRE_TABLA_GENERADA = 'TBLARO149_LMSOLPAGPNDT';
 
     TABLA_IND_rec TABLA_IND%ROWTYPE;
 
     BEGIN
        FOR TABLA_IND_rec IN TABLA_IND
            LOOP
                tabla_1 := TABLA_IND_rec.TBL;
                UPDATE SCORE_IND
                SET      CASOS_ALTO  =  (SELECT COUNT(1)
                      FROM TABLA_IND_rec.TBL
                      WHERE TABLA_IND_rec.CAMPO_SEMAFORICO  > TABLA_IND_rec.MIN_VERDE
                                                              )
                WHERE TBL_ASOCIADA = TABLA_IND_rec.TBL;
            END LOOP;
        COMMIT;
     END;



Consulta como puedo poner el nombre una variable en una sentencia por ejemplo en el from o en el where
FROM TABLA_IND_rec.TBL ? al ejecutar me dice que la tabla no existe
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
sin imagen de perfil

Cursor en Oracle, Ocupar Variable en Campo

Publicado por anonymous (15 intervenciones) el 23/10/2020 20:00:57
Lo que estás buscando es SQL dinámico, en Oracle se lleva a cabo mediante EXECUTE IMMEDIATE

Pero ojo todo SQL dinámico en cualquier motor es susceptible de que le apliquen SQL Injection

Solo en escenarios muy particulares y que realmente amerite hacerlo así, deberías optar por ese camino, la pregunta acá es estrictamente necesario que sea de esa forma ?
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