powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Динамический SQL
12 сообщений из 12, страница 1 из 1
Динамический SQL
    #39828078
StVs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!

Прошу помощи, т.к. уже 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
Динамический SQL
    #39828079
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StVs,

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

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

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

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

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

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

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


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