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

Вниз

Нетривиальный 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;
Скачать: CL | DM;

Наверх




Память: 0.44 MB
Время: 0.004 c
1-26172
Vint
2002-04-25 12:03
2002.05.09
расположение кнопок на CoolBar


3-25976
Виктор5
2002-04-13 10:38
2002.05.09
Знатоки, как вывести в случайном порядке записи из БД в DBGrid


3-26002
anp
2002-04-15 18:00
2002.05.09
Ошибка


1-26117
vlv
2002-04-24 14:37
2002.05.09
Обработка нажатия клавиш


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