Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Как сделать одним оператором (oracle) ?   Найти похожие ветки 

 
ANB ©   (2006-06-09 12:49) [0]

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


 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;


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


 
ЮЮ ©   (2006-06-09 12:56) [1]

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

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

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


 
ANB ©   (2006-06-09 13:05) [2]


> Даже 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;
 -- (С) Александр Просторов


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


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

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


 
ЮЮ ©   (2006-06-09 13:19) [4]

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

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


 
ANB ©   (2006-06-09 13:21) [5]


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

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


 
Sergey13 ©   (2006-06-09 13:26) [6]

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


 
ЮЮ ©   (2006-06-09 13:27) [7]

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


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


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

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


 
Val ©   (2006-06-09 15:08) [9]

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


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


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

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

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


 
ANB ©   (2006-06-09 15:47) [11]


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

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


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

Например?


 
ANB ©   (2006-06-09 16:43) [13]

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


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

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

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

С уважением!


 
Val ©   (2006-06-09 16:59) [15]

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



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.059 c
15-1152709539
oldman
2006-07-12 17:05
2006.08.13
Ультиматум истек - Microsoft оштрафован


2-1153753032
VitV
2006-07-24 18:57
2006.08.13
Форматирование текста в DBRichedit.


2-1153692356
Soubi
2006-07-24 02:05
2006.08.13
добавление компонента


4-1145281643
dskin
2006-04-17 17:47
2006.08.13
чтение из "занятого" файла


2-1153833875
Homo Sapiens
2006-07-25 17:24
2006.08.13
Проблема с реестром