Форум: "Базы";
Текущий архив: 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