port GildedRose to Oracle PL/SQL table and stored procedure

This commit is contained in:
Peter Kofler committed 2014-04-13 14:03:24 +02:00
1 parent 16b7b46653
commit 1ad3fcd95e
5 files changed
+148

No files matched your search

+66
View File
@@ -0,0 +1,66 @@
CREATE OR REPLACE PROCEDURE update_quality
IS
CURSOR c_items IS
SELECT name, sell_in, quality FROM item FOR UPDATE;
l_item c_items%ROWTYPE;
l_name item.name%TYPE;
l_sell_in item.sell_in%TYPE;
l_quality item.quality%TYPE;
BEGIN
FOR l_item IN c_items
LOOP
l_name := l_item.name;
l_sell_in := l_item.sell_in;
l_quality := l_item.quality;
IF l_name != 'Aged Brie' AND l_name != 'Backstage passes to a TAFKAL80ETC concert' THEN
IF l_quality > 0 THEN
IF l_name != 'Sulfuras, Hand of Ragnaros' THEN
l_quality := l_quality - 1;
END IF;
END IF;
ELSE
IF (l_quality < 50) THEN
l_quality := l_quality + 1;
IF l_name = 'Backstage passes to a TAFKAL80ETC concert' THEN
IF l_sell_in < 11 THEN
IF l_quality < 50 THEN
l_quality := l_quality + 1;
END IF;
END IF;
IF l_sell_in < 6 THEN
IF l_quality < 50 THEN
l_quality := l_quality + 1;
END IF;
END IF;
END IF;
END IF;
END IF;
IF l_name != 'Sulfuras, Hand of Ragnaros' THEN
l_sell_in := l_sell_in - 1;
END IF;
IF l_sell_in < 0 THEN
IF l_name != 'Aged Brie' THEN
IF l_name != 'Backstage passes to a TAFKAL80ETC concert' THEN
IF l_quality > 0 THEN
IF l_name != 'Sulfuras, Hand of Ragnaros' THEN
l_quality := l_quality - 1;
END IF;
END IF;
ELSE
l_quality := l_quality - l_quality;
END IF;
ELSE
IF l_quality < 50 THEN
l_quality := l_quality + 1;
END IF;
END IF;
END IF;
UPDATE item
SET name = l_name, sell_in = l_sell_in, quality = l_quality WHERE CURRENT OF c_items;
END LOOP;
END update_quality;
/