Am I using the correct data types on SQL Server side to call an Oracle 10g function?
Your datatypes should be okay, however you need to change your call slightly and add OUTPUT after your @price.  I've tested this against Oracle11g on INTEGER -> INT, VARCHAR2 -> VARCHAR, DATE -> Datetime using your getTest function

exec ( 'BEGIN ? := db.pkg.getPrice(?,?,?,?); END;', @price OUTPUT, @id1, @id2, @curr, @ed ) AT ORASRV