The mi_func_desc_by_typeid() function
The mi_func_desc_by_typeid() function looks up a registered user-defined routine by its routine identifier and creates its function descriptor.
Syntax
MI_FUNC_DESC *mi_func_desc_by_typeid(conn, routine_id)
MI_CONNECTION *conn;
mi_funcid *routine_id;;
- conn
- A pointer to a connection descriptor established by a previous
call to mi_open(), mi_server_connect(),
or mi_server_reconnect().
This value can be a pointer to a session-duration connection descriptor established by a previous call to mi_get_session_connection(). Use of a session-duration connection descriptor is an advanced feature of the DataBlade® API.
- routine_id
- The routine identifier that uniquely identifies the UDR within the sysprocedures system catalog table.
Valid in client LIBMI application? | Valid in user-defined routine? |
---|---|
No | Yes |
Usage
The mi_func_desc_by_typeid() function
creates a function descriptor for the UDR that the routine_id argument
specifies. The routine_id argument provides the routine identifier
of the UDR. The function is one of the functions of the Fastpath interface.
It is a constructor function for the function descriptor.
Tip: The DataBlade
API provides
the mi_funcid data type to hold routine identifiers. The mi_funcid data
type has the same structure as the mi_integer data type. For
compatibility with earlier versions, some DataBlade
API functions
still assume that routine identifiers are of type mi_integer.
This
function performs the following tasks:
- Looks for a user-defined routine that matches the routine_id routine identifier in the sysprocedures system catalog table
- Allocates a function descriptor for the UDR and saves the routine sequence in this descriptor
- Allocates an MI_FPARAM structure for the routine and saves the argument and return-value information in this structure
- Returns a pointer to the function descriptor that it has allocated for the user-defined routine
Server only: When you pass
a public connection descriptor (from mi_open()),
the mi_func_desc_by_typeid() function allocates
the new function descriptor in the PER_COMMAND memory duration. If
you pass a session-duration connection descriptor (from mi_get_session_connection()), mi_func_desc_by_typeid() allocates
the new function descriptor in the PER_SESSION memory duration. This
function descriptor is called a session-duration function descriptor.
For more information, see the HCL OneDB™
DataBlade API Programmer's
Guide.
The session-duration connection descriptor and session-duration function descriptor are advanced features of the DataBlade API. They can adversely affect your UDR if you use them incorrectly. Use them only when a regular connection descriptor or function descriptor cannot perform the task you need done.
Return values
- An MI_FUNC_DESC pointer
- A pointer to the function descriptor for the UDR that routine_id identifies.
- NULL
- No matching user-defined routine was found or that the specified
user-defined routine has multiple return values, which is possible
with the following routines:
- SPL routines that include the WITH RESUME clause in the RETURN statement
- Iterator functions