http://www.perlmonks.org?node_id=890675


in reply to Execute Oracle Stored procedure using DBIx::ProcedureCall

DBIx::ProcedureCall needs to know if you are about to call a function or a procedure (because the SQL is different). You have to make sure you call the wrapper subroutines in the right context:

You have to call procedures in void context.

You have to call functions in non-void context.

If you do not want to rely on this mechanism, you can declare the correct type using the attributes :procedure and :function:

use DBIx::ProcedureCall qw[ sysdate:function dbms_random.initialize:procedure ];
If you use these attributes, the calling context will be ignored and the call will be dispatched according to your declaration.