RAND in T-sql function
I found this at http://zarez.net/?p=2192 (author not immediately evident) - how to cheat around this.  RAND() may count as "a side-effecting operator" because it updates the seed-number that the RAND() function uses, ready to produce the next "random" number.  Here's the cheat:

CREATE VIEW Get_RAND
AS
SELECT RAND() AS MyRAND
GO


You can read a value from a view like that in a function, but maybe there's some deep reason not to... or on the other hand, maybe it was forbidden in the first place without a good reason?