Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Как вывести всю строку в FOR..IN не перечисляя вручную столбцы?
@Andrey1_M

Как вывести данные из курсора?

собственно в комментариях указал что не выполняется строка DBMS_OUTPUT.PUT_LINE(cur.'||cols (1).col_name||');
declare
   cur1 PLS_INTEGER := DBMS_SQL.OPEN_CURSOR;
   cols DBMS_SQL.DESC_TAB;
   ncols PLS_INTEGER;
    l_output    VARCHAR2(100):= 'ok ';
begin
    -- Разбор запроса
   DBMS_SQL.PARSE (cur1, 'select 1 field_11, ''river'' field_22 from dual 
                          union all
                          select 1 field_11, ''sharf'' field_22 from dual', DBMS_SQL.NATIVE);
   -- Получение информации о столбцах
   DBMS_SQL.DESCRIBE_COLUMNS (cur1, ncols, cols);  
   FOR cur IN (select 1 field_11, 'river' field_22 from dual 
               union all
               select 1 field_11, 'sharf' field_22 from dual)
   LOOP
         --работает если прямо указывать название столбца
         --EXECUTE IMMEDIATE 'BEGIN :a := :a || ''OK''; DBMS_OUTPUT.PUT_LINE('||cur.field_11||'); END;' USING IN OUT l_output;

         --не работает если пытаться вытащить имя столбца (а мне надо именно так), что я делаю не так? 
         EXECUTE IMMEDIATE 'BEGIN :a := :a || ''OK''; DBMS_OUTPUT.PUT_LINE(cur.'||cols (1).col_name||'); END;' USING IN OUT l_output; --INTO l_output;
   END LOOP; 
   DBMS_SQL.CLOSE_CURSOR (cur1);
end;


пишет ошибку
Error report -
ORA-06550: line 1, column 46:
PLS-00201: identifier 'CUR.FIELD_11' must be declared
  • Вопрос задан
  • 519 просмотров
Подписаться 1 Сложный 1 комментарий
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы