63d98e39cd
Files correlati : Commento : - Creazione nuova cartella per contenere tutte le librerie esterne - Aggiunta nuova libreria sqlapi per interfacciare campo a vari DB git-svn-id: svn://10.65.10.50/branches/R_10_00@24149 c028cbd2-c16b-5b4b-a496-9718f37d4682
283 lines
9.0 KiB
C
283 lines
9.0 KiB
C
/*
|
|
*
|
|
*/
|
|
|
|
/* Copyright (c) 1996, 2005, Oracle. All rights reserved. */
|
|
|
|
/*
|
|
NAME
|
|
ociextp.h - Interface Definitions for PL/SQL External Procedures
|
|
|
|
DESCRIPTION
|
|
This header file contains C language callable interface from
|
|
PL/SQL External Procedures.
|
|
|
|
PUBLIC FUNCTION(S)
|
|
OCIExtProcAllocCallMemory - Allocate Call memory
|
|
OCIExtProcRaiseExcp - Raise Exception
|
|
OCIExtProcRaiseExcpWithMsg - Raise Exception with message
|
|
OCIExtProcGetEnv - Get OCI Environment
|
|
|
|
PRIVATE FUNCTION(S)
|
|
<list of static functions defined in .c file - with one-line descriptions>
|
|
|
|
EXAMPLES
|
|
|
|
NOTES
|
|
<other useful comments, qualifications, etc.>
|
|
|
|
MODIFIED (MM/DD/YY)
|
|
dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
|
|
srseshad 03/12/03 - convert oci public api to ansi
|
|
rdecker 01/10/02 - change 32k to MAX_OEN for error numbers
|
|
sagrawal 07/20/01 - Statement Handle to safe cal outs
|
|
abrumm 04/19/01 - move include of oci.h after defines/typedef
|
|
rdecker 02/22/01 - lint fix
|
|
bpalaval 02/08/01 - Change text to oratext.
|
|
sagrawal 06/16/00 - ref cursor in callouts
|
|
whe 09/01/99 - 976457:check __cplusplus for C++ code
|
|
asethi 04/15/99 - Created (by moving ociextp.h from /vobs/plsql/public)
|
|
rhari 03/25/97 - Use ifndef
|
|
rhari 12/18/96 - Include oratypes.h
|
|
rhari 12/11/96 - #416977, Flip values of return codes
|
|
rhari 12/02/96 - Define Return Code Macros
|
|
rhari 11/18/96 - Error number is int
|
|
rhari 10/30/96 - Fix OCIExtProcRaiseExcpWithMsg
|
|
rhari 10/30/96 - Get rid of warnings
|
|
rhari 10/04/96 - Fix OCIExtProcRaiseExcpWithMsg
|
|
rhari 09/23/96 - Creation
|
|
|
|
*/
|
|
|
|
|
|
#ifndef OCIEXTP_ORACLE
|
|
# define OCIEXTP_ORACLE
|
|
|
|
# ifndef ORATYPES
|
|
# include <oratypes.h>
|
|
# endif
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
PUBLIC TYPES AND CONSTANTS
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
/* ----------------------------- Return Codes ----------------------------- */
|
|
/* Success and Error return codes for certain external procedure interface
|
|
* functions. If a particular interface function returns OCIEXTPROC_SUCCESS
|
|
* or OCIEXTPROC_ERROR, then applications must use these macros to check
|
|
* for return values.
|
|
*
|
|
* OCIEXTPROC_SUCCESS -- External Procedure Success Return Code
|
|
* OCIEXTPROC_ERROR -- External Procedure Failure Return Code
|
|
*/
|
|
#define OCIEXTPROC_SUCCESS 0
|
|
#define OCIEXTPROC_ERROR 1
|
|
|
|
|
|
/* --------------------------- With-Context Type --------------------------- */
|
|
/*
|
|
* The C callable interface to PL/SQL External Procedures require the
|
|
* With-Context parameter to be passed. The type of this structure is
|
|
* OCIExtProcContext is is opaque to the user.
|
|
*
|
|
* The user can declare the With-Context parameter in the application as
|
|
*
|
|
* OCIExtProcContext *with_context;
|
|
*/
|
|
typedef struct OCIExtProcContext OCIExtProcContext;
|
|
|
|
/* NOTE: OCIExtProcContext must be visible prior to including <oci.h> */
|
|
|
|
# ifndef OCI_ORACLE
|
|
# include <oci.h>
|
|
# endif
|
|
|
|
|
|
/* ----------------------- OCIExtProcAllocCallMemory ----------------------- */
|
|
/* OCIExtProcAllocCallMemory
|
|
* Allocate N bytes of memory for the duration of the External Procedure.
|
|
*
|
|
* Memory thus allocated will be freed by PL/SQL upon return from the
|
|
* External Procedure. You must not use any kind of 'free' function on
|
|
* memory allocated by OCIExtProcAllocCallMemory.
|
|
* Use this function to allocate memory for function returns.
|
|
*
|
|
* PARAMETERS
|
|
* Input :
|
|
* with_context - The with_context pointer that is passed to the C
|
|
* External Procedure.
|
|
* Type of with_context : OCIExtProcContext *
|
|
* amount - The number of bytes to allocate.
|
|
* Type of amount : size_t
|
|
*
|
|
* Output :
|
|
* Nothing
|
|
*
|
|
* Return :
|
|
* An untyped (opaque) Pointer to the allocated memory.
|
|
*
|
|
* Errors :
|
|
* A 0 return value should be treated as an error
|
|
*
|
|
* EXAMPLE
|
|
* text *ptr = (text *)OCIExtProcAllocCallMemory(wctx, 1024)
|
|
*
|
|
*/
|
|
#define OCIExtProcAllocCallMemory(with_context, amount) \
|
|
ociepacm(with_context, (size_t)amount)
|
|
|
|
|
|
|
|
|
|
/* -------------------------- OCIExtProcRaiseExcp -------------------------- */
|
|
/* OCIExtProcRaiseExcp
|
|
* Raise an Exception to PL/SQL.
|
|
*
|
|
* Calling this function signalls 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, INOUT and OUT arguments, if any, are not processed
|
|
* at all.
|
|
*
|
|
* PARAMETERS
|
|
* Input :
|
|
* with_context - The with_context pointer that is passed to the C
|
|
* External Procedure.
|
|
* Type of with_context : OCIExtProcContext *
|
|
* errnum - Oracle Error number to signal to PL/SQL. errnum
|
|
* must be a positive number and in the range 1 to MAX_OEN
|
|
* Type of errnum : int
|
|
* Output :
|
|
* Nothing
|
|
*
|
|
* Return :
|
|
* OCIEXTPROC_SUCCESS - If the call was successful.
|
|
* OCIEXTPROC_ERROR - If the call failed.
|
|
*
|
|
*/
|
|
#define OCIExtProcRaiseExcp(with_context, errnum) \
|
|
ocieperr(with_context, (int)errnum)
|
|
|
|
|
|
|
|
|
|
|
|
/* ---------------------- OCIExtProcRaiseExcpWithMsg ---------------------- */
|
|
/* OCIExtProcRaiseExcpWithMsg
|
|
* Raise an exception to PL/SQL. In addition, substitute the
|
|
* following error message string within the standard Oracle error
|
|
* message string. See note for OCIExtProcRaiseExcp
|
|
*
|
|
* PARAMETERS
|
|
* Input :
|
|
* with_context - The with_context pointer that is passed to the C
|
|
* External Procedure.
|
|
* Type of with_context : OCIExtProcContext *
|
|
* errnum - Oracle Error number to signal to PL/SQL. errnum
|
|
* must be a positive number and in the range 1 to MAX_OEN
|
|
* Type of errnum : int
|
|
* errmsg - The error message associated with the errnum.
|
|
* Type of errmsg : char *
|
|
* len - The length of the error message. 0 if errmsg is
|
|
* null terminated string.
|
|
* Type of len : size_t
|
|
* Output :
|
|
* Nothing
|
|
*
|
|
* Return :
|
|
* OCIEXTPROC_SUCCESS - If the call was successful.
|
|
* OCIEXTPROC_ERROR - If the call failed.
|
|
*
|
|
*/
|
|
#define OCIExtProcRaiseExcpWithMsg(with_context, errnum, errmsg, msglen) \
|
|
ociepmsg(with_context, (int)errnum, errmsg, (size_t)msglen)
|
|
|
|
|
|
|
|
/* --------------------------- OCIExtProcGetEnv --------------------------- */
|
|
/* OCIExtProcGetEnv
|
|
* Get OCI Environment
|
|
*
|
|
* PARAMETERS
|
|
* Input :
|
|
* with_context - The with_context pointer that is passed to the C
|
|
* External Procedure.
|
|
*
|
|
* Output :
|
|
* envh - The OCI Environment handle.
|
|
* svch - The OCI Service handle.
|
|
* errh - The OCI Error handle.
|
|
*
|
|
* Return :
|
|
* OCI_SUCCESS - Successful completion of the function.
|
|
* OCI_ERROR - Error.
|
|
*
|
|
*/
|
|
#define OCIExtProcGetEnv(with_context, envh, svch, errh) \
|
|
ociepgoe(with_context, envh, svch, errh)
|
|
|
|
|
|
|
|
/* ------------------------ OCIInitializeStatementHandle ------------------- */
|
|
/* OCIreateStatementHandle
|
|
* Initialize Statement Handle
|
|
*
|
|
* PARAMETERS
|
|
* Input :
|
|
* wctx - The
|
|
* cursorno - The cursor number for which we need to initialize
|
|
* the statement handle
|
|
* svch - The OCI Service handle.
|
|
*
|
|
* Output :
|
|
* stmthp - The OCI Statement handle.
|
|
* errh - The OCI Error handle.
|
|
*
|
|
* Return :
|
|
* OCI_SUCCESS - Successful completion of the function.
|
|
* OCI_ERROR - Error.
|
|
*
|
|
*/
|
|
#define OCIInitializeStatementHandle(wctx, cursorno, svch, stmthp, errh) \
|
|
ociepish(wctx, cursor, svch, stmthp, errh)
|
|
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
PRIVATE TYPES AND CONSTANTS
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
PUBLIC FUNCTIONS
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
PRIVATE FUNCTIONS
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
void *ociepacm(OCIExtProcContext *with_context, size_t amount);
|
|
|
|
|
|
|
|
size_t ocieperr(OCIExtProcContext *with_context, int error_number);
|
|
|
|
|
|
|
|
size_t ociepmsg(OCIExtProcContext *with_context, int error_number,
|
|
oratext *error_message, size_t len );
|
|
|
|
|
|
|
|
sword ociepgoe(OCIExtProcContext *with_context, OCIEnv **envh,
|
|
OCISvcCtx **svch, OCIError **errh);
|
|
|
|
|
|
#endif /* OCIEXTP_ORACLE */
|