Наверное всем хорошо известна головоломка на рисование календаря с помощью sql (pl/sql). В связи с наступающим Новым Годом, предлагаю поучаствовать в конкурсе на рисование снежинок 
Примерно вот так:
with w as (
select 40 /*размер фигуры*/ width from dual
),
s as (
select level r, w.width w from dual t, w connect by level <= w.width
)
select
pkg_geometry.getShapeRow(s.r, s.w)
from s
order by s.r
create or replace package pkg_geometry is
function getShapeRow(pRow integer, pWidth integer) return varchar2;
end pkg_geometry;
create or replace package body pkg_geometry is
function atRectangle(pRow integer, pCol integer, pWidth integer) return boolean is
begin
if ( pRow in (1, pWidth) or (pCol in (1, pWidth))) then
return true;
end if;
return false;
end atRectangle;
function atCross(pRow integer, pCol integer, pWidth integer) return boolean is
begin
if ( (pRow = pCol) or (pRow = (pWidth - pCol)) ) then
return true;
end if;
return false;
end atCross;
function atPlus(pRow integer, pCol integer, pWidth integer) return boolean is
begin
if ( (pRow = ceil(pWidth / 2)) or (pCol = ceil(pWidth / 2)) ) then
return true;
end if;
return false;
end atPlus;
function atCircle(pRow integer, pCol integer, pWidth integer) return boolean is
pRad number;
pR number:= pRow;
pC number:= pCol;
pW number:= pWidth;
begin
pRad:= pW / 2;
if (power(pR-pRad,2) + power(pC-pRad,2) - power(pRad, 2) between -5 and 5) then
return true;
end if;
return false;
end atCircle;
function getShapeRow(pRow integer, pWidth integer) return varchar2 is
res varchar2(4000);
symbol char;
begin
for i in 1..pWidth loop
if (
/*atRectangle(pRow, i, pWidth) or
atRectangle(pRow-(pWidth/4), i-(pWidth/4), ceil(pWidth/2)) or */
atCross(pRow, i, pWidth) or
atPlus(pRow, i, pWidth) or
atCircle(pRow-(pWidth/4), i-(pWidth/4), ceil(pWidth/2)) or
atCircle(pRow, i, pWidth)
) then
symbol:= 'W';
else
symbol:= ' ';
end if;
res:= res || symbol;
end loop;
return res;
end getShapeRow;
end pkg_geometry; А вот результат:
W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W WWWWW W W W W W W W W W W W W W W W W W W WW W WW W WW W WW W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W WWW W W WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW W WWW W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W WW W WW W WW W WW W W W W W W W W W W W W W W W W W W WWWWW W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W WWWWW W |