A script-enabled browser is required for this page to function properly.

ORA_FFI.REGISTER_PARAMETER built-in procedure

This procedure registers the argument type of the current argument of the specified foreign function.

Syntax


PROCEDURE ORA_FFI.REGISTER_PARAMETER
(funchandle funcHandleType,
cargtype PLS_INTEGER);

PROCEDURE ORA_FFI.REGISTER_PARAMETER
(funchandle funcHandleType,
cargtype PLS_INTEGER,
plsargtype PLS_INTEGER);

Parameters

Parameter

Description

funchandle

A function handle returned by ORA_FFI.REGISTER_FUNCTION or ORA_FFI.FIND_FUNCTION.

cargtype

The C datatype of the current argument to the C foreign function being called. The value of this argument may be one of the following packaged constants:

C_CHAR means char
C_CHAR_PTR means char *
C_DOUBLE means double
C_DOUBLE_PTR means double *
C_FLOAT means float
C_FLOAT_PTR means float *
C_INT means int
C_INT_PTR means int *
C_LONG means long
C_LONG_PTR means long *
C_SHORT means short
C_SHORT_PTR means short *
C_VOID_PTR means void *
plsargtype

The corresponding PL/SQL argument type (optional).

Example


/* Define Procedure define_c_funcs which calls two
  ORA_FFI functions, getresult and foo. */

 PROCEDURE define_c_funcs is
   getresult_fhandle ORA_FFI.FUNCHANDLETYPE;
   foo_fhandle ORA_FFI.FUNCHANDLETYPEe;

  BEGIN
    /* Register the info for function getresult */
    getresult_fhandle := ORA_FFI.REGISTER_FUNCTION
    (testlib_lhandle,'getresult');
    ...
	
    /* Register the info for function foo */
    foo_fhandle := ORA_FFI.REGISTER_FUNCTION
    (testlib_lhandle,'foo'); 
	
    /* Register the return type for function foo */
    ORA_FFI.REGISTER_RETURN
    (foo_fhandle, ORA_FFI.C_SHORT);
	
   /* Register the parameter info for function foo */
    ORA_FFI.REGISTER_PARAMETER
    (foo_fhandle, ORA_FFI.C_FLOAT);
    ORA_FFI.REGISTER_PARAMETER
    (foo_fhandle, ORA_FFI.C_INT);
    ORA_FFI.REGISTER_PARAMETER
    (foo_fhandle, ORA_FFI.C_CHAR_PTR);
 
  /* Generate PL/SQL package containing all functions 
    defined in test library */
    ORA_FFI.GENERATE.FOREIGN
    (testlib_lhandle, 'test_ffi_pkg');
    ...

 END;

See also

About the ORA_FFI built-in package

ORA_FFI built-in package