Haskell -- <del>138</del> 137 chars
--
As a standalone program:

    r n=show n++s!!n
    s=" o'clock rock,\n":c:c:" o'clock, ":s
    c=", "
    main=putStr$(r=<<)[1..11+1]++"We're gonna rock around the clock tonight."

Edit: I used to have a helper function <tt>o</tt> used to define <tt>s</tt> by

    s=o" rock,\n":c:c:o c:s;o=(" o'clock"++)

but it turns out to cost 1 extra character.  Is there any way to compress all of the "o'clock"s / "rock"s / "ock"s?