Why would you want a PL/SQL stored procedure to call a program written in another language? Common reasons include:
Many organizations have access to large volumes of third-party and/or in-house code that functions perfectly well (and is not written in PL/SQL). For example, there is more than one free, open source version of Z39.50 retrieval software.
Many operations that are impossible in PL/SQL are relatively easy in other languages (for example, sending a document to a printer).
Some tasks, such as computationally intensive operations that don't require a lot of database I/O, may run much faster in other languages.
In the "old days" (up until Oracle8, circa 1997), PL/SQL had no direct way to call a program written in another language. Oracle has since added support for C and Java, and by now Oracle's interlanguage features are relatively mature and practical to use in real applications.
Although integrating two languages is never an easy task, Oracle's approach calls to mind Albert Einstein's adage to "make things as simple as possible, but no simpler." Your level of understanding of both languages will be a measure of how quickly you can make them communicate.
In the following sections, I'll show one short example using Java and another using C. There will be very little explanation of these steps; I include this material only to demystify the process a bit.
I'm covering up a whole lot of complexity with these simple examples. There ...