Поистине замечательный ресурс для программиста любого ранга и языка – www.99-bottles-of-beer.net, в котором более чем 1500 примеров реализации вывода песни про 99 бутылок пива на самых разных языках программирования и с использованием различных приемов. Есть и варианты на разных диалектах SQL. В свободное от работы время я соорудил и свой скрипт, не совсем верно передав текст песни, но идея, думаю, будет понятна.
- SELECT CASE MOD (400 - LEVEL, 4)
- WHEN 3
- THEN
- TRUNC ((400 - LEVEL) / 4) || ' bottles of beer on the wall'
- WHEN 2
- THEN
- TRUNC ((400 - LEVEL) / 4) || ' bottles'
- WHEN 1
- THEN
- 'Drink 1 bottle...'
- ELSE
- CASE
- WHEN LEVEL < 396
- THEN
- TRUNC ((400 - LEVEL) / 4) - 1 || ' bottles left'
- ELSE
- 'No more bottles on the wall'
- END
- END
- FROM DUAL CONNECT BY LEVEL <= 396
Результат:
99 bottles of beer on the wall
99 bottles
Drink 1 bottle...
98 bottles left
98 bottles of beer on the wall
98 bottles
Drink 1 bottle...
...
Drink 1 bottle...
1 bottles left
1 bottles of beer on the wall
1 bottles
Drink 1 bottle...
No more bottles on the wall