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

Откуда: Mariupol, Ukraine
Сообщений: 871
Здравствуйте, все! У меня есть три таблицы, в каждой из них триггер, в триггерах написаны SELECT`ы. SELECT`ы похожи друг на друга и отличаются лишь таблицами, из которых произодится выборка. Как мне эти SELECT`ы вынести в процедуру? Читал на форуме о каком-то SYS.ODCI, но не понял как его применять. Как можно реализовать вышесказанное или посоветуйте какую-нибудь документашку по этому поводу. Спасибо.
23 авг 11, 13:44    [11163762]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
TopCore,
Только Dynamic SQL
23 авг 11, 13:51    [11163844]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
publexus
Member

Откуда: Москва
Сообщений: 955
TopCore,

Не особо понятно, что ты хочешь.
Если не хочется дублировать запрос , то можешь написать функцию, которой передаешь имя таблицы, а она формирует и возвращает sql-запрос в виде строки, и ты его далее исполняешь через execute immediate. Можешь сразу и выполнять зарос в функции и возвращать курсор, но тогда еще надо будет передавать в функцию и связываемые параметры (если они есть).
23 авг 11, 13:54    [11163888]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
TopCore,

луркай в сторону dsql. селект то хоть в триггерах не из тех таблиц, на которые они повешены?
23 авг 11, 13:55    [11163894]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
crazy_hands
Member

Откуда: Россия
Сообщений: 170
TopCore,

Почему так сложно? Что мешает в процедуру передать источник, а в ней написать условия.
procedure xxx(p_source in varchar2)
is
begin
if(p_source='SELECT1') Then
    SELECT .......
else
    SELECT .....
end if;
end xxx;
23 авг 11, 13:55    [11163895]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
-2-
Member

Откуда:
Сообщений: 15330
TopCore,

authid current_user
23 авг 11, 14:27    [11164281]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51816

TopCore
Как можно реализовать вышесказанное

Ради трёх триггеров?..

Posted via ActualForum NNTP Server 1.4

23 авг 11, 14:40    [11164402]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
TopCore
Member

Откуда: Mariupol, Ukraine
Сообщений: 871
ORA__SQL
Только Dynamic SQL
Спасибо, посмотрю эту тему.
comphead
селект то хоть в триггерах не из тех таблиц, на которые они повешены?
Из тех, на которые повешены.
crazy_hands
Почему так сложно? Что мешает в процедуру передать источник, а в ней написать условия.
procedure xxx(p_source in varchar2)
is
begin
if(p_source='SELECT1') Then
    SELECT .......
else
    SELECT .....
end if;
end xxx;
То же самое, что у меня реализовано, только вид сбоку.
-2-
authid current_user
Не буду спрашивать, что это такое. Лучше тоже почитаю где-нибудь.
Dimitry Sibiryakov
Ради трёх триггеров?..
Ради идеи, которая меня посетила, и опыта.
23 авг 11, 15:06    [11164749]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51816

TopCore
Ради идеи, которая меня посетила, и опыта.

Угу, понятно. У тех, кого посетили аналогичные... кхм... "идеи", следующими вопросами
бывают "как определить на какой таблице сработал триггер" и "как повесить один триггер на
несколько таблиц".

Posted via ActualForum NNTP Server 1.4

23 авг 11, 15:21    [11164937]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
TopCore
Member

Откуда: Mariupol, Ukraine
Сообщений: 871
Dimitry Sibiryakov
Угу, понятно. У тех, кого посетили аналогичные... кхм... "идеи", следующими вопросами
бывают "как определить на какой таблице сработал триггер" и "как повесить один триггер на
несколько таблиц".
Я правильно Вас понял: пусть лучше SELECT повторяется в триггерах, но система будет надёжней.
23 авг 11, 15:26    [11164985]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
[quot Dimitry Sibiryakov]
TopCore
как повесить один триггер на несколько таблиц
сделать одну процедуру и ..
create trigger some_trigger
before update
on some_table
for each row
call some_procedure(...)
23 авг 11, 15:47    [11165217]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
Elic
Member

Откуда:
Сообщений: 29991
comphead
луркай
RTFM Правила
23 авг 11, 15:48    [11165229]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
TopCore
Member

Откуда: Mariupol, Ukraine
Сообщений: 871
--Eugene--
сделать одну процедуру и ..
create trigger some_trigger
before update
on some_table
for each row
call some_procedure(???)
Я вот так и хотел изначально. Вопрос в том, что вместо вопросиков (или троеточия) передавать и как в some_procedure принимать/обрабатывать этот передаваемый параметр?
Пока читаю Dynamic SQL.
23 авг 11, 16:03    [11165365]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51816

TopCore
Я правильно Вас понял: пусть лучше /SELECT/ повторяется в триггерах, но система будет
надёжней.

Нет, я просто издеваюсь над тем, как спроектирована твоя база.

Posted via ActualForum NNTP Server 1.4

23 авг 11, 16:09    [11165431]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
TopCore
Member

Откуда: Mariupol, Ukraine
Сообщений: 871
Dimitry Sibiryakov
Нет, я просто издеваюсь над тем, как спроектирована твоя база.

А как нужно спроектировать, чтобы не было издевательств? Три таблицы мои - это справочники. Их в один справочник объединить? Смысла не вижу. А вот обработку событий - как объединить я не знаю. Поэтому обратился на форум.
23 авг 11, 16:15    [11165499]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
TopCore
Dimitry Sibiryakov
Нет, я просто издеваюсь над тем, как спроектирована твоя база.

А как нужно спроектировать, чтобы не было издевательств? Три таблицы мои - это справочники. Их в один справочник объединить? Смысла не вижу. А вот обработку событий - как объединить я не знаю. Поэтому обратился на форум.


выпостаьте задачу, как поставлена вам
23 авг 11, 16:25    [11165618]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
Клоун
Guest
Elic
Правила

Тебе бы тоже не мешало читать научиться, кстати.
правила
Запрещается:
публикация грубых, оскорбляющих и унижающих сообщений
23 авг 11, 16:27    [11165642]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
TopCore
Member

Откуда: Mariupol, Ukraine
Сообщений: 871
comphead, дело в том, что я поставил себе задачу сам (переработка приложения серверной и клиентской части). Задача: должны быть справочники по цехам, дирекциям, объектам. Структура у них одинаковая и обрабатываются одинаково. Поскольку они одинаковые, я подумал, что можно это всё дело оптимизировать. А как, пока не знаю.
23 авг 11, 16:29    [11165666]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
TopCore
Структура у них одинаковая и обрабатываются одинаково
а как же внешние ключи?
23 авг 11, 16:31    [11165682]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
TopCore
comphead, дело в том, что я поставил себе задачу сам (переработка приложения серверной и клиентской части). Задача: должны быть справочники по цехам, дирекциям, объектам. Структура у них одинаковая и обрабатываются одинаково. Поскольку они одинаковые, я подумал, что можно это всё дело оптимизировать. А как, пока не знаю.


я пока не могу понять, в чем именно оптимизация....
23 авг 11, 16:45    [11165811]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51816

TopCore
Их в один справочник объединить? Смысла не вижу.

А то, что исчезнет главная проблема этого топика тебе недостаточно?..

Posted via ActualForum NNTP Server 1.4

23 авг 11, 17:56    [11166470]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
DВА
Member

Откуда:
Сообщений: 5439
TopCore
comphead, дело в том, что я поставил себе задачу сам (переработка приложения серверной и клиентской части). Задача: должны быть справочники по цехам, дирекциям, объектам. Структура у них одинаковая и обрабатываются одинаково. Поскольку они одинаковые, я подумал, что можно это всё дело оптимизировать. А как, пока не знаю.

Я так понимаю в вашем понимании "оптимизация" - это меньше букв в коде?
23 авг 11, 18:11    [11166590]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
DВА
Я так понимаю в вашем понимании "оптимизация" - это меньше букв в коде?

pl/sql golf
23 авг 11, 18:19    [11166656]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
TopCore
Member

Откуда: Mariupol, Ukraine
Сообщений: 871
--Eugene--
а как же внешние ключи?
Внешние ключи "подходят" от др. таблиц к этим справочникам.
Dimitry Sibiryakov
А то, что исчезнет главная проблема этого топика тебе недостаточно?..
Пожалуй Вы правы в том, чтобы эти три справочника объединить в один. Спасибо за совет.
DВА
Я так понимаю в вашем понимании "оптимизация" - это меньше букв в коде?
В моём понимании, оптимизация - это увеличение быстродействия за счёт удаления/добавления некоторого числа строк + читабельность кода.
Всем большое спасибо за советы в этом топике.
23 авг 11, 23:51    [11168249]     Ответить | Цитировать Сообщить модератору
 Re: Передача таблицы как параметр в процедуру  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
TopCore
Пожалуй Вы правы в том, чтобы эти три справочника объединить в один
без обид, но разве вы не поняли, что это была лишь злая шутка?
объединять справочники - это бы мне и в голову не пришло, поскольку этот бред и рядом не стоит с "оптимизацией".

а чисто ради всеобщего интереса - не покажете ли исходный текст триггера, который, якобы, един для всех этих справочников?
24 авг 11, 01:51    [11168545]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить