PL/SQL, Oracle's procedural programming language, is a solid choice for an ETL tool. However, you must realize that PL/SQL is not an ETL tool, but a programming language with almost unlimited ETL capabilities.
If you do decide that PL/SQL is your ETL "tool" of choice, you will find that any ETL function that you require will be available. So if you wish to read files into the database, you can use an external table or SQL*Loader, but if you use PL/SQL you could use the UTL_FILE package and then use looping and conditional processing as you require. The options are almost limitless.
So I think that PL/SQL could be your ETL solution if you have no other tools available. Another approach might be writing procedures, packages and functions that may be used by an ETL tool. This is usually done when complicated transformations cannot be efficiently implemented in the ETL.
As you can see PL/SQL fits well into any ETL process.
This was first published in March 2006