|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.12.2013, 14:39 | #1 |
Пользователь
Регистрация: 11.10.2008
Сообщений: 82
|
Процедура в Firebird.
Всем добрый день!
Хочу попросить у вас помощи в написании процедур. Если кому то это будет не сложно сделать, буду очень признателен. Даже буду рад если дадите ссылки на хорошие инструкции по написанию процедур. Я хорошо знаю SQL и некоторые языки программирования, так что разберусь. Вот условия поставленной задачи: Написать процедуру для расчёта отгружаемого кол-ва товара клиенту со склада «Витрина», в случае дефицита товара на складе «Главный» в соответствии с правилом кратности. Можно написать на диалекте interbase (firebirtd) Входные параметры: 1. Kol – кол-во товара заказанного клиентом 2. Kol_free – текущий остаток на складе «Главный» 3. Kol_V – текущий остаток на складе «Витрина» 4. Koeff – значение кратности Выходной параметр – kol_V_otgr Правило кратности: Koeff – значение кратности - это минимальное кол-во товара, которое можно продавать со склада Витрина. Пример: Koeff=15, значит можно продавать 15,30,45 и т.д. Есть дополнительные условия: 1. Отгружается всегда ближайшее из двух возможных кратных значений кол-ва с Витрины, пример: Kol-kol_free=18 Koeff=10 Можно отгрузить 10, а можно 20 Ближайшее – 20, Делаем отгрузку =20 2. Если кол-во товара на складе Витрина < кратности (такое бывает, розничному покупателю разрешено брать поштучно), то можно продать требуемое кол-во. |
13.12.2013, 15:53 | #2 |
Пользователь
Регистрация: 11.10.2008
Сообщений: 82
|
Тут пользуясь инетом и книгой по Firebird вот что набросал:
CREATE PROCEDURE Otgruzka (Kol integer, Kol_free integer, Kol_V integer, Koeff integer) --ВХодные параметры-- RETURNS (kol_V_otgr integer) --Выходные параметры-- AS DECLARE VARIABLE X REAL --Объявил переменную дробного числа. Тут не уверен что она должна звучать как REAL-- BEGIN IF Kol_free > Kol_V then Kol_V_otgr:=0 --Если на Главном складе хватает товара, то с Витрины ничего не берём-- ELSE BEGIN x:=Kol_V-Kol_free --находим разницу, которую надо взять с Витрины-- IF x<Koeff THEN Kol_V_otgr:=x --Если разница меньше кратности, то выдаём поштучно сколько надо - ELSE Kol_V_otgr:=ROUND(x/k,0)*koeff --В этой строчке вообще не уверен в коде. Мысль в том что находим ближайшее кратное значения путём окргуления. -- END END; То есть тут сам алгоритм верный точно, а вот исполнение... Подскажите, код вообще правильно написан? |
13.12.2013, 16:25 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хранимая процедура для Firebird | Lait1989 | БД в Delphi | 1 | 15.05.2010 11:02 |
Хранимая процедура FireBird | Gurt87 | БД в Delphi | 3 | 27.01.2010 13:31 |
хранимая процедура(firebird) | alex_-87 | БД в Delphi | 8 | 03.01.2010 14:59 |
Процедура в процедура в C++ Builder | Ecosasha | C++ Builder | 2 | 06.06.2009 17:17 |