powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Процедура с динамическим SQL - что я делаю не так?
7 сообщений из 7, страница 1 из 1
Процедура с динамическим SQL - что я делаю не так?
    #39394459
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, что неправильно в таком примере:
Код: 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.
32.
33.
34.
DECLARE

  --Helper objects
  ERR_TABLE_NOT_EXIST EXCEPTION;
  PRAGMA EXCEPTION_INIT (ERR_TABLE_NOT_EXIST, -00942);

BEGIN

  --Prepare DBMS
  DBMS_OUTPUT.ENABLE;
  DBMS_OUTPUT.PUT_LINE ('-');

  --Store resultset into temporary table
  BEGIN
    insert into TMP_INACTIVE_CLIENTS (CUSTOMER_ID, GROUP_NAME)
    select C.CUSTOMER_ID, G.NAME as GROUP_NAME
    from ...;
  EXCEPTION
    when ERR_TABLE_NOT_EXIST then
      BEGIN
        execute immediate('create global temporary table TMP_INACTIVE_CLIENTS (CUSTOMER_ID number not null, GROUP_NAME varchar2(100)) on commit delete rows');
        execute immediate('alter table TMP_INACTIVE_CLIENTS add (constraint TMP_INACTIVE_CLIENT_PK primary key (CUSTOMER_ID))');
        null;
      END;
    when OTHERS then raise;
  END;

<<done>>
open :RECORDSET for
select * from TMP_INACTIVE_CLIENTS
;

END;
/



При запуске получаю сообщение об ошибке из-за несуществующего объекта TMP_INACTIVE_CLIENTS.
Но разве он не должен быть создан в обработчике?

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Процедура с динамическим SQL - что я делаю не так?
    #39394469
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Подскажите, что неправильно в таком примере
переходи на мускул, там считается нормальным создавать таблицы из процедуры
...
Рейтинг: 0 / 0
Процедура с динамическим SQL - что я делаю не так?
    #39394470
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Но разве он не должен быть создан в обработчике?Включи мозг и пойми, что, чтобы попасть в кусок кода, этот код нужно сперва скомпилировать.

Говнокод detected.
...
Рейтинг: 0 / 0
Процедура с динамическим SQL - что я делаю не так?
    #39394474
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123ййтам считается нормальным создавать таблицы из процедуры
Ну допустим не таблицу, а временную таблицу.
И честно говоря не вижу криминала в сценарии "для вспомогательных данных создать объект, затем его удалить".

ElicВключи мозг и пойми, что, чтобы попасть в кусок кода, этот код нужно сперва скомпилировать.
Из этого следует, что временную таблицу нужно создать перед тем, как она будет использована в процедуре (или использовать в процедуре динамический SQL)?
Странный подход. Ок, сделаю таблицу заранее.
...
Рейтинг: 0 / 0
Процедура с динамическим SQL - что я делаю не так?
    #39394510
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Из этого следует, что временную таблицу нужно создать перед тем, как она будет использована в процедуре (или использовать в процедуре динамический SQL)?
Странный подход.
Ничего странного, как уже сказал Elic, код для выполния нужно сначала скомпилировать, и ошибка выпадает на этапе комипиляции, до выполнения дело не доходит.
Обернув insert в execute immediate, компиляция проходит без проверки начия таблицы и код отрабатывет корректно...
...
Рейтинг: 0 / 0
Процедура с динамическим SQL - что я делаю не так?
    #39394703
Futbolist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если бы это скомпилировалось, то потеряли бы одного неактивного клиента при первом Insert-е )
...
Рейтинг: 0 / 0
Процедура с динамическим SQL - что я делаю не так?
    #39395235
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Ничего странного

Более того, по временным таблицам можно собрать статистику, построить индексы, а так тебе эти буквы придётся тоже в коде поддерживать...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Процедура с динамическим SQL - что я делаю не так?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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