Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Динамический SQL / 12 сообщений из 12, страница 1 из 1
19.06.2019, 07:08
    #39828078
StVs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
День добрый!

Прошу помощи, т.к. уже 2 суток ломаю голову и не могу понять в чем проблема. Есть процедура:


Код: plsql
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.
26.
27.
28.
29.
30.
31.
Procedure aaa(old_id  number
                   ) is
res varchar2(10);
begin
   for c in (select * from all_tab_columns where column_name = 'SUB_ID')
   loop
      res := bbb(c.owner, c.table_name, old_id);

      --еще много чего...

   end loop;
   dbms_output.put_line('OK');
   --еще много чего...
   exception when others then
      dbms_output.put_line('Error');
      null;
end;

Function bbb(p_owner varchar2,
                      p_table_name varchar2,
                      old_id  number
                      ) return number is
strque  varchar2(4000);
cnt    number;
begin
   strque := 'select count(*) from ' || p_owner || '.' || p_table_name || ' where sub_id = ' || old_id;
   execute immediate strque into cnt;
   
   return cnt;

end;


При выполнении процедуры - aaa она уходит в exception, последнее что пытается выполнить это "execute immediate strque into cnt;"

В тоже время если я запускаю скрипт (явно прописав пользователя и название таблицы) все проходит как надо
Код: plsql
1.
2.
3.
4.
5.
6.
declare
 res number;
begin
 res := bbb('test','tbl_test', 2);
 dbms_output.put_line(res);
end;



Может кто сталкивался? Что не так?
...
Рейтинг: 0 / 0
19.06.2019, 07:10
    #39828079
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
StVs,

ошибку, с которой сваливается - предлагается угадать?
...
Рейтинг: 0 / 0
19.06.2019, 07:12
    #39828081
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
StVs,

суть решаемой задачи какая? а то, может, и динамики никакой не надо?
...
Рейтинг: 0 / 0
19.06.2019, 07:15
    #39828082
StVs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
найти все таблицы во всех схемах которые имеют данное поле, и заменить старый id на новый
...
Рейтинг: 0 / 0
19.06.2019, 07:16
    #39828083
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
Щукина Аннаошибку, с которой сваливается - предлагается угадать?Очевидно же - ErrorStVsломаю головуБыло бы, что ломать, было бы, чем подумать, как локализовать проблему.
...
Рейтинг: 0 / 0
19.06.2019, 07:30
    #39828085
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
StVs
Код: plsql
1.
2.
3.
4.
exception when others then
      dbms_output.put_line('Error');
      null;
end;

Что не так?Гены, увы… Или чебурашки… Т.е. ты сам себе злобный буратино. Но не расстраивайся - вас таких тыщи тыщ.
...
Рейтинг: 0 / 0
19.06.2019, 07:31
    #39828086
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
-2-Очевидно же - ErrorНу, формально - с этой ошибкой оно вываливается из эксепшена, а не сваливается в него. Поэтому вопрос остается в силе - с какой ошибкой сваливается?
...
Рейтинг: 0 / 0
19.06.2019, 07:50
    #39828093
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
Щукина Аннас какой ошибкой сваливаетсяТак ли важна одна конкретная из нескольких очевидных ошибок реализации, если постановка задачи хромает.
...
Рейтинг: 0 / 0
19.06.2019, 07:56
    #39828099
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
Щукина АннаПоэтому вопрос остается в силе - с какой ошибкой сваливается?Нужно соблюдать баланс в уважении себя при очевидном неуважении тс ко всем, в том числе и к себе.
...
Рейтинг: 0 / 0
19.06.2019, 08:22
    #39828106
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
StVs,

1) закоментируйте (или обработайте докладнее) exception when others then и увидете ошибку
2) выведите для отладки strque
3) слетать может напр из-за наименования таблиц (некоторые любят двойные кавычки)

.....
stax
...
Рейтинг: 0 / 0
20.06.2019, 06:43
    #39828627
StVs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
Спасибо, всем кто откликнулся, проблема была в том, что пакет компилировал под пользователя, у которого отсутствовали гранты на эту схему.
А при вызове из скрипта, работал по sysdba;

dbms_output.put_line('Error'); - написал для примера, а по факту SQLERRM в том то и дело, что ничего не давал.

Вопрос можно снимать с обсуждения
...
Рейтинг: 0 / 0
20.06.2019, 08:19
    #39828639
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL
StVs SQLERRM в том то и дело, что ничего не давал.Твоя неспособность понять текст sqlerrm не повод заменять его на 'Error'.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Динамический SQL / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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