Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать одним оператором (oracle) ? [D7]


ANB ©   (2006-06-09 12:49:00) 

Имеем хранимку :


 procedure Set_Param (p_Param_Name in varchar2, p_Param_Value in varchar2) is
 begin
 -- Попробуем изменить
 update Common$Configuration
    set Param_Value = p_Param_Value
  where Param_Name = lower (p_Param_Name);

 if (sql%rowcount = 0)
 then
   -- Если параметр не найден - добавим
   insert into Common$Configuration
               (Param_Name, Param_Value
               )
        values (lower (p_Param_Name), p_Param_Value
               );
 end if;
 end Set_Param;


Как такую конструкцию заменить одним оператором ?


Val   (2006-06-09 16:59:00) [1]

>Зачем при этом генерить хранимки ?
Незачем. Сергей уже говорил про блоки.


saxon   (2006-06-09 16:47:00) [2]

:)
Ну это то конечно! Можно тогда сюдаже добавить и тесты.

Ладно все-таки это офтоп, не будем продолжать.

С уважением!


ANB   (2006-06-09 16:43:00) [3]

Например, нужно сделать скрипт, который поправит базу. Зачем при этом генерить хранимки ?


saxon   (2006-06-09 15:50:00) [4]

Например?


ANB   (2006-06-09 15:47:00) [5]


> Интересно, Вы считаете что, хранимка всегда хуже?

Она не всегда уместна.


saxon   (2006-06-09 15:45:00) [6]


> ANB ©   (09.06.06 14:07) [8]

Незнаю что такое TOAD.
Интересно, Вы считаете что, хранимка всегда хуже?
Мне вот наоборот.

извиняюсь за офтооп.


Val   (2006-06-09 15:08:00) [7]

про TOAD просто убойный аргумент :)


ANB   (2006-06-09 14:07:00) [8]


> Неужели Оракл не может обычным запросом выболнить несколько
> операторов

Дык это надо хранимку создавать. А в тоаде удобнее выполнять не безымяный блок, а один DML.


ЮЮ   (2006-06-09 13:27:00) [9]

Неужели Оракл не может обычным запросом выболнить несколько операторов, помещенных в хранимку?
Тогда МS SQL рулит!!!


Sergey13   (2006-06-09 13:26:00) [10]

2[5] ANB ©   (09.06.06 13:21)
А раньше неименованным блоком нельзя было?


ANB   (2006-06-09 13:21:00) [11]


> количество строк выросло, операторы появились непосвященным
> непонятные.

Хм. Теперь эту операцию можно не из хранимки выполнять. А обычным запросом.


ЮЮ   (2006-06-09 13:19:00) [12]

Рекламная акция похоже:
 такая проблема, аж на форум тянет
 через 15 минут - решение

>что выиграли, не подскажете? 8О
количество строк выросло, операторы появились непосвященным непонятные.
Оракл рулит !!!, одним словом


Val   (2006-06-09 13:12:00) [13]

что выиграли, не подскажете? 8О


ANB   (2006-06-09 13:05:00) [14]


> Даже oracle, надеюсь,  не додумается Insert и Update объединить
> в одном операторе :)

Додумался :


 procedure Set_Param (p_Param_Name in varchar2, p_Param_Value in varchar2) is
 begin
   merge into Common$Configuration Cfg
        using dual
           on (Cfg.Param_Name = lower (p_Param_Name))
     when matched then
       update
          set Param_Value = p_Param_Value
     when not matched then
       insert (Param_Name, Param_Value)
       values (lower (p_Param_Name), p_Param_Value);
 end Set_Param;
 -- (С) Александр Просторов


Оракл рулит !!!


ЮЮ   (2006-06-09 12:56:00) [15]

Даже oracle, надеюсь,  не додумается Insert и Update объединить в одном операторе :)

Оставить только Insert , а в Триггере Insted Of Insert (если такой имеется у oracle) подменить на Update.

P/S/ А оно это надо?


Наверх

Титульная страница Поиск, карта сайта Написать письмо