Stored procedures with output parameters
Oracle® stored procedures or stored
functions must be called with the input and output parameters specification in the
USING clause of the EXECUTE, OPEN or
FOREACH instruction. As in normal dynamic SQL, parameters must correspond by
position, and the IN/OUT/INOUT options must match the parameter definition of the
stored procedure.
BEGIN and END 
        keywords:PREPARE stmt FROM "begin proc1(?,?,?); end;"Remark: Oracle stored procedures do not specify the size of number and character parameters. The size of output values (especially character strings) are defined by the calling context (i.e. the data type of the variable used when calling the procedure). When you pass a CHAR(10) to the procedure, the returning value will be filled with blanks to reach a size of 10 bytes.
Note that for technical reasons, the Oracle driver uses dynamic binding with OCIBindDynamic(). The Oracle Call Interface does not support stored
procedures parameters with the CHAR data type when using dynamic binding. You must
use VARCHAR2 instead of CHAR to define character string parameters
for stored procedures.
MAIN
   DEFINE n INTEGER
   DEFINE d DECIMAL(6,2)
   DEFINE c VARCHAR(200)
   DATABASE test1
   EXECUTE IMMEDIATE
                   "create procedure proc1("
                || "         p1 in int,"
                || "         p2 in out number,"
                || "         p3 in out varchar2"
                || "      )"
                || " is begin"
                || "  p2:= p1 + 0.23;"
                || "  p3:= 'Value = ' || to_char(p1);"
                || "end;"
   PREPARE stmt FROM "begin proc1(?,?,?); end;"
   LET n = 111
   EXECUTE stmt USING n IN, d INOUT, c INOUT
   DISPLAY d
   DISPLAY c
END MAIN