Ежедневный Архив: 07.04.2017

Oracle Beer Day SQL and PL/SQL

Песня про 99 бутылок пива

Поистине замечательный ресурс для программиста любого ранга и языка — www.99-bottles-of-beer.net, в котором более чем 1500 примеров реализации вывода песни про 99 бутылок пива на самых разных языках программирования и с использованием различных приемов. Есть и варианты на разных диалектах SQL. В свободное от работы время я соорудил и свой скрипт, не совсем верно передав текст песни, но идея, думаю, будет понятна.

  1. SELECT CASE MOD (400 - LEVEL, 4)
  2. WHEN 3
  3. THEN
  4. TRUNC ((400 - LEVEL) / 4) || ' bottles of beer on the wall'
  5. WHEN 2
  6. THEN
  7. TRUNC ((400 - LEVEL) / 4) || ' bottles'
  8. WHEN 1
  9. THEN
  10. 'Drink 1 bottle...'
  11. ELSE
  12. CASE
  13. WHEN LEVEL < 396
  14. THEN
  15. TRUNC ((400 - LEVEL) / 4) - 1 || ' bottles left'
  16. ELSE
  17. 'No more bottles on the wall'
  18. END
  19. END
  20. 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