Oracle® Call Interface Programmer's Guide, 11g Release 2 (11.2) Part Number E10646-03 |
|
|
View PDF |
The OCI external procedure functions for C:
Table 20-2 External Procedures Functions
Function/Page | Purpose |
---|---|
Allocates memory for the duration of the External Procedure |
|
Raises an Exception to PL/SQL |
|
Raises an exception with a message |
|
Gets the OCI environment, service context, and error handles |
Purpose
Allocate N bytes of memory for the duration of the External Procedure.
Syntax
void * OCIExtProcAllocCallMemory ( OCIExtProcContext *with_context, size_t amount );
Parameters
The with_context
pointer that is passed to the C External Procedure.
See Also:
"With_Context Type"The number of bytes to allocate.
Comments
This call allocates amount
bytes of memory for the duration of the call of the external procedure.
Any memory allocated by this call is freed by PL/SQL upon return from the external procedure. The application must not use any kind of free()
function on memory allocated by OCIExtProcAllocCallMemory()
. Use this function to allocate memory for function returns.
A zero return value should be treated as an error
Returns
An untyped (opaque) Pointer to the allocated memory.
Example
text *ptr = (text *)OCIExtProcAllocCallMemory(wctx, 1024)
Related Functions
OCIErrorGet(), OCIMemoryAlloc().
Purpose
Raise an Exception to PL/SQL.
Syntax
size_t OCIExtProcRaiseExcp ( OCIExtProcContext *with_context, int errnum );
Parameters
The with_context
pointer that is passed to the C External Procedure.
See Also:
"With_Context Type"Oracle Error number to signal to PL/SQL. errnum
must be a positive number and in the range 1 to 32767.
Comments
Calling this function signals an exception back to PL/SQL. After a successful return from this function, the external procedure must start its exit handling and return back to PL/SQL. Once an exception is signalled to PL/SQL, IN/OUT and OUT arguments, if any, are not processed at all.
Returns
This function returns OCIEXTPROC_SUCCESS
if the call was successful. It returns OCIEXTPROC_ERROR
if the call has failed.
Related Functions
Purpose
Raise an exception with a message.
Syntax
size_t OCIExtProcRaiseExcpWithMsg ( OCIExtProcContext *with_context, int errnum, char *errmsg, size_t msglen );
Parameters
The with_context
pointer that is passed to the C External Procedure.
See Also:
"With_Context Type"Oracle Error number to signal to PL/SQL. The value of errnum
must be a positive number and in the range 1 to 32767
The error message associated with the errnum
.
The length of the error message. Pass zero if errmsg
is a NULL
-terminated string.
Comments
Raise an exception to PL/SQL. In addition, substitute the following error message string within the standard Oracle error message string.
See Also:
See the description of OCIExtProcRaiseExcp() for more information.Returns
This function returns OCIEXTPROC_SUCCESS
if the call was successful. It returns OCIEXTPROC_ERROR
if the call has failed.
Related Functions
Purpose
Gets the OCI environment, service context, and error handles.
Syntax
sword OCIExtProcGetEnv ( OCIExtProcContext *with_context, OCIEnv **envh, OCISvcCtx **svch, OCIError **errh );
Parameters
The with_context
pointer that is passed to the C External Procedure. See "With_Context Type".
Pointer to a variable to store the OCI environment handle.
Pointer to a variable to store the OCI service handle.
Pointer to a variable to store the OCI error handle.
Comments
The primary purpose of this function is to allow OCI callbacks to use the database in the same transaction. The OCI handles obtained by this function should be used in OCI callbacks to the database. If these handles are obtained through standard OCI calls, then these handles use a new connection to the database and cannot be used for callbacks in the same transaction. In one external procedure you can use either callbacks or a new connection, but not both.
Example of a call:
OCIEnv *envh; OCISvcCtx *svch; OCIError *errh; ... OCIExtProcGetEnv(ctx,&envh,&svch,&errh);
Returns
This function returns OCI_SUCCESS
if the call was successful; otherwise, it returns OCI_ERROR
.
Related Functions