Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Тело процедуры???  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Доброго времени суток.
Интересует следуюющий вопрос:

возможно ли в тело процедуры вставить код на отлючение ключа.
Например, я пытаюсь сделать так

CREATE OR REPLACE  PROCEDURE "INFORMIX"."DISAB" as
begin
alter table summaries_np
DISABLE CONSTRAINT SYS_C003658;
end;

но выдает ошибку: встретился символ alter, когда ожидалось..........
Может есть какие нибуть нюансы.
заранее спасиба
8 ноя 06, 16:20    [3370112]     Ответить | Цитировать Сообщить модератору
 Re: Тело процедуры???  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
Есть нюансы.

EXECUTE IMMEDIATE

ИМХО, сама идея очень сомнительна ...
8 ноя 06, 16:23    [3370142]     Ответить | Цитировать Сообщить модератору
 Re: Тело процедуры???  [new]
alf123
Guest
pravednik
Доброго времени суток.
Интересует следуюющий вопрос:

возможно ли в тело процедуры вставить код на отлючение ключа.
Например, я пытаюсь сделать так

CREATE OR REPLACE  PROCEDURE "INFORMIX"."DISAB" as
begin
alter table summaries_np
DISABLE CONSTRAINT SYS_C003658;
end;

но выдает ошибку: встретился символ alter, когда ожидалось..........
Может есть какие нибуть нюансы.
заранее спасиба


Dynamic SQL.

CREATE OR REPLACE  PROCEDURE "INFORMIX"."DISAB" as
v_SQL varchar2(2000);
begin
v_SQL := 'alter table summaries_np DISABLE CONSTRAINT SYS_C003658' ;
execute immediate v_SQL;
end;
8 ноя 06, 16:23    [3370145]     Ответить | Цитировать Сообщить модератору
 Re: Тело процедуры???  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
pravednik
Может есть какие нибуть нюансы.
Угуе они самые, нюансы.
- действительно ли Вам это надо в PL
- и если на первый ответ убедительное да, то пользуйтесь динамическим SQLем ;)
8 ноя 06, 16:24    [3370155]     Ответить | Цитировать Сообщить модератору
 Re: Тело процедуры???  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
1) динамический сиквел используйте, ибо нет в pl/sql команд alter/create/drop и т.п. из ddl сиквела.
2) подумайте крепко, то ли вы хотите.. Это чаще всего - зло..
8 ноя 06, 16:25    [3370166]     Ответить | Цитировать Сообщить модератору
 Re: Тело процедуры???  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
orawish
1) динамический сиквел используйте, ибо нет в pl/sql команд alter/create/drop и т.п. из ddl сиквела.
2) подумайте крепко, то ли вы хотите.. Это чаще всего - зло..



я пониамю, что зло....Просто стоит такая задача:
Из приложения на ПХП нужно отключить ключи в трех таблицах, после этого запускается процедура, которая произодит сбор статистических данных. После ее завершения ключи снова нужно включить.....

может что посоветуете...разработчик не я.....его вообще не сыскать :)
8 ноя 06, 18:13    [3371233]     Ответить | Цитировать Сообщить модератору
 Re: Тело процедуры???  [new]
Brenagwynn
Member

Откуда: я такой взялся?
Сообщений: 89
pravednik
Просто стоит такая задача:
Из приложения на ПХП нужно отключить ключи в трех таблицах, после этого запускается процедура, которая произодит сбор статистических данных. После ее завершения ключи снова нужно включить.....

1. Зачем для сбора какой-то статистики нужно выключать ключи?
2. А если за время этого сбора статистики пройдет какое-то изменение данных с нарушением ключей? Что потом?
8 ноя 06, 18:18    [3371270]     Ответить | Цитировать Сообщить модератору
 Re: Тело процедуры???  [new]
Elic
Member

Откуда:
Сообщений: 29977
pravednik
Из приложения на ПХП нужно отключить ключи в трех таблицах, после этого запускается процедура, которая произодит сбор статистических данных. После ее завершения ключи снова нужно включить.....
может что посоветуете...
RTFM Deferred Constraint Checking (FAQ)
8 ноя 06, 18:20    [3371296]     Ответить | Цитировать Сообщить модератору
 Re: Тело процедуры???  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Brenagwynn
pravednik
Просто стоит такая задача:
Из приложения на ПХП нужно отключить ключи в трех таблицах, после этого запускается процедура, которая произодит сбор статистических данных. После ее завершения ключи снова нужно включить.....

1. Зачем для сбора какой-то статистики нужно выключать ключи?
2. А если за время этого сбора статистики пройдет какое-то изменение данных с нарушением ключей? Что потом?


Статистика собирается и результаты вставляются в эти таблицы. Перед вставкой таблицы чистятся.

За время сбора изменения данных не происходят. Это точно.
8 ноя 06, 18:24    [3371337]     Ответить | Цитировать Сообщить модератору
 Re: Тело процедуры???  [new]
Brenagwynn
Member

Откуда: я такой взялся?
Сообщений: 89
pravednik

Статистика собирается и результаты вставляются в эти таблицы. Перед вставкой таблицы чистятся.
За время сбора изменения данных не происходят. Это точно.


Когда говорят "данные точно не могут измениться" - это часто приводит к большим неприятностям :)
В таком случае зачем там вообще констрейнты? Типа "целостность есть, но не очень"...
8 ноя 06, 18:28    [3371376]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить