Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ошибка 01422 / 13 сообщений из 13, страница 1 из 1
19.05.2021, 11:44
    #40071272
007alex3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
Всем привет!

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare
    res varchar2(200);
    tabnam varchar2(200) := 'DWH_gate.T$TERMINAL';
    colnum int := 3;
    colnam varchar2 (32) := 'ID_AGENT';
begin
    EXECUTE IMMEDIATE 'select '||colnam||' from DWH_gate.T$TERMINAL' into res;
    dbms_output.put_line (res);
end;



Запрос выдает ошибку 01422, помогите , пожалуйста, дописать скрипт, я так понимаю, что ошибка в том, что выводится не одна строка, а несколько и скорее всего нужен курсор, но сколько не пытался, все равно ошибка появляется
...
Рейтинг: 0 / 0
19.05.2021, 12:04
    #40071278
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
007alex3
помогите
Чудак, а какую задачу ты решаешь?
...
Рейтинг: 0 / 0
19.05.2021, 12:08
    #40071280
007alex3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
Elic
007alex3
помогите
Чудак, а какую задачу ты решаешь?

Необходимо вывести строки столбца
...
Рейтинг: 0 / 0
19.05.2021, 12:16
    #40071283
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
007alex3,

А документацию читать - это для лохов?
...
Рейтинг: 0 / 0
19.05.2021, 12:18
    #40071284
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
007alex3
скорее всего нужен курсор, но сколько не пытался, все равно ошибка появляется

И как именно пытался?
...
Рейтинг: 0 / 0
19.05.2021, 14:29
    #40071333
007alex3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
Elic, я советы просил?
...
Рейтинг: 0 / 0
19.05.2021, 14:34
    #40071338
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
007alex3,

самое простое примерно так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
    OPEN c FOR 'select '||colnam||' from DWH_gate.T$TERMINAL';
    LOOP
        FETCH c INTO ...;
        EXIT WHEN c%NOTFOUND;
        dbms_output.put_line (...);
    END LOOP;
    CLOSE c;
...
Рейтинг: 0 / 0
19.05.2021, 14:40
    #40071342
007alex3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
Stax,спасибо, примерно так и получилось.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare
    type restype is table of varchar2 (64);
    res restype; 
    tabnam varchar2(200):= '&table_l' ;
    colnum int;
    colnam varchar2 (32) := &column_l;
begin
    select column_name into colnam
    from all_tab_columns
    where owner||'.'||table_name = upper (tabnam)
    and column_id = colnam;
    EXECUTE IMMEDIATE 'select '||colnam||' from '||tabnam bulk collect into res;
    for i in 1..res.count loop
        dbms_output.put_line (res(i)); 
    end loop;
end;



Только теперь проблема возникла в том, что кол-во строк превышает лимит буфера, не подскажите, с этим можно что-то сделать?
...
Рейтинг: 0 / 0
19.05.2021, 14:47
    #40071351
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
007alex3

Только теперь проблема возникла в том, что кол-во строк превышает лимит буфера, не подскажите, с этим можно что-то сделать?


Показали-же: REF CURSOR + FETCH в цикле.

SY.
...
Рейтинг: 0 / 0
19.05.2021, 14:56
    #40071360
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
007alex3

Только теперь проблема возникла в том, что кол-во строк превышает лимит буфера, не подскажите, с этим можно что-то сделать?


DBMS_OUTPUT.ENABLE (
buffer_size IN INTEGER DEFAULT 20000);
buffer_size
Upper limit, in bytes, for the amount of buffered information
Setting buffer_size to NULL specifies that there should be no limit .

ps
SERVEROUTPUT { ON | OFF } [SIZE {n | UNL[IMITED ]}]

.....
stax
...
Рейтинг: 0 / 0
19.05.2021, 14:58
    #40071362
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
007alex3

Только теперь проблема возникла в том, что кол-во строк превышает лимит буфера, не подскажите, с этим можно что-то сделать?

Установить лимит в null.
...
Рейтинг: 0 / 0
19.05.2021, 16:40
    #40071402
007alex3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
Алымов Анатолий,скажите, пожалуйста, где в null нужно прописать?
...
Рейтинг: 0 / 0
19.05.2021, 17:16
    #40071428
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 01422
007alex3
Алымов Анатолий,скажите, пожалуйста, где в null нужно прописать?

Выше Stax описал. Где свой код выполняете? В зависимости от ide настройки dbms_output свои. Для своего приложения сам управляешь.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ошибка 01422 / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]