Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Вниз

Как сделать одним оператором (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.04 c
2-1153920665
UMU
2006-07-26 17:31
2006.08.13
DateTimePicker и Edit


1-1151743737
mrAld
2006-07-01 12:48
2006.08.13
сборка через консоль


2-1153854290
men-hen
2006-07-25 23:04
2006.08.13
процессы


15-1152693914
Furyz-dimodim
2006-07-12 12:45
2006.08.13
Биллинг ... и учет траффика


15-1152868726
Сергей М.
2006-07-14 13:18
2006.08.13
TurboPower AsyncPro





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский