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

Вниз

Нетривиальный UPDATE   Найти похожие ветки 

 
sky3d   (2002-04-15 11:34) [0]

Здравствуйте ! Возникла необходимось обновления данных, используя SP при следующих условиях:

- Обновляем поле Produced !

- по ключевому полю Code для обновления доступна не одна, а несколько записей, т.е. значение необходимо разложить по каждой из них в соответствии со значением другого поля ( <= Planned).
условие типа WHERE CODE = 1

- какой уникальный ключ ID в момент обновления выбрать нет возможности, т.к. он неизвестен
т.е. запрос типа UPDATE .. WHERE ID = 1 отпадает

Теперь подробнее :
ID Code Planed Produced
1 1 5 0
2 1 2 0
3 1 2 0
Пусть необходимо по Сode = 1 положить значение 8 , должны получить
ID Code Planed Produced
1 1 5 5 +5 (от 8 осталось 3)
2 1 2 2 +2 (от 3 осталось 1)
3 1 2 1 +1 (значение исчерпанно )
------------------
сумма дает исходное 8
Может быть это можно сделать, использую курсоры или еще что либо ?
Надеюсь на помощь, заранее благодарен за ответы
Sky3d


 
Mike S   (2002-04-15 11:43) [1]

Думаю одним курсором не отделаешься.
Нужна еще куча переменных и условий.
Не знаю, как это будет под Oracle.


 
roottim   (2002-04-15 11:57) [2]

точно не проверял!... но примерно так!
procedure xxx(val integer)
is
cursor cur is
select planed,produced
from t1
order by planed desc
for update;
n integer;
begin
n:=val;
for c in cur loop
if c.planed<=n then
c.produced:=c.planed;
n:=n-c.planed;
else
c.produced:=n;
end if;
end loop;
end;



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

Форум: "Базы";
Текущий архив: 2002.05.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.006 c
14-26224
lipskiy
2002-03-31 23:38
2002.05.09
Кто связан с автомобилями, заходите сюда, вопросик есть о законах


1-26051
Freek
2002-04-25 15:47
2002.05.09
Как нажать на кнопку?


1-26086
Glonia Zbanov
2002-04-26 15:20
2002.05.09
Имена NT server


1-26190
perov
2002-04-25 09:39
2002.05.09
Сравнение двух строк


6-26209
Sergo
2002-02-26 17:46
2002.05.09
ПРИВЕТ ВСЕМ МАСТЕРАМ...И ВОТ ВОПРОСИК ТАКОЙ ВСПЛЫЛ!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский