Seu problema é que não há uma maneira fácil de fazer isso para SQLServer e Oracle em uma consulta.
A maneira correta de fazer isso para SQLServer é usar STR:
Select STR(Amount, 18, DecimalPlaces) from myTable;
A maneira correta de fazer isso para Oracle é usando to_char:
SELECT to_char (amount, '99999999999999.'||rpad('',DecimalPlaces, '0'))
from MyTable;
As consultas apresentadas por jms e Andrew não funcionarão em uma consulta Oracle porque o Oracle SQL usa LENGTH() e não LEN(). E o Oracle usa to_char() e não Cast().