I've just been testing this out, and it looks like what you posted won't work.
However. I have found that if you do something like this:
var command = Context.Sql(
"SELECT SCHEMA.MY_FUNCTION('TEST', 'PARAM', '1') AS Data FROM DUAL")
Then if you access the dynamic returned from command.QuerySingle(), then you can get at the data:
dynamic data = new ReportLoader().MyReport(args);
var document = new XmlDocument();
using(var stream = new MemoryStream(data.Data))
using(var reader = XmlReader.Create(stream))
// blob returned from the function is now in the document
Notice that the alias 'Data' in the actual SQL is magically turned into the property on the dynamic data object which contains the byte array returned from the BLOB on the database. I assume that it will work the same for any type returned from an Oracle
function, but I haven't tested it.
Hurray for dynamic!
One thing I have noticed is that .Parameter() doesn't seem to pass the value into the sql query, maybe it's something to do with the apostrophes (which are required). I can live with doing a simple string.format, which is slightly inelegant, but not a big