2015-07-05 3 views
0
create or replace 
PROCEDURE PROCEDURE1 
AS 
    MYCOLUMNVAR VARCHAR2(50); 

BEGIN 
SELECT <<some query>> INTO MYCOLUMNVAR FROM DUAL; --this query contains 
                -- a regular expression 
                -- and some other criteria 
                -- to store a column 
                -- name into MYCOLUMNVAR 


INSERT INTO TABLE_TMP(ID,COLUMN1) 
     (SELECT a.ID,b.MYCOLUMNVAR FROM TAB1 a, TAB2 b WHERE...) 

Значение, присвоенное MYCOLUMNVAR из вышеуказанного запроса, равно DATA. У меня есть имя колонки DATA в таблице TAB2. При попытке запустить процедуру я получаюКак получить доступ к столбцу, имя которого хранится в переменной?

Error(50,3): PL/SQL: ORA-00904: "B"."MYCOLUMNVAR": invalid identifier. 

ответ

1

Вам нужно dynamic query решить такого рода вопрос:

EXECUTE IMMEDIATE 'INSERT INTO TABLE_TMP(ID,COLUMN1) 
      (SELECT a.ID,b.' || MYCOLUMNVAR || ' FROM TAB1 a, TAB2 b WHERE...)' 
Смежные вопросы