Asignar valores a variables dinámicamente.
Publicado por Antofar (2 intervenciones) el 26/06/2015 18:21:41
Buenos días a Todos.
Tengo el siguiente problema al querer asignar el valor a una variable con PL/SQL:
DECLARE
TYPE TB_ZONA IS TABLE OF CAT_ZONA%ROWTYPE;
TBL_ZONA TB_ZONA;
V_NOMBRE1 VARCHAR2(100);
V_NOMBRE2 VARCHAR2(100);
V_CAMPO VARCHAR2(20);
BEGIN
SELECT * BULK COLLECT INTO TBL_ZONA FROM CAT_ZONA;
V_CAMPO := 'NOMBRE_ZONA';
FOR I IN 1.. TBL_ZONA.COUNT
LOOP
V_NOMBRE1 := TBL_ZONA(I).NOMBRE_ZONA;
V_NOMBRE2 := 'TBL_ZONA(I).'||V_CAMPO;
DBMS_OUTPUT.PUT_LINE(V_NOMBRE1);
DBMS_OUTPUT.PUT_LINE(V_NOMBRE2);
END LOOP;
END;
Requiero que la variable V_NOMBRE2 tome el mismo valor de V_NOMBRE1, pero está tomando el literal. El valor almacenado en la variable V_CAMPO cambiará dínamicamente por el nombre de otras columnas.
El ejecutar el bloque anónimo el resultado es el siguiente:
V_NOMBRE1: Urbana
V_NOMBRE2: TBL_ZONA(I).NOMBRE_ZONA
V_NOMBRE1: Rural
V_NOMBRE2: TBL_ZONA(I).NOMBRE_ZONA
V_NOMBRE1: Metro
V_NOMBRE2: TBL_ZONA(I).NOMBRE_ZONA
V_NOMBRE1:
V_NOMBRE2: TBL_ZONA(I).NOMBRE_ZONA
Como ven V_NOMBRE2 toma el valor literal de la asignación y no el valor del campo como si lo toma V_NOMBRE1 porque se leindica "quemado" la TABLAPL.CAMPO, pero en mi requerimiento es necesario que el CAMPO tome valores dinamicamente.
Agradezco de antemano sus comentario y/o sugerencias para poder dar solución es esto, pues he buscado mucho, pero tampoco es sencillo el buscar este tema.
De nuevo muchas gracias. .
Tengo el siguiente problema al querer asignar el valor a una variable con PL/SQL:
DECLARE
TYPE TB_ZONA IS TABLE OF CAT_ZONA%ROWTYPE;
TBL_ZONA TB_ZONA;
V_NOMBRE1 VARCHAR2(100);
V_NOMBRE2 VARCHAR2(100);
V_CAMPO VARCHAR2(20);
BEGIN
SELECT * BULK COLLECT INTO TBL_ZONA FROM CAT_ZONA;
V_CAMPO := 'NOMBRE_ZONA';
FOR I IN 1.. TBL_ZONA.COUNT
LOOP
V_NOMBRE1 := TBL_ZONA(I).NOMBRE_ZONA;
V_NOMBRE2 := 'TBL_ZONA(I).'||V_CAMPO;
DBMS_OUTPUT.PUT_LINE(V_NOMBRE1);
DBMS_OUTPUT.PUT_LINE(V_NOMBRE2);
END LOOP;
END;
Requiero que la variable V_NOMBRE2 tome el mismo valor de V_NOMBRE1, pero está tomando el literal. El valor almacenado en la variable V_CAMPO cambiará dínamicamente por el nombre de otras columnas.
El ejecutar el bloque anónimo el resultado es el siguiente:
V_NOMBRE1: Urbana
V_NOMBRE2: TBL_ZONA(I).NOMBRE_ZONA
V_NOMBRE1: Rural
V_NOMBRE2: TBL_ZONA(I).NOMBRE_ZONA
V_NOMBRE1: Metro
V_NOMBRE2: TBL_ZONA(I).NOMBRE_ZONA
V_NOMBRE1:
V_NOMBRE2: TBL_ZONA(I).NOMBRE_ZONA
Como ven V_NOMBRE2 toma el valor literal de la asignación y no el valor del campo como si lo toma V_NOMBRE1 porque se leindica "quemado" la TABLAPL.CAMPO, pero en mi requerimiento es necesario que el CAMPO tome valores dinamicamente.
Agradezco de antemano sus comentario y/o sugerencias para poder dar solución es esto, pues he buscado mucho, pero tampoco es sencillo el buscar este tema.
De nuevo muchas gracias. .
Valora esta pregunta


0