You could pass the file in as chunks of a CLOB, although it's clunky. You could then use PL/SQL (if you're on Oracle) to do the CSV processing. But to be honest it's probably much easier with Java. See Martin Vajsar's last post here.
Alternatively, if you're on Oracle you can define an external table (which is like a table view of your file) then read the data directly from the file via the external table using SQL. This is great if you're doing a lot of serverside programming anyway, but is Oracle-specific.