Patch level : 12.0 no-patch

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
This commit is contained in:
mtollari 2017-10-26 09:07:39 +00:00
parent 4bcb3807c3
commit 63d98e39cd
90 changed files with 83105 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,60 @@
// *****************************************************
// Copyright (c) 2001-2011 iAnywhere Solutions, Inc.
// Portions copyright (c) 1996-2011 Sybase, Inc.
// All rights reserved. All unpublished rights reserved.
// *****************************************************
/* Include this file to restore the default structure packing setting. */
#if defined( __WATCOMC__ )
#pragma pack(__pop);
#elif defined( _MSC_VER ) && _MSC_VER > 800
#pragma pack( pop, pshpk )
#elif defined( __ALPHA__ ) || defined( _CFE )
#pragma pack();
#elif defined( __MWERKS__ )
#pragma options align= reset
#elif defined( __BORLANDC__ )
#pragma option -a.
#elif (defined( __IBMC__ ) && ( __IBMC__ < 500 )) || (defined (__IBMCPP__) && ( __IBMCPP__ < 500 ) )
#pragma pack( pop )
#elif (defined( __SUNPRO_C ) || defined( __SUNPRO_CC )) && ( !defined( ALIGN_WORDS ) || defined( FORCE_PACK ) )
#if defined( _PUSH_PACK_SECOND )
#undef _PUSH_PACK_SECOND
#pragma pack (_PUSH_PACK_FIRST)
#elif defined( _PUSH_PACK_FIRST )
#undef _PUSH_PACK_FIRST
#pragma pack( )
#else
#error Tried to pop a pack without a successful push
#endif
#elif defined( HP ) && ( !defined( ALIGN_WORDS ) || defined( FORCE_PACK ) )
#if defined( _PUSH_PACK_SECOND )
#undef _PUSH_PACK_SECOND
#pragma pack _PUSH_PACK_FIRST
#elif defined( _PUSH_PACK_FIRST )
#undef _PUSH_PACK_FIRST
#pragma pack
#else
#error Tried to pop a pack without a successful push
#endif
#elif defined( _AIX ) && !defined(__GNUC__)
#if defined( _PUSH_PACK_SECOND )
#undef _PUSH_PACK_SECOND
#pragma options align=_PUSH_PACK_FIRST
#elif defined( _PUSH_PACK_FIRST )
#undef _PUSH_PACK_FIRST
#pragma options align=reset
#else
#error Tried to pop a pack without a successful push
#endif
#elif defined( __GNUC__ ) && (!defined( ALIGN_WORDS ) || defined( FORCE_PACK ))
#pragma pack(pop)
#endif
#if defined ( _NO_PRAGMA_PUSH_PACK )
#if defined( _PUSH_PACK )
#undef _PUSH_PACK
#else
#error Tried to pop a pack without a successful push
#endif
#endif

View File

@ -0,0 +1,65 @@
// *****************************************************
// Copyright (c) 2001-2011 iAnywhere Solutions, Inc.
// Portions copyright (c) 1996-2011 Sybase, Inc.
// All rights reserved. All unpublished rights reserved.
// *****************************************************
/* Include this file to cause 1-byte structure packing. */
#if defined( __WATCOMC__ )
#pragma pack(__push,1);
#elif defined( _MSC_VER ) && _MSC_VER > 800
#pragma warning( disable : 4103 )
#pragma pack( push, pshpk, 1 )
#elif defined( __ALPHA__ ) || defined( _CFE ) // SGI's C preprocessor
#if !defined( _NO_PRAGMA_PUSH_PACK )
#define _NO_PRAGMA_PUSH_PACK
#endif
#pragma pack(1);
#elif defined( MAC )
#if defined( __MWERKS__ )
#pragma options align= packed
#else
#error "Need a pshpk1.h for this Mac compiler"
#endif
#elif defined( __BORLANDC__ )
#pragma option -a-
#elif (defined( __IBMC__ ) && ( __IBMC__ < 500 )) || (defined( __IBMCPP__ ) && ( __IBMCPP__ < 500 ) )
#pragma pack( push, 1 )
#elif (defined( __SUNPRO_C ) || defined( __SUNPRO_CC )) && ( !defined( ALIGN_WORDS ) || defined( FORCE_PACK ) )
#if !defined( _PUSH_PACK_FIRST )
#define _PUSH_PACK_FIRST 1
#elif !defined( _PUSH_PACK_SECOND )
#define _PUSH_PACK_SECOND 1
#else
#error Tried to push a pack at too great a depth
#endif
#pragma pack(1)
#elif defined( HP ) && ( !defined( ALIGN_WORDS ) || defined( FORCE_PACK ) )
#if !defined( _PUSH_PACK_FIRST )
#define _PUSH_PACK_FIRST 1
#elif !defined( _PUSH_PACK_SECOND )
#define _PUSH_PACK_SECOND 1
#else
#error Tried to push a pack at too great a depth
#endif
#pragma pack 1
#elif defined( _AIX ) && !defined(__GNUC__)
#if !defined( _PUSH_PACK_FIRST )
#define _PUSH_PACK_FIRST packed
#elif !defined( _PUSH_PACK_SECOND )
#define _PUSH_PACK_SECOND packed
#else
#error Tried to push a pack at too great a depth
#endif
#pragma options align=packed
#elif defined( __GNUC__ ) && (!defined( ALIGN_WORDS ) || defined( FORCE_PACK ))
#pragma pack(push, 1)
#endif
#if defined( _NO_PRAGMA_PUSH_PACK )
#if defined( _PUSH_PACK )
#error Tried to push a pack at too great a depth
#else
#define _PUSH_PACK
#endif
#endif

View File

@ -0,0 +1,65 @@
// *****************************************************
// Copyright (c) 2001-2011 iAnywhere Solutions, Inc.
// Portions copyright (c) 1996-2011 Sybase, Inc.
// All rights reserved. All unpublished rights reserved.
// *****************************************************
/* Include this file to cause 2-byte structure packing. */
#if defined( __WATCOMC__ )
#pragma pack(__push,2);
#elif defined( _MSC_VER ) && _MSC_VER > 800
#pragma warning( disable : 4103 )
#pragma pack( push, pshpk, 2 )
#elif defined( __ALPHA__ ) || defined( _CFE ) // SGI's C preprocessor
#if !defined( _NO_PRAGMA_PUSH_PACK )
#define _NO_PRAGMA_PUSH_PACK
#endif
#pragma pack(2);
#elif defined( MAC )
#if defined( __MWERKS__ )
#pragma options align= mac68k
#else
#error "Need a pshpk2.h for this Mac compiler"
#endif
#elif defined( __BORLANDC__ )
#pragma option -a2
#elif (defined( __IBMC__ ) && ( __IBMC__ < 500 )) || (defined (__IBMCPP__) && ( __IBMCPP__ < 500 ))
#pragma pack( push, 2 )
#elif (defined( __SUNPRO_C ) || defined( __SUNPRO_CC )) && ( !defined( ALIGN_WORDS ) || defined( FORCE_PACK ) )
#if !defined( _PUSH_PACK_FIRST )
#define _PUSH_PACK_FIRST 2
#elif !defined( _PUSH_PACK_SECOND )
#define _PUSH_PACK_SECOND 2
#else
#error Tried to push a pack at too great a depth
#endif
#pragma pack(2)
#elif defined( HP ) && ( !defined( ALIGN_WORDS ) || defined( FORCE_PACK ) )
#if !defined( _PUSH_PACK_FIRST )
#define _PUSH_PACK_FIRST 2
#elif !defined( _PUSH_PACK_SECOND )
#define _PUSH_PACK_SECOND 2
#else
#error Tried to push a pack at too great a depth
#endif
#pragma pack 2
#elif defined( _AIX ) && !defined(__GNUC__)
#if !defined( _PUSH_PACK_FIRST )
#define _PUSH_PACK_FIRST twobyte
#elif !defined( _PUSH_PACK_SECOND )
#define _PUSH_PACK_SECOND twobyte
#else
#error Tried to push a pack at too great a depth
#endif
#pragma options align=twobyte
#elif defined( __GNUC__ ) && (!defined( ALIGN_WORDS ) || defined( FORCE_PACK ))
#pragma pack(push, 2)
#endif
#if defined( _NO_PRAGMA_PUSH_PACK )
#if defined( _PUSH_PACK )
#error Tried to push a pack at too great a depth
#else
#define _PUSH_PACK
#endif
#endif

View File

@ -0,0 +1,65 @@
// *****************************************************
// Copyright (c) 2001-2011 iAnywhere Solutions, Inc.
// Portions copyright (c) 1996-2011 Sybase, Inc.
// All rights reserved. All unpublished rights reserved.
// *****************************************************
/* Include this file to cause 4-byte structure packing. */
#if defined( __WATCOMC__ )
#pragma pack(__push,4);
#elif defined( _MSC_VER ) && _MSC_VER > 800
#pragma warning( disable : 4103 )
#pragma pack( push, pshpk, 4 )
#elif defined( _CFE ) || defined( __ALPHA__ )
#if !defined( _NO_PRAGMA_PUSH_PACK )
#define _NO_PRAGMA_PUSH_PACK
#endif
#pragma pack(4);
#elif defined( MAC )
#if defined( __MWERKS__ )
#pragma options align= mac68k4byte
#else
#error "Need a pshpk4.h for this Mac compiler"
#endif
#elif defined( __BORLANDC__ )
#pragma option -a4
#elif (defined( __IBMC__ ) && ( __IBMC__ < 500)) || (defined (__IBMCPP__) && ( __IBMCPP__ < 500 ))
#pragma pack( push, 4 )
#elif (defined( __SUNPRO_C ) || defined( __SUNPRO_CC )) && ( !defined( ALIGN_WORDS ) || defined( FORCE_PACK ) )
#if !defined( _PUSH_PACK_FIRST )
#define _PUSH_PACK_FIRST 4
#elif !defined( _PUSH_PACK_SECOND )
#define _PUSH_PACK_SECOND 4
#else
#error Tried to push a pack at too great a depth
#endif
#pragma pack(4)
#elif defined( HP ) && ( !defined( ALIGN_WORDS ) || defined( FORCE_PACK ) )
#if !defined( _PUSH_PACK_FIRST )
#define _PUSH_PACK_FIRST 4
#elif !defined( _PUSH_PACK_SECOND )
#define _PUSH_PACK_SECOND 4
#else
#error Tried to push a pack at too great a depth
#endif
#pragma pack 4
#elif defined( _AIX ) && !defined(__GNUC__)
#if !defined( _PUSH_PACK_FIRST )
#define _PUSH_PACK_FIRST power
#elif !defined( _PUSH_PACK_SECOND )
#define _PUSH_PACK_SECOND power
#else
#error Tried to push a pack at too great a depth
#endif
#pragma options align=power
#elif defined( __GNUC__ ) && (!defined( ALIGN_WORDS ) || defined( FORCE_PACK ))
#pragma pack(push, 4)
#endif
#if defined( _NO_PRAGMA_PUSH_PACK )
#if defined( _PUSH_PACK )
#error Tried to push a pack at too great a depth
#else
#define _PUSH_PACK
#endif
#endif

View File

@ -0,0 +1,927 @@
/* ====================================================
*
* Copyright 2008-2011 iAnywhere Solutions, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*
* While not a requirement of the license, if you do modify this file, we
* would appreciate hearing about it. Please email
* sqlany_interfaces@sybase.com
*
* ====================================================
*/
#ifndef SACAPI_H
#define SACAPI_H
/** \mainpage SQL Anywhere C API
*
* \section intro_sec Introduction
* The purpose of this API is to simplify creating C/C++ wrapper drivers for various interpreted languages
* such as PHP, Perl, Python, Ruby, and others. This API layer sits on top of DBLIB and was implemented
* using Embedded SQL. This API is not a replacement of DBLIB. It is just a way to simplify creating applications
* from C/C++ code without having to learn all the details of Embedded SQL.
*
* \section distribution Distribution of the API
* The API is built as a DLL (shared object on UNIX). The name of the DLL is \b dbcapi.dll
* ( \b libdbcapi.so on UNIX). This DLL is linked statically to DBLIB of the SQL Anywhere version that it was
* built against. When dbcapi.dll is loaded, the corresponding dblibX.dll is loaded by the OS. Applications that
* interface with dbcapi.dll can either link directly to it or load it dynamically. For dynamic
* loading of the DLL, please refer to the Dynamic Loading section below.
*
* The file sacapi.h is the main header file for the API. It describes all the data types and the entry
* points of the API.
*
* \section dynamic_loading Dynamically Loading the DLL
* The header file sacapidll.h contains the proper code to dynamically load the DLL. An application would
* need to include the sacapidll.h header file and compile in sacapidll.c with their source.
* sqlany_initialize_interface() can be used to dynamically load the DLL and lookup all the entry points.
*
* \section threading_support Threading Support
* The C API library is thread-unaware, meaning that the library does not perform any tasks that require
* mutual exclusion. In order to allow the library to work in threaded applications, there is only one rule to
* follow: <b>no more than one request is allowed on a single connection </b>. With this rule, the application
* is responsible for doing mutual exclusion when accessing any connection-specific resource. This includes
* connection handles, prepared statements, and result set objects.
*
* \version 2.0
*/
/** \file sacapi.h
* Main API header file.
* This file describes all the data types and entry points of the API.
*/
/** Defines to indicate the API versions
*/
#define SQLANY_API_VERSION_1 1
/** Version 2 introduced the "_ex" functions and the ability to cancel requests.
*/
#define SQLANY_API_VERSION_2 2
/** Returns the minimal error buffer size.
*/
#define SACAPI_ERROR_SIZE 256
#if defined(__cplusplus)
extern "C" {
#endif
/** A handle to an interface context
*/
typedef struct a_sqlany_interface_context a_sqlany_interface_context;
/** A handle to a connection object
*/
typedef struct a_sqlany_connection a_sqlany_connection;
/** A handle to a statement object
*/
typedef struct a_sqlany_stmt a_sqlany_stmt;
#ifdef WIN32
/** A portable 32-bit signed value */
typedef __int32 sacapi_i32;
/** A portable 32-bit unsigned value */
typedef unsigned __int32 sacapi_u32;
/** A portable boolean value */
typedef sacapi_i32 sacapi_bool;
#else
/** A portable 32-bit signed value */
typedef signed int sacapi_i32;
/** A portable 32-bit unsigned value */
typedef unsigned int sacapi_u32;
/** A portable boolean value */
typedef sacapi_i32 sacapi_bool;
#endif
// TODO:Character set issues
/** Specifies the data type being passed in or retrieved.
*/
typedef enum a_sqlany_data_type
{
/// Invalid data type.
A_INVALID_TYPE,
/// Binary data. Binary data is treated as-is and no character set conversion is performed.
A_BINARY,
/// String data. The data where character set conversion is performed.
A_STRING,
/// Double data. Includes float values.
A_DOUBLE,
/// 64-bit integer.
A_VAL64,
/// 64-bit unsigned integer.
A_UVAL64,
/// 32-bit integer.
A_VAL32,
/// 32-bit unsigned integer.
A_UVAL32,
/// 16-bit integer.
A_VAL16,
/// 16-bit unsigned integer.
A_UVAL16,
/// 8-bit integer.
A_VAL8,
/// 8-bit unsigned integer.
A_UVAL8
} a_sqlany_data_type;
/** Returns a description of the attributes of a data value.
*
* To view examples of the a_sqlany_data_value structure in use,
* see any of the following sample files in the <dfn>sdk\\dbcapi\\examples</dfn> directory
* of your SQL Anywhere installation.
*
* <ul>
* <li>dbcapi_isql.cpp
* <li>fetching_a_result_set.cpp
* <li>send_retrieve_full_blob.cpp
* <li>preparing_statements.cpp
* </ul>
*/
typedef struct a_sqlany_data_value
{
/// A pointer to user supplied buffer of data.
char * buffer;
/// The size of the buffer.
size_t buffer_size;
/// A pointer to the number of valid bytes in the buffer. This value must be less than buffer_size.
size_t * length;
/// The type of the data
a_sqlany_data_type type;
/// A pointer to indicate whether the last fetched data is NULL.
sacapi_bool * is_null;
} a_sqlany_data_value;
/** A data direction enumeration.
*/
typedef enum a_sqlany_data_direction
{
/// Invalid data direction.
DD_INVALID = 0x0,
/// Input-only host variables.
DD_INPUT = 0x1,
/// Output-only host variables.
DD_OUTPUT = 0x2,
/// Input and output host variables.
DD_INPUT_OUTPUT = 0x3
} a_sqlany_data_direction;
/** A bind parameter structure used to bind parameter and prepared statements.
*
* To view examples of the a_sqlany_bind_param structure in use,
* see any of the following sample files in the <dfn>sdk\\dbcapi\\examples</dfn> directory
* of your SQL Anywhere installation.
*
* <ul>
* <li>preparing_statements.cpp
* <li>send_retrieve_full_blob.cpp
* <li>send_retrieve_part_blob.cpp
* </ul>
* \sa sqlany_execute()
*/
typedef struct a_sqlany_bind_param
{
/// The direction of the data. (input, output, input_output)
a_sqlany_data_direction direction;
/// The actual value of the data.
a_sqlany_data_value value;
/// Name of the bind parameter. This is only used by sqlany_describe_bind_param().
char *name;
} a_sqlany_bind_param;
/** An enumeration of the native types of values as described by the server.
*
* The value types correspond to the embedded SQL data types.
* For more information on embedded SQL data types, see
* \salink{Embedded SQL data types, "http://dcx.sybase.com/selectproduct?turl=1201en/dbprogramming/esqlvar.html", "programming", "esqlvar"}.
*
* \hideinitializers
* \sa sqlany_get_column_info(), a_sqlany_column_info
*/
typedef enum a_sqlany_native_type
{
/// No data type.
DT_NOTYPE = 0,
/// Null-terminated character string that is a valid date.
DT_DATE = 384,
/// Null-terminated character string that is a valid time.
DT_TIME = 388,
/// Null-terminated character string that is a valid timestamp.
DT_TIMESTAMP = 392,
/// Varying length character string, in the CHAR character set, with a two-byte length field. The maximum length is 32765 bytes. When sending data, you must set the length field. When fetching data, the database server sets the length field. The data is not null-terminated or blank-padded.
DT_VARCHAR = 448,
/// Fixed-length blank-padded character string, in the CHAR character set. The maximum length, specified in bytes, is 32767. The data is not null-terminated.
DT_FIXCHAR = 452,
/// Long varying length character string, in the CHAR character set.
DT_LONGVARCHAR = 456,
/// Null-terminated character string, in the CHAR character set. The string is blank-padded if the database is initialized with blank-padded strings.
DT_STRING = 460,
/// 8-byte floating-point number.
DT_DOUBLE = 480,
/// 4-byte floating-point number.
DT_FLOAT = 482,
/// Packed decimal number (proprietary format).
DT_DECIMAL = 484,
/// 32-bit signed integer.
DT_INT = 496,
/// 16-bit signed integer.
DT_SMALLINT = 500,
/// Varying length binary data with a two-byte length field. The maximum length is 32765 bytes. When supplying information to the database server, you must set the length field. When fetching information from the database server, the server sets the length field.
DT_BINARY = 524,
/// Long binary data.
DT_LONGBINARY = 528,
/// 8-bit signed integer.
DT_TINYINT = 604,
/// 64-bit signed integer.
DT_BIGINT = 608,
/// 32-bit unsigned integer.
DT_UNSINT = 612,
/// 16-bit unsigned integer.
DT_UNSSMALLINT = 616,
/// 64-bit unsigned integer.
DT_UNSBIGINT = 620,
/// 8-bit signed integer.
DT_BIT = 624,
/// Long varying length character string, in the NCHAR character set.
DT_LONGNVARCHAR = 640
} a_sqlany_native_type;
/** Returns column metadata information.
*
* sqlany_get_column_info() can be used to populate this structure.
*
* To view an example of the a_sqlany_column_info structure in use,
* see the following sample file in the <dfn>sdk\\dbcapi\\examples</dfn>
* directory of your SQL Anywhere installation.
*
* <ul>
* <li>dbcapi_isql.cpp
* </ul>
*/
typedef struct a_sqlany_column_info
{
/// The name of the column (null-terminated).
/// The string can be referenced as long as the result set object is not freed.
char * name;
/// The column data type.
a_sqlany_data_type type;
/// The native type of the column in the database.
a_sqlany_native_type native_type;
/// The precision.
unsigned short precision;
/// The scale.
unsigned short scale;
/// The maximum size a data value in this column can take.
size_t max_size;
/// Indicates whether a value in the column can be null.
sacapi_bool nullable;
} a_sqlany_column_info;
/** Gets information about the currently bound parameters.
*
* sqlany_get_bind_param_info() can be used to populate this structure.
*
* To view examples of the a_sqlany_bind_param_info structure in use,
* see any of the following sample files in the <dfn>sdk\\dbcapi\\examples</dfn>
* directory of your SQL Anywhere installation.
*
* <ul>
* <li>preparing_statements.cpp
* <li>send_retrieve_full_blob.cpp
* <li>send_retrieve_part_blob.cpp
* </ul>
* \sa sqlany_execute()
*/
typedef struct a_sqlany_bind_param_info
{
/// A pointer to the name of the parameter.
char * name;
/// The direction of the parameter.
a_sqlany_data_direction direction;
/// Information about the bound input value.
a_sqlany_data_value input_value;
/// Information about the bound output value.
a_sqlany_data_value output_value;
} a_sqlany_bind_param_info;
/** Returns metadata information about a column value in a result set.
*
* sqlany_get_data_info() can be used
* to populate this structure with information about what was last retrieved by a fetch operation.
*
* To view an example of the a_sqlany_data_data_info structure in use,
* see the following sample file in the <dfn>sdk\\dbcapi\\examples</dfn> directory
* of your SQL Anywhere installation.
*
* <ul>
* <li>send_retrieve_part_blob.cpp
* </ul>
* \sa sqlany_get_data_info()
*/
typedef struct a_sqlany_data_info
{
/// The type of the data in the column.
a_sqlany_data_type type;
/// Indicates whether the last fetched data is NULL.
/// This field is only valid after a successful fetch operation.
sacapi_bool is_null;
/// The total number of bytes available to be fetched.
/// This field is only valid after a successful fetch operation.
size_t data_size;
} a_sqlany_data_info;
/** Initializes the interface.
*
* The following example demonstrates how to initialize the SQL Anywhere C API DLL:
*
* <pre>
* sacapi_u32 api_version;
* if( sqlany_init( "PHP", SQLANY_API_VERSION_1, &api_version ) ) {
* printf( "Interface initialized successfully!\n" );
* } else {
* printf( "Failed to initialize the interface! Supported version=%d\n", api_version );
* }
* </pre>
*
* \param app_name A string that names the application that is using the API. For example, "PHP", "PERL", or "RUBY".
* \param api_version The version of the compiled application.
* \param version_available An optional argument to return the maximum supported API version.
* \return 1 on success, 0 otherwise
* \sa sqlany_fini()
*/
sacapi_bool sqlany_init( const char * app_name, sacapi_u32 api_version, sacapi_u32 * version_available );
#if _SACAPI_VERSION+0 >= 2
/** Initializes the interface using a context.
*
* \param app_name A string that names the API used, for example "PHP", "PERL", or "RUBY".
* \param api_version The current API version that the application is using.
* This should normally be one of the SQLANY_API_VERSION_* macros
* \param version_available An optional argument to return the maximum API version that is supported.
* \return a context object on success and NULL on failure.
* \sa sqlany_fini_ex()
*/
a_sqlany_interface_context *sqlany_init_ex( const char * app_name, sacapi_u32 api_version, sacapi_u32 * version_available );
#endif
/** Finalizes the interface.
*
* Frees any resources allocated by the API.
*
* \sa sqlany_init()
*/
void sqlany_fini();
#if _SACAPI_VERSION+0 >= 2
/** Finalize the interface that was created using the specified context.
* Frees any resources allocated by the API.
* \param context A context object that was returned from sqlany_init_ex()
* \sa sqlany_init_ex()
*/
void sqlany_fini_ex( a_sqlany_interface_context *context );
#endif
/** Creates a connection object.
*
* You must create an API connection object before establishing a database connection. Errors can be retrieved
* from the connection object. Only one request can be processed on a connection at a time. In addition,
* not more than one thread is allowed to access a connection object at a time. Undefined behavior or a failure
* occurs when multiple threads attempt to access a connection object simultaneously.
*
* \return A connection object
* \sa sqlany_connect(), sqlany_disconnect()
*/
a_sqlany_connection * sqlany_new_connection( void );
#if _SACAPI_VERSION+0 >= 2
/** Creates a connection object using a context.
* An API connection object needs to be created before a database connection is established. Errors can be retrieved
* from the connection object. Only one request can be processed on a connection at a time. In addition,
* not more than one thread is allowed to access a connection object at a time. If multiple threads attempt
* to access a connection object simultaneously, then undefined behaviour/crashes will occur.
* \param context A context object that was returned from sqlany_init_ex()
* \return A connection object
* \sa sqlany_connect(), sqlany_disconnect(), sqlany_init_ex()
*/
a_sqlany_connection *sqlany_new_connection_ex( a_sqlany_interface_context *context );
#endif
/** Frees the resources associated with a connection object.
*
* \param sqlany_conn A connection object created with sqlany_new_connection().
* \sa sqlany_new_connection()
*/
void sqlany_free_connection( a_sqlany_connection *sqlany_conn );
/** Creates a connection object based on a supplied DBLIB SQLCA pointer.
*
* \param arg A void * pointer to a DBLIB SQLCA object.
* \return A connection object.
* \sa sqlany_new_connection(), sqlany_execute(), sqlany_execute_direct(), sqlany_execute_immediate(), sqlany_prepare()
*/
a_sqlany_connection * sqlany_make_connection( void * arg );
#if _SACAPI_VERSION+0 >= 2
/** Creates a connection object based on a supplied DBLIB SQLCA pointer and context.
* \param context A valid context object that was created by sqlany_init_ex()
* \param arg A void * pointer to a DBLIB SQLCA object.
* \return A connection object.
* \sa sqlany_init_ex(), sqlany_execute(), sqlany_execute_direct(), sqlany_execute_immediate(), sqlany_prepare()
*/
a_sqlany_connection *sqlany_make_connection_ex( a_sqlany_interface_context *context, void *arg );
#endif
/** Creates a connection to a SQL Anywhere database server using the supplied connection object and connection string.
*
* The supplied connection object must first be allocated using sqlany_new_connection().
*
* The following example demonstrates how to retrieve the error code of a failed connection attempt:
*
* <pre>
* a_sqlany_connection * sqlany_conn;
* sqlany_conn = sqlany_new_connection();
* if( !sqlany_connect( sqlany_conn, "uid=dba;pwd=sql" ) ) {
* char reason[SACAPI_ERROR_SIZE];
* sacapi_i32 code;
* code = sqlany_error( sqlany_conn, reason, sizeof(reason) );
* printf( "Connection failed. Code: %d Reason: %s\n", code, reason );
* } else {
* printf( "Connected successfully!\n" );
* sqlany_disconnect( sqlany_conn );
* }
* sqlany_free_connection( sqlany_conn );
* </pre>
*
* For more information on connecting to a SQL Anywhere database server, see
* \salink{Connection parameters, "http://dcx.sybase.com/selectproduct?turl=1201en/dbadmin/da-conparm.html", "dbadmin", "da-conparm"} and
* \salink{SQL Anywhere database connections, "http://dcx.sybase.com/selectproduct?turl=1201en/dbadmin/da-dbconnections.html", "dbadmin", "da-dbconnections"}.
*
* \param sqlany_conn A connection object created by sqlany_new_connection().
* \param str A SQL Anywhere connection string.
* \return 1 if the connection is established successfully or 0 when the connection fails. Use sqlany_error() to
* retrieve the error code and message.
* \sa sqlany_new_connection(), sqlany_error()
*/
sacapi_bool sqlany_connect( a_sqlany_connection * sqlany_conn, const char * str );
/** Disconnects an already established SQL Anywhere connection.
*
* All uncommitted transactions are rolled back.
*
* \param sqlany_conn A connection object with a connection established using sqlany_connect().
* \return 1 when successful or 0 when unsuccessful.
* \sa sqlany_connect(), sqlany_new_connection()
*/
sacapi_bool sqlany_disconnect( a_sqlany_connection * sqlany_conn );
#if _SACAPI_VERSION+0 >= 2
/** Cancel an outstanding request on a connection.
* This function can be used to cancel an outstanding request on a specific connection.
* \param sqlany_conn A connection object with a connection established using sqlany_connect().
*/
void sqlany_cancel( a_sqlany_connection * sqlany_conn );
#endif
/** Executes the supplied SQL statement immediately without returning a result set.
*
* This function is useful for SQL statements that do not return a result set.
*
* \param sqlany_conn A connection object with a connection established using sqlany_connect().
* \param sql A string representing the SQL statement to be executed.
* \return 1 on success or 0 on failure.
*/
sacapi_bool sqlany_execute_immediate( a_sqlany_connection * sqlany_conn, const char * sql );
/** Prepares a supplied SQL string.
*
* Execution does not happen until sqlany_execute() is
* called. The returned statement object should be freed using sqlany_free_stmt().
*
* The following statement demonstrates how to prepare a SELECT SQL string:
*
* <pre>
* char * str;
* a_sqlany_stmt * stmt;
*
* str = "select * from employees where salary >= ?";
* stmt = sqlany_prepare( sqlany_conn, str );
* if( stmt == NULL ) {
* // Failed to prepare statement, call sqlany_error() for more info
* }
* </pre>
*
* \param sqlany_conn A connection object with a connection established using sqlany_connect().
* \param sql_str The SQL statement to be prepared.
* \return A handle to a SQL Anywhere statement object. The statement object can be used by sqlany_execute()
* to execute the statement.
* \sa sqlany_free_stmt(), sqlany_connect(), sqlany_execute(), sqlany_num_params(), sqlany_describe_bind_param(), sqlany_bind_param()
*/
a_sqlany_stmt * sqlany_prepare( a_sqlany_connection * sqlany_conn, const char * sql_str );
/** Frees resources associated with a prepared statement object.
*
* \param sqlany_stmt A statement object returned by the successful execution of sqlany_prepare() or sqlany_execute_direct().
* \sa sqlany_prepare(), sqlany_execute_direct()
*/
void sqlany_free_stmt( a_sqlany_stmt * sqlany_stmt );
/** Returns the number of parameters expected for a prepared statement.
*
* \param sqlany_stmt A statement object returned by the successful execution of sqlany_prepare().
* \return The expected number of parameters, or -1 if the statement object is not valid.
* \sa sqlany_prepare()
*/
sacapi_i32 sqlany_num_params( a_sqlany_stmt * sqlany_stmt );
/** Describes the bind parameters of a prepared statement.
*
* This function allows the caller to determine information about prepared statement parameters. The type of prepared
* statement, stored procedured or a DML, determines the amount of information provided. The direction of the parameters
* (input, output, or input-output) are always provided.
*
* \param sqlany_stmt A statement prepared successfully using sqlany_prepare().
* \param index The index of the parameter. This number must be between 0 and sqlany_num_params() - 1.
* \param param A a_sqlany_bind_param structure that is populated with information.
* \return 1 when successful or 0 when unsuccessful.
* \sa sqlany_bind_param(), sqlany_prepare()
*/
sacapi_bool sqlany_describe_bind_param( a_sqlany_stmt * sqlany_stmt, sacapi_u32 index, a_sqlany_bind_param * param );
/** Bind a user-supplied buffer as a parameter to the prepared statement.
*
* \param sqlany_stmt A statement prepared successfully using sqlany_prepare().
* \param index The index of the parameter. This number must be between 0 and sqlany_num_params() - 1.
* \param param A a_sqlany_bind_param structure description of the parameter to be bound.
* \return 1 on success or 0 on unsuccessful.
* \sa sqlany_describe_bind_param()
*/
sacapi_bool sqlany_bind_param( a_sqlany_stmt * sqlany_stmt, sacapi_u32 index, a_sqlany_bind_param * param );
/** Sends data as part of a bound parameter.
*
* This method can be used to send a large amount of data for a bound parameter in chunks.
*
* \param sqlany_stmt A statement prepared successfully using sqlany_prepare().
* \param index The index of the parameter. This should be a number between 0 and sqlany_num_params() - 1.
* \param buffer The data to be sent.
* \param size The number of bytes to send.
* \return 1 on success or 0 on failure.
* \sa sqlany_prepare()
*/
sacapi_bool sqlany_send_param_data( a_sqlany_stmt * sqlany_stmt, sacapi_u32 index, char * buffer, size_t size );
/** Resets a statement to its prepared state condition.
*
* \param sqlany_stmt A statement prepared successfully using sqlany_prepare().
* \return 1 on success, 0 on failure.
* \sa sqlany_prepare()
*/
sacapi_bool sqlany_reset( a_sqlany_stmt * sqlany_stmt );
/** Retrieves information about the parameters that were bound using sqlany_bind_param().
*
* \param sqlany_stmt A statement prepared successfully using sqlany_prepare().
* \param index The index of the parameter. This number should be between 0 and sqlany_num_params() - 1.
* \param info A sqlany_bind_param_info buffer to be populated with the bound parameter's information.
* \return 1 on success or 0 on failure.
* \sa sqlany_bind_param(), sqlany_describe_bind_param(), sqlany_prepare()
*/
sacapi_bool sqlany_get_bind_param_info( a_sqlany_stmt * sqlany_stmt, sacapi_u32 index, a_sqlany_bind_param_info * info );
/** Executes a prepared statement.
*
* You can use sqlany_num_cols() to verify if the executed statement returned a result set.
*
* The following example shows how to execute a statement that does not return a result set:
*
* <pre>
* a_sqlany_stmt * stmt;
* int i;
* a_sqlany_bind_param param;
*
* stmt = sqlany_prepare( sqlany_conn, "insert into moe(id,value) values( ?,? )" );
* if( stmt ) {
* sqlany_describe_bind_param( stmt, 0, &param );
* param.value.buffer = (char *)\&i;
* param.value.type = A_VAL32;
* sqlany_bind_param( stmt, 0, &param );
*
* sqlany_describe_bind_param( stmt, 1, &param );
* param.value.buffer = (char *)\&i;
* param.value.type = A_VAL32;
* sqlany_bind_param( stmt, 1, &param );
*
* for( i = 0; i < 10; i++ ) {
* if( !sqlany_execute( stmt ) ) {
* // call sqlany_error()
* }
* }
* sqlany_free_stmt( stmt );
* }
* </pre>
*
* \param sqlany_stmt A statement prepared successfully using sqlany_prepare().
* \return 1 if the statement is executed successfully or 0 on failure.
* \sa sqlany_prepare()
*/
sacapi_bool sqlany_execute( a_sqlany_stmt * sqlany_stmt );
/** Executes the SQL statement specified by the string argument and possibly returns a result set.
*
* Use this method if you want to prepare and execute a statement,
* or instead of calling sqlany_prepare() followed by sqlany_execute().
*
* The following example shows how to execute a statement that returns a result set:
*
* <pre>
* a_sqlany_stmt * stmt;
*
* stmt = sqlany_execute_direct( sqlany_conn, "select * from employees" );
* if( stmt && sqlany_num_cols( stmt ) > 0 ) {
* while( sqlany_fetch_next( stmt ) ) {
* int i;
* for( i = 0; i < sqlany_num_cols( stmt ); i++ ) {
* // Get column i data
* }
* }
* sqlany_free_stmt( stmt );
* }
* </pre>
*
* <em>Note:</em> This function cannot be used for executing a SQL statement with parameters.
*
* \param sqlany_conn A connection object with a connection established using sqlany_connect().
* \param sql_str A SQL string. The SQL string should not have parameters such as ?.
* \return A statement handle if the function executes successfully, NULL when the function executes unsuccessfully.
* \sa sqlany_fetch_absolute(), sqlany_fetch_next(), sqlany_num_cols(), sqlany_get_column()
*/
a_sqlany_stmt * sqlany_execute_direct( a_sqlany_connection * sqlany_conn, const char * sql_str );
/** Moves the current row in the result set to the row number specified and then fetches the data at that row.
*
* \param sqlany_stmt A statement object that was executed by
* sqlany_execute() or sqlany_execute_direct().
* \param row_num The row number to be fetched. The first row is 1, the last row is -1.
* \return 1 if the fetch was successfully, 0 when the fetch is unsuccessful.
* \sa sqlany_execute_direct(), sqlany_execute(), sqlany_error(), sqlany_fetch_next()
*/
sacapi_bool sqlany_fetch_absolute( a_sqlany_stmt * sqlany_stmt, sacapi_i32 row_num );
/** Returns the next row from the result set.
*
* This function fetches the next row from the result set.
* When the result object is first created, the current row
* pointer is set to before the first row, that is, row 0.
* This function first advances the row pointer and then fetches
* the data at the new row.
*
* \param sqlany_stmt A statement object that was executed by
* sqlany_execute() or sqlany_execute_direct().
* \return 1 if the fetch was successfully, 0 when the fetch is unsuccessful.
* \sa sqlany_fetch_absolute(), sqlany_execute_direct(), sqlany_execute(), sqlany_error()
*/
sacapi_bool sqlany_fetch_next( a_sqlany_stmt * sqlany_stmt );
/** Advances to the next result set in a multiple result set query.
*
* If a query (such as a call to a stored procedure) returns multiple result sets, then this function
* advances from the current result set to the next.
*
* The following example demonstrates how to advance to the next result set in a multiple result set query:
*
* <pre>
* stmt = sqlany_execute_direct( sqlany_conn, "call my_multiple_results_procedure()" );
* if( result ) {
* do {
* while( sqlany_fetch_next( stmt ) ) {
* // get column data
* }
* } while( sqlany_get_next_result( stmt ) );
* sqlany_free_stmt( stmt );
* }
* </pre>
*
* \param sqlany_stmt A statement object executed by
* sqlany_execute() or sqlany_execute_direct().
* \return 1 if the statement successfully advances to the next result set, 0 otherwise.
* \sa sqlany_execute_direct(), sqlany_execute()
*/
sacapi_bool sqlany_get_next_result( a_sqlany_stmt * sqlany_stmt );
/** Returns the number of rows affected by execution of the prepared statement.
*
* \param sqlany_stmt A statement that was prepared and executed successfully with no result set returned.
* For example, an INSERT, UPDATE or DELETE statement was executed.
* \return The number of rows affected or -1 on failure.
* \sa sqlany_execute(), sqlany_execute_direct()
*/
sacapi_i32 sqlany_affected_rows( a_sqlany_stmt * sqlany_stmt );
/** Returns number of columns in the result set.
*
* \param sqlany_stmt A statement object created by sqlany_prepare() or sqlany_execute_direct().
* \return The number of columns in the result set or -1 on a failure.
* \sa sqlany_execute(), sqlany_execute_direct(), sqlany_prepare()
*/
sacapi_i32 sqlany_num_cols( a_sqlany_stmt * sqlany_stmt );
/** Returns the number of rows in the result set.
*
* By default this function only returns an estimate. To return an exact count, set the row_counts option
* on the connection. For more information on the row_counts option, see
* \salink{row_counts option [database], "http://dcx.sybase.com/selectproduct?turl=1201en/dbadmin/row-counts-option.html", "dbadmin", "row-counts-option"}.
*
* \param sqlany_stmt A statement object that was executed by
* sqlany_execute() or sqlany_execute_direct().
* \return The number rows in the result set. If the number of rows is an estimate, the number returned is
* negative and the estimate is the absolute value of the returned integer. The value returned is positive
* if the number of rows is exact.
* \sa sqlany_execute_direct(), sqlany_execute()
*/
sacapi_i32 sqlany_num_rows( a_sqlany_stmt * sqlany_stmt );
/** Fills the supplied buffer with the value fetched for the specified column.
*
* For A_BINARY and A_STRING * data types,
* value->buffer points to an internal buffer associated with the result set.
* Do not rely upon or alter the content of the pointer buffer as it changes when a
* new row is fetched or when the result set object is freed. Users should copy the
* data out of those pointers into their own buffers.
*
* The value->length field indicates the number of valid characters that
* value->buffer points to. The data returned in value->buffer is not
* null-terminated. This function fetches all the returned values from the SQL
* Anywhere database server. For example, if the column contains
* a 2GB blob, this function attempts to allocate enough memory to hold that value.
* If you do not want to allocate memory, use sqlany_get_data() instead.
*
* \param sqlany_stmt A statement object executed by
* sqlany_execute() or sqlany_execute_direct().
* \param col_index The number of the column to be retrieved.
* A column number is between 0 and sqlany_num_cols() - 1.
* \param buffer A a_sqlany_data_value object to be filled with the data fetched for column col_index.
* \return 1 on success or 0 for failure. A failure can happen if any of the parameters are invalid or if there is
* not enough memory to retrieve the full value from the SQL Anywhere database server.
* \sa sqlany_execute_direct(), sqlany_execute(), sqlany_fetch_absolute(), sqlany_fetch_next()
*/
sacapi_bool sqlany_get_column( a_sqlany_stmt * sqlany_stmt, sacapi_u32 col_index, a_sqlany_data_value * buffer );
/** Retrieves the data fetched for the specified column into the supplied buffer memory.
*
* \param sqlany_stmt A statement object executed by
* sqlany_execute() or sqlany_execute_direct().
* \param col_index The number of the column to be retrieved.
* A column number is between 0 and sqlany_num_cols() - 1.
* \param offset The starting offset of the data to get.
* \param buffer A buffer to be filled with the contents of the column. The buffer pointer must be aligned correctly
* for the data type copied into it.
* \param size The size of the buffer in bytes. The function fails
* if you specify a size greater than 2GB.
* \return The number of bytes successfully copied into the supplied buffer.
* This number must not exceed 2GB.
* 0 indicates that no data remains to be copied. -1 indicates a failure.
* \sa sqlany_execute(), sqlany_execute_direct(), sqlany_fetch_absolute(), sqlany_fetch_next()
*/
sacapi_i32 sqlany_get_data( a_sqlany_stmt * sqlany_stmt, sacapi_u32 col_index, size_t offset, void * buffer, size_t size );
/** Retrieves information about the data that was fetched by the last fetch operation.
*
* \param sqlany_stmt A statement object executed by
* sqlany_execute() or sqlany_execute_direct().
* \param col_index The column number between 0 and sqlany_num_cols() - 1.
* \param buffer A data info buffer to be filled with the metadata about the data fetched.
* \return 1 on success, and 0 on failure. Failure is returned when any of the supplied parameters are invalid.
* \sa sqlany_execute(), sqlany_execute_direct(), sqlany_fetch_absolute(), sqlany_fetch_next()
*/
sacapi_bool sqlany_get_data_info( a_sqlany_stmt * sqlany_stmt, sacapi_u32 col_index, a_sqlany_data_info * buffer );
/** Retrieves column metadata information and fills the a_sqlany_column_info structure with information about the column.
*
* \param sqlany_stmt A statement object created by sqlany_prepare() or sqlany_execute_direct().
* \param col_index The column number between 0 and sqlany_num_cols() - 1.
* \param buffer A column info structure to be filled with column information.
* \return 1 on success or 0 if the column index is out of range,
* or if the statement does not return a result set.
* \sa sqlany_execute(), sqlany_execute_direct(), sqlany_prepare()
*/
sacapi_bool sqlany_get_column_info( a_sqlany_stmt * sqlany_stmt, sacapi_u32 col_index, a_sqlany_column_info * buffer );
/** Commits the current transaction.
*
* \param sqlany_conn The connection object on which the commit operation is performed.
* \return 1 when successful or 0 when unsuccessful.
* \sa sqlany_rollback()
*/
sacapi_bool sqlany_commit( a_sqlany_connection * sqlany_conn );
/** Rolls back the current transaction.
*
* \param sqlany_conn The connection object on which the rollback operation is to be performed.
* \return 1 on success, 0 otherwise.
* \sa sqlany_commit()
*/
sacapi_bool sqlany_rollback( a_sqlany_connection * sqlany_conn );
/** Returns the current client version.
*
* This method fills the buffer passed with the major, minor, patch, and build number of the client library.
* The buffer will be null-terminated.
*
* \param buffer The buffer to be filled with the client version string.
* \param len The length of the buffer supplied.
* \return 1 when successful or 0 when unsuccessful.
*/
sacapi_bool sqlany_client_version( char * buffer, size_t len );
#if _SACAPI_VERSION+0 >= 2
/** Returns the current client version.
*
* This method fills the buffer passed with the major, minor, patch, and build number of the client library.
* The buffer will be null-terminated.
*
* \param context object that was create with sqlany_init_ex()
* \param buffer The buffer to be filled with the client version string.
* \param len The length of the buffer supplied.
* \return 1 when successful or 0 when unsuccessful.
* \sa sqlany_init_ex()
*/
sacapi_bool sqlany_client_version_ex( a_sqlany_interface_context *context, char *buffer, size_t len );
#endif
/** Retrieves the last error code and message stored in the connection object.
*
* For more information on SQLCODE error messages, see
* \salink{SQL Anywhere error messages sorted by SQLCODE, "http://dcx.sybase.com/selectproduct?turl=1201en/saerrors/sa-errors-by-sqlcode.html", "errors", "sa-errors-by-sqlcode"}.
*
* \param sqlany_conn A connection object returned from sqlany_new_connection().
* \param buffer A buffer to be filled with the error message.
* \param size The size of the supplied buffer.
* \return The last error code. Positive values are warnings, negative values are errors, and 0 indicates success.
* \sa sqlany_connect()
*/
sacapi_i32 sqlany_error( a_sqlany_connection * sqlany_conn, char * buffer, size_t size );
/** Retrieves the current SQLSTATE.
*
* For more information on SQLSTATE error messages, see
* \salink{SQL Anywhere error messages sorted by SQLSTATE, "http://dcx.sybase.com/selectproduct?turl=1201en/saerrors/sa-errors-by-sqlstate.html", "errors", "sa-errors-by-sqlstate"}.
*
* \param sqlany_conn A connection object returned from sqlany_new_connection().
* \param buffer A buffer to be filled with the current 5-character SQLSTATE.
* \param size The buffer size.
* \return The number of bytes copied into the buffer.
* \sa sqlany_error()
*/
size_t sqlany_sqlstate( a_sqlany_connection * sqlany_conn, char * buffer, size_t size );
/** Clears the last stored error code
*
* \param sqlany_conn A connection object returned from sqlany_new_connection().
* \sa sqlany_new_connection()
*/
void sqlany_clear_error( a_sqlany_connection * sqlany_conn );
#if defined(__cplusplus)
}
#endif
/** \example connecting.cpp
* This is an example of how to create a connection object and connect with it to SQL Anywhere.
*/
/** \example fetching_a_result_set.cpp
* This example shows how to fetch data from a result set.
*/
/** \example preparing_statements.cpp
* This example shows how to prepare and execute a statement.
*/
/** \example fetching_multiple_from_sp.cpp
* This example shows how to fetch multiple result sets from a stored procedure.
*/
/** \example send_retrieve_part_blob.cpp
* This example shows how to insert a blob in chunks and retrieve it in chunks too.
*/
/** \example send_retrieve_full_blob.cpp
* This example shows how to insert and retrieve a blob in one chunk .
*/
/** \example dbcapi_isql.cpp
* This example shows how to write an ISQL application using dbcapi.
*/
#endif

View File

@ -0,0 +1,399 @@
// *****************************************************
// Copyright (c) 2001-2011 iAnywhere Solutions, Inc.
// Portions copyright (c) 1988-2011 Sybase, Inc.
// All rights reserved. All unpublished rights reserved.
// *****************************************************
#ifndef _SQLCA_H_INCLUDED
#define _SQLCA_H_INCLUDED
#define II_SQLCA
#include "sqlos.h"
#ifndef UNDER_PALM_OS_GARNET
#include <stddef.h>
#endif
/******************************************************************/
/* Define _SQL32 or _SQL64 based on target operating-system. */
/******************************************************************/
#if defined( _SQL_OS_UNIX64 )
#define _SQL64
#else
#define _SQL32
#endif
/******************************************************************/
/* Define _sqlfar macro (definition left for compatibility reasons */
/******************************************************************/
#define _sqlfar
#define _sqlfar_isfar 0
/*********************************************/
/* Version check for sqlpp-to-dblib interface*/
/*********************************************/
typedef unsigned short a_sqlpp_version_number;
#define SQLPP_DBLIB_VERSION_INITIAL 1
#define SQLPP_DBLIB_VERSION_WSQL32 2
#define SQLPP_DBLIB_VERSION_REENTRANCY 3
#define SQLPP_DBLIB_VERSION_WSQL40 4
#define SQLPP_DBLIB_VERSION_SA50 4
#define SQLPP_DBLIB_VERSION_ASA6 6
#define SQLPP_DBLIB_VERSION_ASA7 7
#define SQLPP_DBLIB_VERSION_ASA8 8
#define SQLPP_DBLIB_VERSION_ASA9 9
#define SQLPP_DBLIB_VERSION_SA10 10
#define SQLPP_DBLIB_VERSION_SA11 11
#define SQLPP_DBLIB_VERSION_SA12 12
#define SQLPP_DBLIB_VERSION 12
#if defined( _SQL_SQLPP_VERSION_MAJOR ) \
&& _SQL_SQLPP_VERSION_MAJOR != SQLPP_DBLIB_VERSION
#error Incorrect version of SQLPP used for this header file
#endif
/******************************************************************/
/* Define structure packing macro based on environment */
/******************************************************************/
#if ( defined( _SQL_OS_WINNT ) && !defined( UNDER_CE ) && !defined( _WIN64 ) ) \
|| defined( _SQL_OS_NETWARE )
#define _SQL_PACK_STRUCTURES 1
#endif
/******************************************************************/
/* Structure definitions */
/******************************************************************/
#if defined( _SQL_PACK_STRUCTURES )
#if defined( _MSC_VER ) && _MSC_VER > 800
#pragma warning(push)
#pragma warning(disable:4103)
#endif
#include "pshpk1.h"
#endif
typedef short a_sql_len;
typedef unsigned short a_sql_ulen;
typedef a_sql_int32 an_sql_code;
typedef char an_sql_state[6];
struct sqlwarn{
unsigned char sqlwarn0;
unsigned char sqlwarn1;
unsigned char sqlwarn2;
unsigned char sqlwarn3;
unsigned char sqlwarn4;
unsigned char sqlwarn5;
unsigned char sqlwarn6;
unsigned char sqlwarn7;
unsigned char sqlwarn8;
unsigned char sqlwarn9;
};
#if defined( _SQL_PACK_STRUCTURES )
#include "poppk.h"
/* The SQLCA should be 4-byte aligned */
#include "pshpk4.h"
#endif
#ifdef __cplusplus
typedef struct _sqlca{
#else
typedef struct sqlca{
#endif
unsigned char sqlcaid[8];
a_sql_int32 sqlcabc;
an_sql_code sqlcode;
short sqlerrml;
unsigned char sqlerrmc[70];
unsigned char sqlerrp[8];
a_sql_int32 sqlerrd[6];
struct sqlwarn sqlwarn;
an_sql_state sqlstate;
} SQLCA;
#ifndef SQLCAPTR
#define SQLCAPTR sqlcaptr
#endif
#ifndef SQLCODE
#define SQLCODE SQLCAPTR->sqlcode
#define SQLWARN0 SQLCAPTR->sqlwarn.sqlwarn0
#define SQLWARN1 SQLCAPTR->sqlwarn.sqlwarn1
#define SQLWARN2 SQLCAPTR->sqlwarn.sqlwarn2
#define SQLWARN3 SQLCAPTR->sqlwarn.sqlwarn3
#define SQLWARN4 SQLCAPTR->sqlwarn.sqlwarn4
#define SQLWARN5 SQLCAPTR->sqlwarn.sqlwarn5
#define SQLWARN6 SQLCAPTR->sqlwarn.sqlwarn6
#define SQLWARN7 SQLCAPTR->sqlwarn.sqlwarn7
#define SQLWARN8 SQLCAPTR->sqlwarn.sqlwarn8
#define SQLWARN9 SQLCAPTR->sqlwarn.sqlwarn9
#define SQLSTATE SQLCAPTR->sqlstate
#define SQLIOCOUNT_F sqlerrd[1]
#define SQLCOUNT_F sqlerrd[2]
#define SQLIOESTIMATE_F sqlerrd[3]
#define SQLIOCOUNT SQLCAPTR->SQLIOCOUNT_F
#define SQLCOUNT SQLCAPTR->SQLCOUNT_F
#define SQLIOESTIMATE SQLCAPTR->SQLIOESTIMATE_F
#endif
#if defined( _SQL_PACK_STRUCTURES )
#include "poppk.h"
/* Everything else must be single-byte aligned */
#include "pshpk1.h"
#endif
#define DECL_NCHAR char
#define DECL_VARCHAR( size ) \
struct { a_sql_ulen len; \
unsigned char array[size+1]; \
}
#define DECL_NVARCHAR( size ) \
struct { a_sql_ulen len; \
unsigned char array[size+1]; \
}
#define DECL_BINARY( size ) \
struct { a_sql_ulen len; \
unsigned char array[size]; \
}
#define DECL_LONGVARCHAR( size ) \
struct { a_sql_uint32 array_len; \
a_sql_uint32 stored_len; \
a_sql_uint32 untrunc_len; \
char array[size+1]; \
}
#define DECL_LONGNVARCHAR( size ) \
struct { a_sql_uint32 array_len; \
a_sql_uint32 stored_len; \
a_sql_uint32 untrunc_len; \
char array[size+1]; \
}
#define DECL_LONGBINARY( size ) \
struct { a_sql_uint32 array_len; \
a_sql_uint32 stored_len; \
a_sql_uint32 untrunc_len; \
char array[size]; \
}
#define DECL_DECIMAL( prec, scale ) \
struct { char array[ ((prec)/2) + 1 ]; \
}
#define DECL_FIXCHAR( size ) \
struct { char array[ size ]; \
}
#define DECL_NFIXCHAR( size ) \
struct { char array[ size ]; \
}
#define DECL_DATETIME \
struct sqldatetime
#define DECL_BIT \
unsigned char
#if defined(__WATCOMC__) || defined(_MSC_VER) || defined(__BORLANDC__)
#define DECL_BIGINT __int64
#define DECL_UNSIGNED_BIGINT unsigned __int64
#elif defined(_SQL64)
#define DECL_BIGINT long
#define DECL_UNSIGNED_BIGINT unsigned long
#else
#define DECL_BIGINT long long
#define DECL_UNSIGNED_BIGINT unsigned long long
#endif
typedef struct VARCHAR {
a_sql_ulen len;
char array[1];
} VARCHAR;
typedef struct NVARCHAR {
a_sql_ulen len;
char array[1];
} NVARCHAR;
typedef struct BINARY {
a_sql_ulen len;
char array[1];
} BINARY;
typedef struct LONGVARCHAR {
a_sql_uint32 array_len; /* number of allocated bytes in array */
a_sql_uint32 stored_len; /* number of bytes stored in array
* (never larger than array_len) */
a_sql_uint32 untrunc_len;/* number of bytes in untruncated expression
* (may be larger than array_len) */
char array[1]; /* the data */
} LONGVARCHAR, LONGNVARCHAR, LONGBINARY;
/* used by LONGVARCHARSIZE and LONGBINARYSIZE */
#define _SQL_OFFSETOF(__typ,__id) ((size_t)&(((__typ*)0)->__id))
/* number of bytes to allocate for LONGVARCHAR or LONGBINARY structure
* with n bytes in array */
#define LONGVARCHARSIZE( n ) ( _SQL_OFFSETOF( LONGVARCHAR, array[0] ) + n )
#define LONGNVARCHARSIZE( n ) LONGVARCHARSIZE( n )
#define LONGBINARYSIZE( n ) LONGVARCHARSIZE( n )
typedef struct TYPE_DECIMAL {
char array[1];
} TYPE_DECIMAL;
typedef short int a_sql_statement_number;
/* Supported values for port_type in a_server_address
(used by db_locate_servers) */
#define PORT_TYPE_TCP 6
typedef struct a_server_address {
a_sql_uint32 port_type; /* Only returns PORT_TYPE_TCP */
a_sql_uint32 port_num; /* TCP Port number */
char *name; /* Name of the database engine */
char *address; /* IP address */
char *dbname; /* Database name */
} a_server_address;
/* Supported flags for db_lookup_servers_ex */
#define DB_LOOKUP_FLAG_NUMERIC 0x0001
#define DB_LOOKUP_FLAG_DATABASES 0x0002
#define DB_LOOKUP_FLAG_ADDRESS_INCLUDES_PORT 0x0004
/* Supported flags for fill_sqlda_ex */
#define FILL_SQLDA_FLAG_RETURN_DT_LONG 0x0001
struct a_dblib_info;
struct sqlda;
#include "sqlcallback.h"
#if defined( _SQL_PACK_STRUCTURES )
#include "poppk.h"
#if defined( _MSC_VER ) && _MSC_VER > 800
#pragma warning(pop)
#endif
#endif
/******************************************************************/
/* Define __SMALLDATA__ based on other compiler macros */
/******************************************************************/
#ifndef __SMALLDATA__
#ifdef M_I86SM
#define __SMALLDATA__
#endif
#ifdef M_I86MM
#define __SMALLDATA__
#endif
#ifdef __TURBOC__
#if defined( __TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
#define __SMALLDATA__
#endif
#endif
#endif
/******************************************************************/
/* PLATFORM specific definitions */
/******************************************************************/
typedef enum {
SQLDA_CLEAR,
SQLDA_NOCLEAR,
SQLDA_NOEXEC
} a_descriptor_behaviour;
typedef enum {
SQLDA_TYPE,
SQLDA_LENGTH,
SQLDA_RETURNED_LENGTH,
SQLDA_PRECISION,
SQLDA_SCALE,
SQLDA_NULLABLE,
SQLDA_INDICATOR
} a_descriptor_field;
typedef enum {
DB_PROP_SERVER_ADDRESS,
DB_PROP_DBLIB_VERSION,
DB_PROP_CLIENT_CHARSET
} a_db_property;
typedef enum {
DB_SET_PROP_CLIENT_API
} a_db_set_property;
/* Standard functions emitted by sqlpp require covers for some platforms */
#ifdef UNDER_PALM_OS_GARNET
#ifndef memcpy
#define memcpy MemMove
#endif
#endif
#ifndef II_SQL_FUNCS
#define II_SQL_FUNCS
#ifdef __cplusplus
extern "C" {
#endif
/* external sqlca data structure */
extern SQLCA sqlca;
extern SQLCA *sqlcaptr;
/* Macros for multiple sqlca management */
#define db_set_sqlca( sqlca ) sqlcaptr = sqlca
#define db_get_sqlca() sqlcaptr
/* Generate function pointers or function prototypes */
#ifndef UNDER_UL_SQLPP /* UltraLite uses its own sqlpp function headers*/
#define UNDER_ASA_SQLPP
#ifndef _NO_FUNC_INFO
#ifdef _USE_ESQLDLL
#define FUNC_INFO( scope, rettype, call, fname, parms ) \
extern rettype ( call * fname ) parms;
#include "sqlfuncs.h"
#undef FUNC_INFO
#else
#define FUNC_INFO( scope, rettype, call, fname, parms ) \
scope rettype call fname parms;
#include "sqlfuncs.h"
#undef FUNC_INFO
#endif //_USE_ESQLDLL
#endif //_NO_FUNC_INFO
#endif //UNDER_UL_SQLPP
#ifdef __cplusplus
}
#endif
#endif
#endif

View File

@ -0,0 +1,76 @@
// *****************************************************
// Copyright (c) 2001-2011 iAnywhere Solutions, Inc.
// Portions copyright (c) 1988-2011 Sybase, Inc.
// All rights reserved. All unpublished rights reserved.
// *****************************************************
#ifndef _SQLCB_H_INCLUDED
#define _SQLCB_H_INCLUDED
#define II_SQLCB
#include "sqlos.h"
/******************************************************************/
/* PLATFORM specific definitions */
/******************************************************************/
#if defined( _SQL_OS_WINNT )
#define _esqlentry_ __stdcall
#endif
#define _fd_
#define _sql_ptrchk_(p) ((void *) (p))
#define _sql_ptrtypechk_(p,t) ((t *)p)
#ifndef _esqlentry_
#define _esqlentry_
#endif
#ifdef __cplusplus
#define SQLNULL 0
#define SQLFARNULL 0
#else
#define SQLNULL (void *)0
#define SQLFARNULL (void *)0
#endif
/* Windows callback index */
typedef enum {
DB_CALLBACK_START = 0,
DB_CALLBACK_WAIT,
DB_CALLBACK_FINISH,
DB_CALLBACK_ASYNC_RESPONSE,
DB_CALLBACK_TRANSLATE_IN,
DB_CALLBACK_TRANSLATE_OUT,
DB_CALLBACK_UNKNOWN_EVENT, /* For Macintosh, initially */
DB_CALLBACK_MESSAGE, // Messages from the engine during a request
DB_CALLBACK_CONN_DROPPED,
DB_CALLBACK_DEBUG_MESSAGE,
DB_CALLBACK_VALIDATE_FILE_TRANSFER,
DB_MAX_CALLBACK
} a_db_callback_index;
/* Callback function type */
#define SQL_CALLBACK _esqlentry_
typedef int (SQL_CALLBACK *SQL_CALLBACK_PARM)();
/****************************************/
/* Define sqldatetime */
/****************************************/
typedef struct sqldatetime {
unsigned short year; /* e.g. 1992 */
unsigned char month; /* 0-11 */
unsigned char day_of_week; /* 0-6 0=Sunday, 1=Monday, ... */
unsigned short day_of_year; /* 0-365 */
unsigned char day; /* 1-31 */
unsigned char hour; /* 0-23 */
unsigned char minute; /* 0-59 */
unsigned char second; /* 0-59 */
a_sql_uint32 microsecond; /* 0-999999 */
} SQLDATETIME;
typedef SQLDATETIME DATETIME;
#endif

View File

@ -0,0 +1,104 @@
// *****************************************************
// Copyright (c) 2001-2011 iAnywhere Solutions, Inc.
// Portions copyright (c) 1997-2011 Sybase, Inc.
// All rights reserved. All unpublished rights reserved.
// *****************************************************
/* FUNC_INFO is in the following form: */
/* FUNC_INFO( scope, return type, calling convention, name, parameters ) */
/* definitions of database interface procedures generated by */
/* the SQL preprocessor */
FUNC_INFO( extern, void, _esqlentry_, sqlstop, (SQLCA *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_connect_40, (SQLCA *,char *,char *,char *, char *, char *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_disconnect, (SQLCA *, char * ))
FUNC_INFO( extern, void, _esqlentry_, dbpp_setconnect, (SQLCA *, char * ))
FUNC_INFO( extern, void, _esqlentry_, dbpp_commit, (SQLCA *,unsigned int))
FUNC_INFO( extern, void, _esqlentry_, dbpp_rollback, (SQLCA *,unsigned int))
FUNC_INFO( extern, void, _esqlentry_, dbpp_prepare_describe_12, (SQLCA *,char *,char *,short int *,char *,struct sqlda *,struct sqlda *,unsigned int, unsigned short int, a_sql_uint32 ))
FUNC_INFO( extern, void, _esqlentry_, dbpp_prepare_describe_exec_12, (SQLCA *,char *,char *,short int *,char *,struct sqlda *,struct sqlda *,unsigned int, unsigned short int, a_sql_uint32 ))
FUNC_INFO( extern, void, _esqlentry_, dbpp_prepare_exec_drop, (SQLCA *,char *,struct sqlda *,struct sqlda *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_dropstmt, (SQLCA *,char *,char *,short int *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_execute_into, (SQLCA *,char *,char *,short *,struct sqlda *,struct sqlda *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_execute_array, (SQLCA *,char *,char *,short *,struct sqlda *,struct sqlda *,unsigned short int))
FUNC_INFO( extern, void, _esqlentry_, dbpp_execute_imm, (SQLCA *,char *,unsigned short int ))
FUNC_INFO( extern, void, _esqlentry_, dbpp_describe, (SQLCA *,char *,char *,short int *,struct sqlda *,unsigned int))
FUNC_INFO( extern, void, _esqlentry_, dbpp_describe_cursor, (SQLCA *,char *,struct sqlda *,unsigned int))
FUNC_INFO( extern, void, _esqlentry_, dbpp_describe_names, (SQLCA *,char *,char*, short int*,char *,struct sqlda *,unsigned int, unsigned short int))
FUNC_INFO( extern, void, _esqlentry_, dbpp_describe_usertypes, (SQLCA *,char *,char *,short int *,struct sqlda *,unsigned int,unsigned short int))
FUNC_INFO( extern, void, _esqlentry_, dbpp_describe_usertypes_cursor, (SQLCA *,char *,struct sqlda *,unsigned int,unsigned short int))
FUNC_INFO( extern, void, _esqlentry_, dbpp_describe_usertypes_names, (SQLCA *,char *,char*, short int*,char *,struct sqlda *,unsigned int, unsigned short int,unsigned short int))
FUNC_INFO( extern, void, _esqlentry_, dbpp_declare, (SQLCA *,char *,char *,char *,short int *, a_sql_uint32))
FUNC_INFO( extern, void, _esqlentry_, dbpp_open, (SQLCA *,char *,char *,char *,short int *,struct sqlda *, short int, short int, a_sql_uint32))
FUNC_INFO( extern, void, _esqlentry_, dbpp_explain, (SQLCA *,char *,unsigned short int,struct sqlda *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_fetch, (SQLCA *,char *,unsigned short int,a_sql_int32,struct sqlda *, short int, unsigned short int ))
FUNC_INFO( extern, void, _esqlentry_, dbpp_fetch_array, (SQLCA *,char *,unsigned short int,a_sql_int32,struct sqlda *, short int, unsigned short int, unsigned short int ))
FUNC_INFO( extern, void, _esqlentry_, dbpp_get_data, (SQLCA *, char *, unsigned short int, a_sql_int32, struct sqlda *, unsigned short int ))
FUNC_INFO( extern, void, _esqlentry_, dbpp_put_into, (SQLCA *,char *,struct sqlda *,struct sqlda *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_put_array, (SQLCA *,char *,struct sqlda *,struct sqlda *,unsigned short int))
FUNC_INFO( extern, void, _esqlentry_, dbpp_update, (SQLCA *,char *,struct sqlda *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_delete, (SQLCA *,char *,char *,char *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_resume, (SQLCA *,char *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_close, (SQLCA *,char *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_setoption, (SQLCA *,int,char *,char *,struct sqlda *))
FUNC_INFO( extern, void, _esqlentry_, dbpp_getoption, (SQLCA *,int,char *,char *,struct sqlda *))
/* definitions of descriptor management functions called by */
/* preprocessor-generated code. */
FUNC_INFO( extern, struct sqlda *, _esqlentry_, dealloc_descriptor, ( SQLCA *, struct sqlda * ))
FUNC_INFO( extern, struct sqlda *, _esqlentry_, alloc_descriptor, ( SQLCA *, unsigned short ))
FUNC_INFO( extern, void, _esqlentry_, get_descriptor_data, ( SQLCA *, struct sqlda *, unsigned short, unsigned short, void *, unsigned short, a_descriptor_behaviour, a_descriptor_behaviour ))
FUNC_INFO( extern, unsigned short, _esqlentry_, get_descriptor_count, ( SQLCA *, struct sqlda * ))
FUNC_INFO( extern, short, _esqlentry_, get_descriptor_field, ( SQLCA *, struct sqlda *, unsigned short, a_descriptor_field, a_descriptor_behaviour, a_descriptor_behaviour ))
FUNC_INFO( extern, void, _esqlentry_, check_descriptor_null_value, ( SQLCA *, struct sqlda *, unsigned short ))
FUNC_INFO( extern, short, _esqlentry_, set_descriptor_field, ( SQLCA *, struct sqlda *, unsigned short, a_descriptor_field, short, a_descriptor_behaviour, a_descriptor_behaviour ))
FUNC_INFO( extern, void, _esqlentry_, set_descriptor_count, ( SQLCA *, struct sqlda *, int ))
FUNC_INFO( extern, void, _esqlentry_, set_descriptor_data, ( SQLCA *, struct sqlda *, unsigned short, unsigned short, void *, unsigned short, a_descriptor_behaviour, a_descriptor_behaviour ))
/* definitions for database utility routines */
FUNC_INFO( extern, unsigned int, _esqlentry_, db_string_connect, (SQLCA*,char *))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_string_disconnect, (SQLCA*,char *))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_start_engine, (SQLCA*, char*))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_start_database, (SQLCA*, char*))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_stop_engine, (SQLCA *, char *))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_stop_database, (SQLCA *, char *))
FUNC_INFO( extern, int, _esqlentry_, db_cancel_request, ( SQLCA * ))
FUNC_INFO( extern, struct sqlda *, _esqlentry_, alloc_sqlda_noind, (unsigned int ))
FUNC_INFO( extern, struct sqlda *, _esqlentry_, alloc_sqlda, (unsigned int ))
FUNC_INFO( extern, struct sqlda *, _esqlentry_, fill_sqlda, (struct sqlda *))
FUNC_INFO( extern, struct sqlda *, _esqlentry_, fill_sqlda_ex, (struct sqlda *, unsigned int))
FUNC_INFO( extern, struct sqlda *, _esqlentry_, fill_s_sqlda, (struct sqlda *, unsigned int))
FUNC_INFO( extern, void, _esqlentry_, free_sqlda_noind, (struct sqlda *))
FUNC_INFO( extern, void, _esqlentry_, free_sqlda, (struct sqlda *))
FUNC_INFO( extern, void, _esqlentry_, free_filled_sqlda, (struct sqlda *))
FUNC_INFO( extern, a_sql_uint32, _esqlentry_, sqlda_storage, (struct sqlda *, int))
FUNC_INFO( extern, a_sql_uint32, _esqlentry_, sqlda_string_length, (struct sqlda *, int))
FUNC_INFO( extern, unsigned int, _esqlentry_, sql_needs_quotes, ( SQLCA *, char * ))
FUNC_INFO( extern, char *, _esqlentry_, sqlerror_message, ( SQLCA *, char *, int ))
FUNC_INFO( extern, unsigned short, _esqlentry_, db_find_engine, ( SQLCA *, char * ))
FUNC_INFO( extern, unsigned short, _esqlentry_, db_connection_info, ( SQLCA *, short int, struct sqlda * ))
FUNC_INFO( extern, unsigned short, _esqlentry_, db_is_working, ( SQLCA * ))
FUNC_INFO( extern, int, _esqlentry_, db_init, ( SQLCA * ))
FUNC_INFO( extern, int, _esqlentry_, db_fini, ( SQLCA * ))
FUNC_INFO( extern, void, _esqlentry_, db_interface_option, ( SQLCA *, int, a_sql_int32 ))
FUNC_INFO( extern, void, _esqlentry_, db_ping_server, ( SQLCA *, int, char *, struct sqlda *, struct sqlda * ))
FUNC_INFO( extern, void, _esqlentry_, db_backup, ( SQLCA *, int, int, a_sql_uint32, struct sqlda * ))
FUNC_INFO( extern, void, _esqlentry_, db_delete_file, ( SQLCA *, char * ))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_string_ping_server, ( SQLCA *, char *, unsigned int ))
FUNC_INFO( extern, short, _esqlentry_, db_version_check, ( unsigned short ))
FUNC_INFO( extern, unsigned short, _esqlentry_, db_verify_version_12, ( void ))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_locate_servers, ( SQLCA *, SQL_CALLBACK_PARM, void * ))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_locate_servers_ex, ( SQLCA *, SQL_CALLBACK_PARM, void *, unsigned int ))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_get_property, ( SQLCA *, a_db_property, char *, int ))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_set_property, ( SQLCA *, a_db_set_property, char * ))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_time_change, ( SQLCA * ))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_change_char_charset, ( SQLCA *, const char * ))
FUNC_INFO( extern, unsigned int, _esqlentry_, db_change_nchar_charset, ( SQLCA *, const char * ))
FUNC_INFO( extern, void *, _esqlentry_, DBAlloc, ( size_t ))
FUNC_INFO( extern, void *, _esqlentry_, DBRealloc, ( void *, size_t ))
FUNC_INFO( extern, void, _esqlentry_, DBFree, ( void * ))
/* Callback definitions */
FUNC_INFO( extern, void, _esqlentry_, db_register_a_callback, ( SQLCA *, a_db_callback_index, SQL_CALLBACK_PARM ))

View File

@ -0,0 +1,134 @@
// *****************************************************
// Copyright (c) 2001-2011 iAnywhere Solutions, Inc.
// Portions copyright (c) 1988-2011 Sybase, Inc.
// All rights reserved. All unpublished rights reserved.
// *****************************************************
#ifndef _SQLOS_H_INCLUDED
#define _SQLOS_H_INCLUDED
/******************************************************************/
/* NOTE: _SQL_OS_<operating-system> will be defined by the */
/* preprocessor -o option. */
/* - also use macros that are defined in various environments*/
/* by various compilers to set the appropriate _SQL_OS */
/* macro for those files that are not preprocessed */
/******************************************************************/
#if !defined( UNIX ) && ( defined( _SQL_OS_UNIX ) || defined( _SQL_OS_UNIX64 ) || defined( __unix__ ) || defined( __APPLE__ ) || defined( __sun ) || defined( __hpux ) || defined( FREEBSD ) || defined( _AIX ) || defined( __linux__ ) )
#if !defined( ULPLAT_UNIXBASE )
#define UNIX
#endif
#endif
#if !defined( UNIX64 ) && defined( UNIX ) && ( defined( _SQL_OS_UNIX64 ) || defined( __LP64__ ) || defined( __64BIT__ ) || defined( __sparcv9 ) || defined( __amd64 ) )
#define UNIX64
#endif
#if defined( UNDER_PALM_OS )
#define _SQL_OS_PALM
#endif
#if defined( WINNT ) \
|| defined( _WINNT ) \
|| defined( __NT__ ) \
|| defined( WIN32 ) \
|| defined( _WIN32 ) \
|| defined( __WIN32__ ) \
|| defined( UNDER_CE )
#define _SQL_OS_WINNT
#endif
#if defined( UNIX64 )
#define _SQL_OS_UNIX64
#elif defined( UNIX ) \
|| defined( UNDER_UNIX ) \
|| defined( UNDER_VXW ) \
|| defined( ULPLAT_UNIXBASE )
#define _SQL_OS_UNIX
#endif
/******************************************************************/
/* Make sure that one of the _SQL_OS_ macros has been defined */
/******************************************************************/
#if !defined( _SQL_OS_WINNT ) \
&& !defined( _SQL_OS_PALM ) \
&& !defined( _SQL_OS_UNIX ) \
&& !defined( _SQL_OS_UNIX64 )
#error The appropriate _SQL_OS macro has not been defined
#endif
/******************************************************/
/* Define the variant of UNIX being used */
/******************************************************/
#if defined( _SQL_OS_UNIX ) || defined( _SQL_OS_UNIX64 )
#if defined( _AIX ) || defined( __aix__ )
#define _SQL_OS_UNIX_VARIANT_AIX
#elif defined( __sun ) || defined( __sun__ )
#define _SQL_OS_UNIX_VARIANT_SUN
#elif defined( __hpux ) || defined( __hpux__ )
#define _SQL_OS_UNIX_VARIANT_HPUX
#elif defined( __linux__ )
#define _SQL_OS_UNIX_VARIANT_LINUX
#elif defined( __APPLE__ )
// (This is also on for iPhone.)
#define _SQL_OS_UNIX_VARIANT_MACOSX
#elif defined( FREEBSD )
#define _SQL_OS_UNIX_VARIANT_FREEBSD
#elif defined( UNDER_VXW )
// n/a
#else
#error Unknown UNIX variant used
#endif
#endif
/****************************************************************************/
/* Check for bitness mismatch */
/****************************************************************************/
#if ( defined( _SQL_OS_UNIX_VARIANT_LINUX ) && defined( __INTEL_COMPILER ) ) || ( defined( _SQL_OS_UNIX_VARIANT_HPUX ) && ( defined( __HP_cc ) || defined( __HP_aCC ) ) )
#if defined( UNIX64 ) && !defined( __LP64__ )
#error "UNIX64 defined but 64-bit compilation not requested"
#elif !defined( UNIX64 ) && defined( __LP64__ )
#error "64-bit compilation requested but UNIX64 is not defined"
#endif
#endif
#if ( defined( _SQL_OS_UNIX_VARIANT_LINUX ) || defined( _SQL_OS_UNIX_VARIANT_SUN ) ) && ( defined( __SUNPRO_C ) || defined( __SUNPRO_CC ) )
#if defined( UNIX64 ) && ! ( defined( __amd64 ) || defined( __sparcv9 ) )
#error "UNIX64 defined but 64-bit compilation not requested"
#elif !defined( UNIX64 ) && ( defined( __amd64 ) || defined( __sparcv9 ) )
#error "64-bit compilation requested but UNIX64 is not defined"
#endif
#endif
/****************************************/
/* Define a_sql_int32/a_sql_uint32 */
/****************************************/
#if defined( _SQL_OS_UNIX64 ) || defined( _SQL_OS_UNIX_VARIANT_AIX )
typedef int a_sql_int32;
typedef unsigned int a_sql_uint32;
typedef long a_sql_int64;
typedef unsigned long a_sql_uint64;
#else
#if defined( _SQL_OS_UNIX_VARIANT_MACOSX )
typedef int a_sql_int32;
typedef unsigned int a_sql_uint32;
#else
typedef long a_sql_int32;
typedef unsigned long a_sql_uint32;
#endif
#if ( defined( _MSC_VER ) && _MSC_VER < 1300 ) || ( defined(__BORLANDC__) && __BORLANDC__ <= 0x0560 )
typedef __int64 a_sql_int64;
typedef unsigned __int64 a_sql_uint64;
#else
typedef long long a_sql_int64;
typedef unsigned long long a_sql_uint64;
#endif
#endif
#endif

View File

@ -0,0 +1,122 @@
//////////////////////////////////////////////////////////////////////
// asaAPI.h
//////////////////////////////////////////////////////////////////////
#if !defined(__ASAAPI_H__)
#define __ASAAPI_H__
#include <SQLAPI.h>
#include <sqlca.h>
#include <sacapi.h>
extern void AddSQLAnywhereSupport(const SAConnection * pCon);
extern void ReleaseSQLAnywhereSupport();
typedef sacapi_bool (*sqlany_init_t)( const char * app_name, sacapi_u32 api_version, sacapi_u32 * max_version );
typedef void (*sqlany_fini_t)();
typedef a_sqlany_connection * (*sqlany_new_connection_t)( );
typedef void (*sqlany_free_connection_t)( a_sqlany_connection *sqlany_conn );
typedef a_sqlany_connection * (*sqlany_make_connection_t)( void * arg );
typedef sacapi_bool (*sqlany_connect_t)( a_sqlany_connection * sqlany_conn, const char * str );
typedef sacapi_bool (*sqlany_disconnect_t)( a_sqlany_connection * sqlany_conn );
typedef sacapi_bool (*sqlany_execute_immediate_t)( a_sqlany_connection * sqlany_conn, const char * sql );
typedef a_sqlany_stmt * (*sqlany_prepare_t)( a_sqlany_connection * sqlany_conn, const char * sql_str );
typedef void (*sqlany_free_stmt_t)( a_sqlany_stmt * sqlany_stmt );
typedef sacapi_i32 (*sqlany_num_params_t)( a_sqlany_stmt * sqlany_stmt );
typedef sacapi_bool (*sqlany_describe_bind_param_t)( a_sqlany_stmt * sqlany_stmt, sacapi_u32 index, a_sqlany_bind_param * params );
typedef sacapi_bool (*sqlany_bind_param_t)( a_sqlany_stmt * sqlany_stmt, sacapi_u32 index, a_sqlany_bind_param * params );
typedef sacapi_bool (*sqlany_send_param_data_t)( a_sqlany_stmt * sqlany_stmt, sacapi_u32 index, char * buffer, size_t size );
typedef sacapi_bool (*sqlany_reset_t)( a_sqlany_stmt * sqlany_stmt );
typedef sacapi_bool (*sqlany_get_bind_param_info_t)( a_sqlany_stmt * sqlany_stmt, sacapi_u32 index, a_sqlany_bind_param_info * info );
typedef sacapi_bool (*sqlany_execute_t)( a_sqlany_stmt * sqlany_stmt );
typedef a_sqlany_stmt * (*sqlany_execute_direct_t)( a_sqlany_connection * sqlany_conn, const char * sql_str );
typedef sacapi_bool (*sqlany_fetch_absolute_t)( a_sqlany_stmt * sqlany_result, sacapi_i32 row_num );
typedef sacapi_bool (*sqlany_fetch_next_t)( a_sqlany_stmt * sqlany_stmt );
typedef sacapi_bool (*sqlany_get_next_result_t)( a_sqlany_stmt * sqlany_stmt );
typedef sacapi_i32 (*sqlany_affected_rows_t)( a_sqlany_stmt * sqlany_stmt );
typedef sacapi_i32 (*sqlany_num_cols_t)( a_sqlany_stmt * sqlany_stmt );
typedef sacapi_i32 (*sqlany_num_rows_t)( a_sqlany_stmt * sqlany_stmt );
typedef sacapi_bool (*sqlany_get_column_t)( a_sqlany_stmt * sqlany_stmt, sacapi_u32 col_index, a_sqlany_data_value * buffer );
typedef sacapi_i32 (*sqlany_get_data_t)( a_sqlany_stmt * sqlany_stmt, sacapi_u32 col_index, size_t offset, void * buffer, size_t size );
typedef sacapi_bool (*sqlany_get_data_info_t)( a_sqlany_stmt * sqlany_stmt, sacapi_u32 col_index, a_sqlany_data_info * buffer );
typedef sacapi_bool (*sqlany_get_column_info_t)( a_sqlany_stmt * sqlany_stmt, sacapi_u32 col_index, a_sqlany_column_info * buffer );
typedef sacapi_bool (*sqlany_commit_t)( a_sqlany_connection * sqlany_conn );
typedef sacapi_bool (*sqlany_rollback_t)( a_sqlany_connection * sqlany_conn );
typedef sacapi_bool (*sqlany_client_version_t)( char * buffer, size_t len );
typedef sacapi_i32 (*sqlany_error_t)( a_sqlany_connection * sqlany_conn, char * buffer, size_t size );
typedef size_t (*sqlany_sqlstate_t)( a_sqlany_connection * sqlany_conn, char * buffer, size_t size );
typedef void (*sqlany_clear_error_t)( a_sqlany_connection * sqlany_conn );
// newer API
typedef a_sqlany_interface_context *(*sqlany_init_ex_t)( const char *app_name, sacapi_u32 api_version, sacapi_u32 *max_version );
typedef void (*sqlany_fini_ex_t)( a_sqlany_interface_context *context );
typedef a_sqlany_connection *(*sqlany_new_connection_ex_t)( a_sqlany_interface_context *context );
typedef a_sqlany_connection *(*sqlany_make_connection_ex_t)( a_sqlany_interface_context *context, void *arg );
typedef sacapi_bool (*sqlany_client_version_ex_t)( a_sqlany_interface_context *context, char *buffer, size_t len );
typedef void (*sqlany_cancel_t)( a_sqlany_connection * sqlany_conn );
// API declarations
class SQLAPI_API asaAPI : public saAPI
{
public:
asaAPI();
sqlany_init_t sqlany_init;
sqlany_fini_t sqlany_fini;
sqlany_new_connection_t sqlany_new_connection;
sqlany_free_connection_t sqlany_free_connection;
sqlany_make_connection_t sqlany_make_connection;
sqlany_connect_t sqlany_connect;
sqlany_disconnect_t sqlany_disconnect;
sqlany_execute_immediate_t sqlany_execute_immediate;
sqlany_prepare_t sqlany_prepare;
sqlany_free_stmt_t sqlany_free_stmt;
sqlany_num_params_t sqlany_num_params;
sqlany_describe_bind_param_t sqlany_describe_bind_param;
sqlany_bind_param_t sqlany_bind_param;
sqlany_send_param_data_t sqlany_send_param_data;
sqlany_reset_t sqlany_reset;
sqlany_get_bind_param_info_t sqlany_get_bind_param_info;
sqlany_execute_t sqlany_execute;
sqlany_execute_direct_t sqlany_execute_direct;
sqlany_fetch_absolute_t sqlany_fetch_absolute;
sqlany_fetch_next_t sqlany_fetch_next;
sqlany_get_next_result_t sqlany_get_next_result;
sqlany_affected_rows_t sqlany_affected_rows;
sqlany_num_cols_t sqlany_num_cols;
sqlany_num_rows_t sqlany_num_rows;
sqlany_get_column_t sqlany_get_column;
sqlany_get_data_t sqlany_get_data;
sqlany_get_data_info_t sqlany_get_data_info;
sqlany_get_column_info_t sqlany_get_column_info;
sqlany_commit_t sqlany_commit;
sqlany_rollback_t sqlany_rollback;
sqlany_client_version_t sqlany_client_version;
sqlany_error_t sqlany_error;
sqlany_sqlstate_t sqlany_sqlstate;
sqlany_clear_error_t sqlany_clear_error;
// newer API
sqlany_init_ex_t sqlany_init_ex;
sqlany_fini_ex_t sqlany_fini_ex;
sqlany_new_connection_ex_t sqlany_new_connection_ex;
sqlany_make_connection_ex_t sqlany_make_connection_ex;
sqlany_client_version_ex_t sqlany_client_version_ex;
sqlany_cancel_t sqlany_cancel;
};
class SQLAPI_API asaConnectionHandles : public saConnectionHandles
{
public:
asaConnectionHandles();
a_sqlany_connection *pDb;
};
class SQLAPI_API asaCommandHandles : public saCommandHandles
{
public:
asaCommandHandles();
a_sqlany_stmt *pStmt;
};
extern asaAPI g_asaAPI;
#endif //__ASAAPI_H__

View File

@ -0,0 +1,593 @@
// db2API.h
//
#if !defined(__DB2API_H__)
#define __DB2API_H__
#include "SQLAPI.h"
#include <sqlcli.h>
#include <sqlcli1.h>
extern long g_nDB2DLLVersionLoaded;
extern void AddDB2Support(const SAConnection * pCon);
extern void ReleaseDB2Support();
typedef SQLRETURN (SQL_API_FN *SQLAllocConnect_t)(SQLHENV henv,
SQLHDBC FAR *phdbc);
typedef SQLRETURN (SQL_API_FN *SQLAllocEnv_t)(SQLHENV FAR *phenv);
typedef SQLRETURN (SQL_API_FN *SQLAllocHandle_t)( SQLSMALLINT fHandleType,
SQLHANDLE hInput,
SQLHANDLE * phOutput );
typedef SQLRETURN (SQL_API_FN *SQLAllocStmt_t)(SQLHDBC hdbc,
SQLHSTMT FAR *phstmt);
typedef SQLRETURN (SQL_API_FN *SQLBindCol_t)(SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLSMALLINT fCType,
SQLPOINTER rgbValue,
SQLLEN cbValueMax,
SQLLEN FAR *pcbValue);
typedef SQLRETURN (SQL_API_FN *SQLBindFileToCol_t)(SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLCHAR FAR *FileName,
SQLSMALLINT FAR *FileNameLength,
SQLUINTEGER FAR *FileOptions,
SQLSMALLINT MaxFileNameLength,
SQLINTEGER FAR *StringLength,
SQLINTEGER FAR *IndicatorValue);
typedef SQLRETURN (SQL_API_FN *SQLBindFileToParam_t)(SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT fSqlType,
SQLCHAR FAR *FileName,
SQLSMALLINT FAR *FileNameLength,
SQLUINTEGER FAR *FileOptions,
SQLSMALLINT MaxFileNameLength,
SQLINTEGER FAR *IndicatorValue);
typedef SQLRETURN (SQL_API *SQLBindParameter_t)(
SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT fParamType,
SQLSMALLINT fCType,
SQLSMALLINT fSqlType,
SQLULEN cbColDef,
SQLSMALLINT ibScale,
SQLPOINTER rgbValue,
SQLLEN cbValueMax,
SQLLEN *pcbValue);
typedef SQLRETURN (SQL_API *SQLBrowseConnect_t)(
SQLHDBC hdbc,
SQLTCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLTCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut);
typedef SQLRETURN (SQL_API_FN *SQLBuildDataLink_t)( SQLHSTMT hStmt,
SQLCHAR FAR * pszLinkType,
SQLINTEGER cbLinkType,
SQLCHAR FAR * pszDataLocation,
SQLINTEGER cbDataLocation,
SQLCHAR FAR * pszComment,
SQLINTEGER cbComment,
SQLCHAR FAR * pDataLink,
SQLINTEGER cbDataLinkMax,
SQLINTEGER FAR * pcbDataLink );
typedef SQLRETURN (SQL_API *SQLBulkOperations_t)(
SQLHSTMT StatementHandle,
SQLSMALLINT Operation);
typedef SQLRETURN (SQL_API_FN *SQLCancel_t)(SQLHSTMT hstmt);
typedef SQLRETURN (SQL_API_FN *SQLCloseCursor_t)( SQLHSTMT hStmt );
#ifdef ODBC64
typedef SQLRETURN (SQL_API_FN *SQLColAttribute_t)(SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLUSMALLINT fDescType,
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT FAR *pcbDesc,
SQLLEN *pfDesc);
#else
typedef SQLRETURN (SQL_API_FN *SQLColAttribute_t)(SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLUSMALLINT fDescType,
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT FAR *pcbDesc,
SQLPOINTER pfDesc);
#endif
typedef SQLRETURN (SQL_API *SQLColAttributes_t)(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLUSMALLINT fDescType,
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT *pcbDesc,
SQLLEN *pfDesc);
typedef SQLRETURN (SQL_API *SQLColumnPrivileges_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLTCHAR *szColumnName,
SQLSMALLINT cbColumnName);
typedef SQLRETURN (SQL_API_FN *SQLColumns_t)(SQLHSTMT hstmt,
SQLTCHAR FAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR FAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR FAR *szTableName,
SQLSMALLINT cbTableName,
SQLTCHAR FAR *szColumnName,
SQLSMALLINT cbColumnName);
typedef SQLRETURN (SQL_API_FN *SQLConnect_t)(SQLHDBC hdbc,
SQLTCHAR FAR *szDSN,
SQLSMALLINT cbDSN,
SQLTCHAR FAR *szUID,
SQLSMALLINT cbUID,
SQLTCHAR FAR *szAuthStr,
SQLSMALLINT cbAuthStr);
typedef SQLRETURN (SQL_API_FN *SQLCopyDesc_t)( SQLHDESC hDescSource,
SQLHDESC hDescTarget );
typedef SQLRETURN (SQL_API_FN *SQLDataSources_t)(SQLHENV henv,
SQLUSMALLINT fDirection,
SQLTCHAR FAR *szDSN,
SQLSMALLINT cbDSNMax,
SQLSMALLINT FAR *pcbDSN,
SQLTCHAR FAR *szDescription,
SQLSMALLINT cbDescriptionMax,
SQLSMALLINT FAR *pcbDescription);
typedef SQLRETURN (SQL_API *SQLDescribeCol_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLTCHAR *ColumnName,
SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
SQLSMALLINT *DataType, SQLULEN *ColumnSize,
SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable);
typedef SQLRETURN (SQL_API *SQLDescribeParam_t)(
SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT *pfSqlType,
SQLULEN *pcbParamDef,
SQLSMALLINT *pibScale,
SQLSMALLINT *pfNullable);
typedef SQLRETURN (SQL_API *SQLDisconnect_t)(SQLHDBC ConnectionHandle);
typedef SQLRETURN (SQL_API *SQLDriverConnect_t)(
SQLHDBC hdbc,
SQLHWND hwnd,
SQLTCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLTCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut,
SQLUSMALLINT fDriverCompletion);
typedef SQLRETURN (SQL_API *SQLEndTran_t)(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT CompletionType);
typedef SQLRETURN (SQL_API_FN *SQLError_t)(SQLHENV henv,
SQLHDBC hdbc,
SQLHSTMT hstmt,
SQLTCHAR FAR *szSqlState,
SQLINTEGER FAR *pfNativeError,
SQLTCHAR FAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT FAR *pcbErrorMsg);
typedef SQLRETURN (SQL_API_FN *SQLExecDirect_t)(SQLHSTMT hstmt,
SQLTCHAR FAR *szSqlStr,
SQLINTEGER cbSqlStr);
typedef SQLRETURN (SQL_API_FN *SQLExecute_t)(SQLHSTMT hstmt);
typedef SQLRETURN (SQL_API_FN *SQLExtendedBind_t)(SQLHSTMT hstmt,
SQLSMALLINT fBindCol,
SQLSMALLINT cRecords,
SQLSMALLINT * pfCType,
SQLPOINTER * rgbValue,
SQLINTEGER * cbValueMax,
SQLUINTEGER * puiPrecisionCType,
SQLSMALLINT * psScaleCType,
SQLINTEGER ** pcbValue,
SQLINTEGER ** piIndicatorPtr,
SQLSMALLINT * pfParamType,
SQLSMALLINT * pfSQLType,
SQLUINTEGER * pcbColDef,
SQLSMALLINT * pibScale );
typedef SQLRETURN (SQL_API *SQLExtendedFetch_t)(
SQLHSTMT hstmt,
SQLUSMALLINT fFetchType,
SQLLEN irow,
SQLULEN *pcrow,
SQLUSMALLINT *rgfRowStatus);
typedef SQLRETURN (SQL_API_FN *SQLExtendedPrepare_t)( SQLHSTMT hstmt,
SQLTCHAR * pszSqlStmt,
SQLINTEGER cbSqlStmt,
SQLINTEGER cPars,
SQLSMALLINT sStmtType,
SQLINTEGER cStmtAttrs,
SQLINTEGER * piStmtAttr,
SQLINTEGER * pvParams );
typedef SQLRETURN (SQL_API_FN *SQLFetch_t)(SQLHSTMT hstmt);
typedef SQLRETURN (SQL_API *SQLFetchScroll_t)( SQLHSTMT StatementHandle,
SQLSMALLINT FetchOrientation,
SQLLEN FetchOffset);
typedef SQLRETURN (SQL_API *SQLForeignKeys_t)(
SQLHSTMT hstmt,
SQLTCHAR *szPkCatalogName,
SQLSMALLINT cbPkCatalogName,
SQLTCHAR *szPkSchemaName,
SQLSMALLINT cbPkSchemaName,
SQLTCHAR *szPkTableName,
SQLSMALLINT cbPkTableName,
SQLTCHAR *szFkCatalogName,
SQLSMALLINT cbFkCatalogName,
SQLTCHAR *szFkSchemaName,
SQLSMALLINT cbFkSchemaName,
SQLTCHAR *szFkTableName,
SQLSMALLINT cbFkTableName);
typedef SQLRETURN (SQL_API_FN *SQLFreeConnect_t)(SQLHDBC hdbc);
typedef SQLRETURN (SQL_API_FN *SQLFreeEnv_t)(SQLHENV henv);
typedef SQLRETURN (SQL_API_FN *SQLFreeHandle_t)( SQLSMALLINT fHandleType,
SQLHANDLE hHandle );
typedef SQLRETURN (SQL_API_FN *SQLFreeStmt_t)(SQLHSTMT hstmt,
SQLUSMALLINT fOption);
typedef SQLRETURN (SQL_API *SQLGetConnectAttr_t)( SQLHDBC ConnectionHandle,
SQLINTEGER Attribute,
SQLPOINTER Value,
SQLINTEGER BufferLength,
SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API_FN *SQLGetConnectOption_t)(
SQLHDBC hdbc,
SQLUSMALLINT fOption,
SQLPOINTER pvParam);
typedef SQLRETURN (SQL_API_FN *SQLGetCursorName_t)(SQLHSTMT hstmt,
SQLTCHAR FAR *szCursor,
SQLSMALLINT cbCursorMax,
SQLSMALLINT FAR *pcbCursor);
typedef SQLRETURN (SQL_API_FN *SQLGetData_t)(SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLSMALLINT fCType,
SQLPOINTER rgbValue,
SQLLEN cbValueMax,
SQLLEN FAR *pcbValue);
typedef SQLRETURN (SQL_API_FN *SQLGetDataLinkAttr_t)( SQLHSTMT hStmt,
SQLSMALLINT fAttrType,
SQLCHAR FAR * pDataLink,
SQLINTEGER cbDataLink,
SQLPOINTER pAttribute,
SQLINTEGER cbAttributeMax,
SQLINTEGER * pcbAttribute );
typedef SQLRETURN (SQL_API_FN *SQLGetDescField_t)(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
SQLPOINTER Value, SQLINTEGER BufferLength,
SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API_FN *SQLGetDescRec_t)(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLTCHAR *Name,
SQLSMALLINT BufferLength, SQLSMALLINT *StringLength,
SQLSMALLINT *Type, SQLSMALLINT *SubType,
SQLLEN *Length, SQLSMALLINT *Precision,
SQLSMALLINT *Scale, SQLSMALLINT *Nullable);
typedef SQLRETURN (SQL_API_FN *SQLGetDiagField_t)( SQLSMALLINT fHandleType,
SQLHANDLE hHandle,
SQLSMALLINT iRecNumber,
SQLSMALLINT fDiagIdentifier,
SQLPOINTER pDiagInfo,
SQLSMALLINT cbDiagInfoMax,
SQLSMALLINT * pcbDiagInfo );
typedef SQLRETURN (SQL_API_FN *SQLGetDiagRec_t)( SQLSMALLINT fHandleType,
SQLHANDLE hHandle,
SQLSMALLINT iRecNumber,
SQLTCHAR * pszSqlState,
SQLINTEGER * pfNativeError,
SQLTCHAR * pszErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT * pcbErrorMsg );
typedef SQLRETURN (SQL_API_FN *SQLGetEnvAttr_t)(SQLHENV henv,
SQLINTEGER Attribute,
SQLPOINTER Value,
SQLINTEGER BufferLength,
SQLINTEGER FAR *StringLength);
typedef SQLRETURN (SQL_API_FN *SQLGetFunctions_t)(SQLHDBC hdbc,
SQLUSMALLINT fFunction,
SQLUSMALLINT FAR *pfExists);
typedef SQLRETURN (SQL_API_FN *SQLGetInfo_t)(SQLHDBC hdbc,
SQLUSMALLINT fInfoType,
SQLPOINTER rgbInfoValue,
SQLSMALLINT cbInfoValueMax,
SQLSMALLINT FAR *pcbInfoValue);
typedef SQLRETURN (SQL_API_FN *SQLGetLength_t)(SQLHSTMT hstmt,
SQLSMALLINT LocatorCType,
SQLINTEGER Locator,
SQLINTEGER FAR *StringLength,
SQLINTEGER FAR *IndicatorValue);
typedef SQLRETURN (SQL_API_FN *SQLGetPosition_t)(SQLHSTMT hstmt,
SQLSMALLINT LocatorCType,
SQLINTEGER SourceLocator,
SQLINTEGER SearchLocator,
SQLCHAR FAR *SearchLiteral,
SQLINTEGER SearchLiteralLength,
SQLUINTEGER FromPosition,
SQLUINTEGER FAR *LocatedAt,
SQLINTEGER FAR *IndicatorValue);
typedef SQLRETURN (SQL_API_FN *SQLGetSQLCA_t)(SQLHENV henv,
SQLHDBC hdbc,
SQLHSTMT hstmt,
struct sqlca FAR *pSqlca );
typedef SQLRETURN (SQL_API *SQLGetStmtAttr_t)( SQLHSTMT StatementHandle,
SQLINTEGER Attribute,
SQLPOINTER Value,
SQLINTEGER BufferLength,
SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API_FN *SQLGetStmtOption_t)(SQLHSTMT hstmt,
SQLUSMALLINT fOption,
SQLPOINTER pvParam);
typedef SQLRETURN (SQL_API_FN *SQLGetSubString_t)(SQLHSTMT hstmt,
SQLSMALLINT LocatorCType,
SQLINTEGER SourceLocator,
SQLUINTEGER FromPosition,
SQLUINTEGER ForLength,
SQLSMALLINT TargetCType,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER FAR *StringLength,
SQLINTEGER FAR *IndicatorValue);
typedef SQLRETURN (SQL_API_FN *SQLGetTypeInfo_t)(SQLHSTMT hstmt,
SQLSMALLINT fSqlType);
typedef SQLRETURN (SQL_API *SQLMoreResults_t)(
SQLHSTMT hstmt);
typedef SQLRETURN (SQL_API *SQLNativeSql_t)(
SQLHDBC hdbc,
SQLTCHAR *szSqlStrIn,
SQLINTEGER cbSqlStrIn,
SQLTCHAR *szSqlStr,
SQLINTEGER cbSqlStrMax,
SQLINTEGER *pcbSqlStr);
typedef SQLRETURN (SQL_API *SQLNumParams_t)(
SQLHSTMT hstmt,
SQLSMALLINT *pcpar);
typedef SQLRETURN (SQL_API_FN *SQLNumResultCols_t)(SQLHSTMT hstmt,
SQLSMALLINT FAR *pccol);
typedef SQLRETURN (SQL_API_FN *SQLParamData_t)(SQLHSTMT hstmt,
SQLPOINTER FAR *prgbValue);
typedef SQLRETURN (SQL_API *SQLParamOptions_t)(
SQLHSTMT hstmt,
SQLULEN crow,
SQLULEN *pirow);
typedef SQLRETURN (SQL_API_FN *SQLPrepare_t)(SQLHSTMT hstmt,
SQLTCHAR FAR *szSqlStr,
SQLINTEGER cbSqlStr);
typedef SQLRETURN (SQL_API *SQLPrimaryKeys_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szTableName,
SQLSMALLINT cbTableName);
typedef SQLRETURN (SQL_API *SQLProcedureColumns_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szProcName,
SQLSMALLINT cbProcName,
SQLTCHAR *szColumnName,
SQLSMALLINT cbColumnName);
typedef SQLRETURN (SQL_API *SQLProcedures_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szProcName,
SQLSMALLINT cbProcName);
typedef SQLRETURN (SQL_API_FN *SQLPutData_t)(SQLHSTMT hstmt,
SQLPOINTER rgbValue,
SQLLEN cbValue);
typedef SQLRETURN (SQL_API_FN *SQLRowCount_t)(SQLHSTMT hstmt,
SQLLEN FAR *pcrow);
typedef SQLRETURN (SQL_API_FN *SQLSetColAttributes_t)(SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLCHAR FAR *pszColName,
SQLSMALLINT cbColName,
SQLSMALLINT fSQLType,
SQLUINTEGER cbColDef,
SQLSMALLINT ibScale,
SQLSMALLINT fNullable);
typedef SQLRETURN (SQL_API_FN *SQLSetConnectAttr_t)(
SQLHDBC hdbc,
SQLINTEGER fOption,
SQLPOINTER pvParam,
SQLINTEGER fStrLen);
typedef SQLRETURN (SQL_API_FN *SQLSetConnection_t)(SQLHDBC hdbc);
typedef SQLRETURN (SQL_API_FN *SQLSetConnectOption_t)(
SQLHDBC hdbc,
SQLUSMALLINT fOption,
SQLULEN vParam);
typedef SQLRETURN (SQL_API_FN *SQLSetCursorName_t)(SQLHSTMT hstmt,
SQLTCHAR FAR *szCursor,
SQLSMALLINT cbCursor);
typedef SQLRETURN (SQL_API_FN *SQLSetDescField_t)(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
SQLPOINTER Value, SQLINTEGER BufferLength);
typedef SQLRETURN (SQL_API_FN *SQLSetDescRec_t)(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT Type,
SQLSMALLINT SubType, SQLLEN Length,
SQLSMALLINT Precision, SQLSMALLINT Scale,
SQLPOINTER Data, SQLLEN *StringLength,
SQLLEN *Indicator);
typedef SQLRETURN (SQL_API_FN *SQLSetEnvAttr_t)(SQLHENV henv,
SQLINTEGER Attribute,
SQLPOINTER Value,
SQLINTEGER StringLength);
typedef SQLRETURN (SQL_API_FN *SQLSetParam_t)(SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT fCType,
SQLSMALLINT fSqlType,
SQLULEN cbParamDef,
SQLSMALLINT ibScale,
SQLPOINTER rgbValue,
SQLLEN FAR *pcbValue);
typedef SQLRETURN (SQL_API *SQLSetPos_t)(
SQLHSTMT hstmt,
SQLSETPOSIROW irow,
SQLUSMALLINT fOption,
SQLUSMALLINT fLock);
typedef SQLRETURN (SQL_API_FN *SQLSetStmtAttr_t)(SQLHSTMT hstmt,
SQLINTEGER fOption,
SQLPOINTER pvParam,
SQLINTEGER fStrLen);
typedef SQLRETURN (SQL_API_FN *SQLSetStmtOption_t)(SQLHSTMT hstmt,
SQLUSMALLINT fOption,
SQLULEN vParam);
typedef SQLRETURN (SQL_API_FN *SQLSpecialColumns_t)(SQLHSTMT hstmt,
SQLUSMALLINT fColType,
SQLTCHAR FAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR FAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR FAR *szTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT fScope,
SQLUSMALLINT fNullable);
typedef SQLRETURN (SQL_API_FN *SQLStatistics_t)(SQLHSTMT hstmt,
SQLTCHAR FAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR FAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR FAR *szTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT fUnique,
SQLUSMALLINT fAccuracy);
typedef SQLRETURN (SQL_API *SQLTablePrivileges_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szTableName,
SQLSMALLINT cbTableName);
typedef SQLRETURN (SQL_API_FN *SQLTables_t)(SQLHSTMT hstmt,
SQLTCHAR FAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR FAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR FAR *szTableName,
SQLSMALLINT cbTableName,
SQLTCHAR FAR *szTableType,
SQLSMALLINT cbTableType);
typedef SQLRETURN (SQL_API_FN *SQLTransact_t)(SQLHENV henv,
SQLHDBC hdbc,
SQLUSMALLINT fType);
class SQLAPI_API db2API : public saAPI
{
public:
db2API();
SQLAllocConnect_t SQLAllocConnect;
SQLAllocEnv_t SQLAllocEnv;
SQLAllocHandle_t SQLAllocHandle;
SQLAllocStmt_t SQLAllocStmt;
SQLBindCol_t SQLBindCol;
SQLBindFileToCol_t SQLBindFileToCol;
SQLBindFileToParam_t SQLBindFileToParam;
SQLBindParameter_t SQLBindParameter;
SQLBrowseConnect_t SQLBrowseConnect;
SQLBulkOperations_t SQLBulkOperations;
SQLCancel_t SQLCancel;
SQLCloseCursor_t SQLCloseCursor;
SQLColAttribute_t SQLColAttribute;
SQLColAttributes_t SQLColAttributes;
SQLColumnPrivileges_t SQLColumnPrivileges;
SQLColumns_t SQLColumns;
SQLConnect_t SQLConnect;
SQLCopyDesc_t SQLCopyDesc;
SQLDataSources_t SQLDataSources;
SQLDescribeCol_t SQLDescribeCol;
SQLDescribeParam_t SQLDescribeParam;
SQLDisconnect_t SQLDisconnect;
SQLDriverConnect_t SQLDriverConnect;
SQLEndTran_t SQLEndTran;
SQLError_t SQLError;
SQLExecDirect_t SQLExecDirect;
SQLExecute_t SQLExecute;
SQLExtendedBind_t SQLExtendedBind;
SQLExtendedFetch_t SQLExtendedFetch;
SQLExtendedPrepare_t SQLExtendedPrepare;
SQLFetch_t SQLFetch;
SQLFetchScroll_t SQLFetchScroll;
SQLForeignKeys_t SQLForeignKeys;
SQLFreeConnect_t SQLFreeConnect;
SQLFreeEnv_t SQLFreeEnv;
SQLFreeHandle_t SQLFreeHandle;
SQLFreeStmt_t SQLFreeStmt;
SQLGetConnectAttr_t SQLGetConnectAttr;
SQLGetConnectOption_t SQLGetConnectOption;
SQLGetCursorName_t SQLGetCursorName;
SQLGetData_t SQLGetData;
SQLGetDescField_t SQLGetDescField;
SQLGetDescRec_t SQLGetDescRec;
SQLGetDiagField_t SQLGetDiagField;
SQLGetDiagRec_t SQLGetDiagRec;
SQLGetEnvAttr_t SQLGetEnvAttr;
SQLGetFunctions_t SQLGetFunctions;
SQLGetInfo_t SQLGetInfo;
SQLGetLength_t SQLGetLength;
SQLGetPosition_t SQLGetPosition;
SQLGetSQLCA_t SQLGetSQLCA;
SQLGetStmtAttr_t SQLGetStmtAttr;
SQLGetStmtOption_t SQLGetStmtOption;
SQLGetSubString_t SQLGetSubString;
SQLGetTypeInfo_t SQLGetTypeInfo;
SQLMoreResults_t SQLMoreResults;
SQLNativeSql_t SQLNativeSql;
SQLNumParams_t SQLNumParams;
SQLNumResultCols_t SQLNumResultCols;
SQLParamData_t SQLParamData;
SQLParamOptions_t SQLParamOptions;
SQLPrepare_t SQLPrepare;
SQLPrimaryKeys_t SQLPrimaryKeys;
SQLProcedureColumns_t SQLProcedureColumns;
SQLProcedures_t SQLProcedures;
SQLPutData_t SQLPutData;
SQLRowCount_t SQLRowCount;
SQLSetColAttributes_t SQLSetColAttributes;
SQLSetConnectAttr_t SQLSetConnectAttr;
SQLSetConnection_t SQLSetConnection;
SQLSetConnectOption_t SQLSetConnectOption;
SQLSetCursorName_t SQLSetCursorName;
SQLSetDescField_t SQLSetDescField;
SQLSetDescRec_t SQLSetDescRec;
SQLSetEnvAttr_t SQLSetEnvAttr;
SQLSetParam_t SQLSetParam;
SQLSetPos_t SQLSetPos;
SQLSetStmtAttr_t SQLSetStmtAttr;
SQLSetStmtOption_t SQLSetStmtOption;
SQLSpecialColumns_t SQLSpecialColumns;
SQLStatistics_t SQLStatistics;
SQLTablePrivileges_t SQLTablePrivileges;
SQLTables_t SQLTables;
SQLTransact_t SQLTransact;
};
class SQLAPI_API db2ConnectionHandles : public saConnectionHandles
{
public:
db2ConnectionHandles();
SQLHENV m_hevn;
SQLHDBC m_hdbc;
};
class SQLAPI_API db2CommandHandles : public saCommandHandles
{
public:
db2CommandHandles();
SQLHSTMT m_hstmt;
};
extern db2API g_db2API;
#endif // !defined(__DB2API_H__)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,119 @@
/******************************************************************************
*
* Source File Name = SQLCA.H
*
* (C) COPYRIGHT International Business Machines Corp. 1987, 1997
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*
* Function = Include File defining:
* SQL Communications Area
*
* Operating System = Common C Include File
*
*****************************************************************************/
#if !(defined(SQLCODE) || defined(SQLCADE)) /* Permit Duplicate Includes */
#include "sqlsystm.h" /* System dependent defines */
#if defined(DB2NT)
#if defined _WIN64
#pragma pack(8)
#else
#pragma pack(4)
#endif
#elif (defined(DB2AIX) && defined(__64BIT__))
#pragma options align=natural
#elif (defined(DB2AIX))
#pragma options align=power
#endif
/* SQL Communication Area - SQLCA */
/* _SQLOLDCHAR defaults to 'char'. See sqlsystm.h for details. */
SQL_STRUCTURE sqlca
{
_SQLOLDCHAR sqlcaid[8]; /* Eyecatcher = 'SQLCA ' */
sqlint32 sqlcabc; /* SQLCA size in bytes = 136 */
#ifdef DB2_SQL92E
sqlint32 sqlcade; /* SQL return code */
#else
sqlint32 sqlcode; /* SQL return code */
#endif
short sqlerrml; /* Length for SQLERRMC */
_SQLOLDCHAR sqlerrmc[70]; /* Error message tokens */
_SQLOLDCHAR sqlerrp[8]; /* Diagnostic information */
sqlint32 sqlerrd[6]; /* Diagnostic information */
_SQLOLDCHAR sqlwarn[11]; /* Warning flags */
#ifdef DB2_SQL92E
_SQLOLDCHAR sqlstat[5]; /* State corresponding to SQLCODE */
#else
_SQLOLDCHAR sqlstate[5]; /* State corresponding to SQLCODE */
#endif
};
#ifdef DB2_SQL92E
#define SQLCADE sqlca.sqlcade
#else
#define SQLCODE sqlca.sqlcode
#endif
#define SQLWARN0 sqlca.sqlwarn[0]
#define SQLWARN1 sqlca.sqlwarn[1]
#define SQLWARN2 sqlca.sqlwarn[2]
#define SQLWARN3 sqlca.sqlwarn[3]
#define SQLWARN4 sqlca.sqlwarn[4]
#define SQLWARN5 sqlca.sqlwarn[5]
#define SQLWARN6 sqlca.sqlwarn[6]
#define SQLWARN7 sqlca.sqlwarn[7]
#define SQLWARN8 sqlca.sqlwarn[8]
#define SQLWARN9 sqlca.sqlwarn[9]
#define SQLWARNA sqlca.sqlwarn[10]
/* sqlerrd tokens updated when compound SQL statements processed */
#define SQL_CMP_NA_ERRORS 1
#define SQL_CMP_ROWS_AFFECTED 2
#define SQL_CMP_STMTS_COMPLETED 3
#define SQL_CMP_REF_INT_ROWS 4
/* sqlerrd tokens updated when CONNECT statements processed */
#define SQL_CONNECT_DB_APP2DB_CONVFACTOR 0
#define SQL_CONNECT_DB_DB2APP_CONVFACTOR 1
#define SQL_CONNECT_DB_UPDATEABILITY_IN_UOW 2
#define SQL_CONNECT_DB_COMMIT_TYPE 3
/* Values returned for sqlerrd[SQL_CONNECT_DB_UPDATEABILITY_IN_UOW] */
#define SQL_DB_UPDATEABLE 1
#define SQL_DB_READ_ONLY 2
/* Values returned for sqlerrd[SQL_CONNECT_DB_COMMIT_TYPE] */
#define SQL_DB_ONE_PHASE_COMMIT 1
#define SQL_DB_ONE_PHASE_READ_ONLY 2
#define SQL_DB_TWO_PHASE_COMMIT 3
/* sqlerrd tokens updated when MPP statements processed */
#define SQL_ERRD_NODE_NUM 1
#if defined(DB2NT)
#pragma pack()
#elif defined(DB2AIX)
#pragma options align=reset
#endif
#endif /* SQLCODE */

View File

@ -0,0 +1,807 @@
/******************************************************************************
*
* Source File Name = sqlcli.h
*
* (C) COPYRIGHT International Business Machines Corp. 1993, 1999
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*
* Function = Include File defining:
* DB2 CLI Interface - Constants
* DB2 CLI Interface - Data Structures
* DB2 CLI Interface - Function Prototypes
*
* Operating System = Common C Include File
*
*****************************************************************************/
#ifndef SQL_H_SQLCLI
#define SQL_H_SQLCLI /* Permit duplicate Includes */
/* Prevent inclusion of winsock.h in windows.h */
#ifndef _WINSOCKAPI_
#define _WINSOCKAPI_
#define DB2_WINSOCKAPI_
#endif
/* DB2CLI_VER DB2 Call Level Interface Version Number (0x0210).
* To revert to Version 1.0 definitions,
* issue #define DB2CLI_VER 0x0110 before including
* sqlcli.h and sqlcli1.h
*/
/* If DB2CLI_VER is not defined, assume version 2.10 */
#ifndef DB2CLI_VER
#define DB2CLI_VER 0x0310
#endif
/* ODBC64 should be used instead of CLI_WIN64 for linking with libdb2o.dll */
#ifndef ODBC64
#ifdef CLI_WIN64
#define ODBC64
#endif
#endif
#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
#include "sqlsystm.h" /* System dependent defines */
#if defined(DB2NT)
#include <windows.h>
#else
#define FAR
#endif
#define SQL_API SQL_API_FN
/* generally useful constants */
#define SQL_MAX_MESSAGE_LENGTH 1024 /* message buffer size */
#define SQL_MAX_ID_LENGTH 128 /* maximum identifier name size,
e.g. cursor names */
/* date/time length constants */
#define SQL_DATE_LEN 10
#define SQL_TIME_LEN 8 /* add P+1 if precision is nonzero */
#define SQL_TIMESTAMP_LEN 19 /* add P+1 if precision is nonzero */
/* handle type identifiers */
#define SQL_HANDLE_ENV 1
#define SQL_HANDLE_DBC 2
#define SQL_HANDLE_STMT 3
#define SQL_HANDLE_DESC 4
/* RETCODE values */
#define SQL_SUCCESS 0
#define SQL_SUCCESS_WITH_INFO 1
#define SQL_NEED_DATA 99
#define SQL_NO_DATA 100
#define SQL_STILL_EXECUTING 2
#define SQL_ERROR -1
#define SQL_INVALID_HANDLE -2
/* test for SQL_SUCCESS or SQL_SUCCESS_WITH_INFO */
#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
/* SQLFreeStmt option values */
#define SQL_CLOSE 0
#define SQL_DROP 1
#define SQL_UNBIND 2
#define SQL_RESET_PARAMS 3
/* SQLTransact option values */
#define SQL_COMMIT 0
#define SQL_ROLLBACK 1
/* Standard SQL data types */
#define SQL_UNKNOWN_TYPE 0
#define SQL_CHAR 1
#define SQL_NUMERIC 2
#define SQL_DECIMAL 3
#define SQL_INTEGER 4
#define SQL_SMALLINT 5
#define SQL_FLOAT 6
#define SQL_REAL 7
#define SQL_DOUBLE 8
#define SQL_DATETIME 9
#define SQL_VARCHAR 12
#define SQL_WCHAR (-8)
#define SQL_WVARCHAR (-9)
#define SQL_WLONGVARCHAR (-10)
#define SQL_DECFLOAT (-360)
/* One-parameter shortcuts for date/time data types */
#define SQL_TYPE_DATE 91
#define SQL_TYPE_TIME 92
#define SQL_TYPE_TIMESTAMP 93
/* Statement attribute values for cursor sensitivity */
#define SQL_UNSPECIFIED 0
#define SQL_INSENSITIVE 1
#define SQL_SENSITIVE 2
/* Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() */
#define SQL_DEFAULT 99
/* SQLGetData() code indicating that the application row descriptor
* specifies the data type
*/
#define SQL_ARD_TYPE (-99)
/* SQL date/time type subcodes */
#define SQL_CODE_DATE 1
#define SQL_CODE_TIME 2
#define SQL_CODE_TIMESTAMP 3
/* SQL extended data types */
#define SQL_GRAPHIC -95
#define SQL_VARGRAPHIC -96
#define SQL_LONGVARGRAPHIC -97
#define SQL_BLOB -98
#define SQL_CLOB -99
#define SQL_DBCLOB -350
#define SQL_XML -370
#define SQL_DATALINK -400
#define SQL_USER_DEFINED_TYPE -450
/* C data type to SQL data type mapping */
#define SQL_C_DBCHAR SQL_DBCLOB
#define SQL_C_DECIMAL_IBM SQL_DECIMAL
#define SQL_C_DATALINK SQL_C_CHAR
#define SQL_C_PTR 2463
#define SQL_C_DECIMAL_OLEDB 2514
#define SQL_C_DECIMAL64 SQL_DECFLOAT
#define SQL_C_DECIMAL128 -361
/*
* locator type identifier
*/
#define SQL_BLOB_LOCATOR 31
#define SQL_CLOB_LOCATOR 41
#define SQL_DBCLOB_LOCATOR -351
/*
* C Data Type for the LOB locator types
*/
#define SQL_C_BLOB_LOCATOR SQL_BLOB_LOCATOR
#define SQL_C_CLOB_LOCATOR SQL_CLOB_LOCATOR
#define SQL_C_DBCLOB_LOCATOR SQL_DBCLOB_LOCATOR
/*
* NULL status defines; these are used in SQLColAttributes, SQLDescribeCol,
* to describe the nullability of a column in a table.
*/
#define SQL_NO_NULLS 0
#define SQL_NULLABLE 1
#define SQL_NULLABLE_UNKNOWN 2
/* values of UNNAMED field in descriptor used in SQLColAttribute */
#define SQL_NAMED 0
#define SQL_UNNAMED 1
/* values of ALLOC_TYPE field in descriptor */
#define SQL_DESC_ALLOC_AUTO 1
#define SQL_DESC_ALLOC_USER 2
/* values of USER_DEFINED_TYPE_CODE */
#define SQL_TYPE_BASE 0
#define SQL_TYPE_DISTINCT 1
#define SQL_TYPE_STRUCTURED 2
#define SQL_TYPE_REFERENCE 3
/* Special length values */
#define SQL_NULL_DATA -1
#define SQL_DATA_AT_EXEC -2
#define SQL_NTS -3 /* NTS = Null Terminated String */
#define SQL_NTSL -3L /* NTS = Null Terminated String */
/* SQLColAttributes defines */
#define SQL_COLUMN_SCHEMA_NAME 16
#define SQL_COLUMN_CATALOG_NAME 17
#define SQL_COLUMN_DISTINCT_TYPE 1250
#define SQL_DESC_DISTINCT_TYPE SQL_COLUMN_DISTINCT_TYPE
#define SQL_COLUMN_REFERENCE_TYPE 1251
#define SQL_DESC_REFERENCE_TYPE SQL_COLUMN_REFERENCE_TYPE
#define SQL_DESC_STRUCTURED_TYPE 1252
#define SQL_DESC_USER_TYPE 1253
#define SQL_DESC_BASE_TYPE 1254
#define SQL_DESC_KEY_TYPE 1255
#define SQL_DESC_KEY_MEMBER 1266
/* identifiers of fields in the SQL descriptor */
#define SQL_DESC_COUNT 1001
#define SQL_DESC_TYPE 1002
#define SQL_DESC_LENGTH 1003
#define SQL_DESC_OCTET_LENGTH_PTR 1004
#define SQL_DESC_PRECISION 1005
#define SQL_DESC_SCALE 1006
#define SQL_DESC_DATETIME_INTERVAL_CODE 1007
#define SQL_DESC_NULLABLE 1008
#define SQL_DESC_INDICATOR_PTR 1009
#define SQL_DESC_DATA_PTR 1010
#define SQL_DESC_NAME 1011
#define SQL_DESC_UNNAMED 1012
#define SQL_DESC_OCTET_LENGTH 1013
#define SQL_DESC_ALLOC_TYPE 1099
#define SQL_DESC_USER_DEFINED_TYPE_CODE 1098
/* Defines for SQL_DESC_KEY_TYPE */
#define SQL_KEYTYPE_NONE 0
#define SQL_KEYTYPE_PRIMARYKEY 1
#define SQL_KEYTYPE_UNIQUEINDEX 2
/* SQLColAttribute defines for SQL_COLUMN_UPDATABLE condition */
#define SQL_UPDT_READONLY 0
#define SQL_UPDT_WRITE 1
#define SQL_UPDT_READWRITE_UNKNOWN 2
/*
* SQLColAttribute defines for SQL_COLUMN_SEARCHABLE condition.
*/
#define SQL_PRED_NONE 0
#define SQL_PRED_CHAR 1
#define SQL_PRED_BASIC 2
/* NULL handle defines */
#define SQL_NULL_HENV 0L
#define SQL_NULL_HDBC 0L
#define SQL_NULL_HSTMT 0L
#define SQL_NULL_HDESC 0L
#define SQL_NULL_HANDLE 0L
/* identifiers of fields in the diagnostics area */
#define SQL_DIAG_RETURNCODE 1
#define SQL_DIAG_NUMBER 2
#define SQL_DIAG_ROW_COUNT 3
#define SQL_DIAG_SQLSTATE 4
#define SQL_DIAG_NATIVE 5
#define SQL_DIAG_MESSAGE_TEXT 6
#define SQL_DIAG_DYNAMIC_FUNCTION 7
#define SQL_DIAG_CLASS_ORIGIN 8
#define SQL_DIAG_SUBCLASS_ORIGIN 9
#define SQL_DIAG_CONNECTION_NAME 10
#define SQL_DIAG_SERVER_NAME 11
#define SQL_DIAG_DYNAMIC_FUNCTION_CODE 12
/* dynamic function codes */
#define SQL_DIAG_ALTER_TABLE 4
#define SQL_DIAG_CALL 7
#define SQL_DIAG_CREATE_INDEX (-1)
#define SQL_DIAG_CREATE_TABLE 77
#define SQL_DIAG_CREATE_VIEW 84
#define SQL_DIAG_DELETE_WHERE 19
#define SQL_DIAG_DROP_INDEX (-2)
#define SQL_DIAG_DROP_TABLE 32
#define SQL_DIAG_DROP_VIEW 36
#define SQL_DIAG_DYNAMIC_DELETE_CURSOR 38
#define SQL_DIAG_DYNAMIC_UPDATE_CURSOR 81
#define SQL_DIAG_GRANT 48
#define SQL_DIAG_INSERT 50
#define SQL_DIAG_MERGE 128
#define SQL_DIAG_REVOKE 59
#define SQL_DIAG_SELECT_CURSOR 85
#define SQL_DIAG_UNKNOWN_STATEMENT 0
#define SQL_DIAG_UPDATE_WHERE 82
/*
* IBM specific SQLGetDiagField values.
*/
#define SQL_DIAG_DEFERRED_PREPARE_ERROR 1279
/* SQL_DIAG_ROW_NUMBER values */
#define SQL_ROW_NO_ROW_NUMBER (-1)
#define SQL_ROW_NUMBER_UNKNOWN (-2)
/* SQL_DIAG_COLUMN_NUMBER values */
#define SQL_COLUMN_NO_COLUMN_NUMBER (-1)
#define SQL_COLUMN_NUMBER_UNKNOWN (-2)
/*
* The following are provided to enhance portability and compatibility
* with ODBC
*/
typedef signed char SCHAR;
typedef unsigned char UCHAR;
typedef short int SWORD;
typedef unsigned short USHORT;
typedef signed short SSHORT;
typedef unsigned short int UWORD;
#if defined(DB2NT)
typedef long SDWORD;
typedef unsigned long ULONG;
typedef unsigned long UDWORD;
typedef long SLONG;
#else
typedef sqlint32 SDWORD;
typedef sqluint32 ULONG;
typedef sqluint32 UDWORD;
typedef sqlint32 SLONG;
#endif
typedef double SDOUBLE;
typedef float SFLOAT;
typedef unsigned char SQLDATE;
typedef unsigned char SQLTIME;
typedef unsigned char SQLTIMESTAMP;
typedef unsigned char SQLDECIMAL;
typedef unsigned char SQLNUMERIC;
#if defined(WINDOWS)
typedef long double LDOUBLE;
#else
typedef double LDOUBLE;
#endif
typedef void FAR * PTR;
typedef void FAR * HENV;
typedef void FAR * HDBC;
typedef void FAR * HSTMT;
typedef signed short RETCODE;
/* SQL portable types for C */
typedef UCHAR SQLCHAR;
typedef UCHAR SQLVARCHAR;
typedef SCHAR SQLSCHAR;
typedef SDWORD SQLINTEGER;
typedef SWORD SQLSMALLINT;
typedef SDOUBLE SQLDOUBLE;
typedef SDOUBLE SQLFLOAT;
typedef SFLOAT SQLREAL;
typedef SQLSMALLINT SQLRETURN;
#if (DB2CLI_VER >= 0x0200)
typedef UDWORD SQLUINTEGER;
typedef UWORD SQLUSMALLINT;
#else
typedef SQLINTEGER SQLUINTEGER;
typedef SQLSMALLINT SQLUSMALLINT;
#endif
/* 64-bit Length Defines */
#ifdef ODBC64
typedef sqlint64 SQLLEN;
typedef sqluint64 SQLULEN;
typedef sqluint64 SQLSETPOSIROW;
#else
#define SQLLEN SQLINTEGER
#define SQLULEN SQLUINTEGER
#define SQLSETPOSIROW SQLUSMALLINT
#endif
typedef PTR SQLPOINTER;
/*
* Double Byte Character Set support
*/
/*
* Do not support SQL_WCHART_CONVERT in UNICODE
*/
#ifdef UNICODE
#undef SQL_WCHART_CONVERT
#endif
#ifdef SQL_WCHART_CONVERT
typedef wchar_t SQLDBCHAR;
#else
typedef unsigned short SQLDBCHAR;
#endif
#ifdef DB2WIN
typedef wchar_t SQLWCHAR;
#else
typedef unsigned short SQLWCHAR;
#endif
#ifdef DB2WIN
typedef SQLINTEGER SQLHANDLE;
typedef HENV SQLHENV;
typedef HDBC SQLHDBC;
typedef HSTMT SQLHSTMT;
typedef HWND SQLHWND;
#else
#if ((defined DB2NT && defined _WIN64) || defined ODBC64)
typedef void * SQLHANDLE;
typedef SQLHANDLE SQLHENV;
typedef SQLHANDLE SQLHDBC;
typedef SQLHANDLE SQLHSTMT;
#else
#ifndef __SQLTYPES
typedef SQLINTEGER SQLHANDLE;
typedef SQLINTEGER SQLHENV;
typedef SQLINTEGER SQLHDBC;
typedef SQLINTEGER SQLHSTMT;
#endif
#endif
#if defined (DB2NT)
typedef HWND SQLHWND;
#else
typedef SQLPOINTER SQLHWND;
#endif
#endif
typedef SQLHANDLE SQLHDESC;
#ifndef __SQLTYPES
/*
* SQL_NO_NATIVE_BIGINT_SUPPORT and SQL_BIGINT_TYPE are defined in sqlsystm.h
*
*/
#if defined(SQL_NO_NATIVE_BIGINT_SUPPORT)
typedef struct SQLBIGINT
{
SQLUINTEGER dwLowWord;
SQLINTEGER dwHighWord;
} SQLBIGINT;
typedef struct SQLUBIGINT
{
SQLUINTEGER dwLowWord;
SQLUINTEGER dwHighWord;
} SQLUBIGINT;
#elif defined(SQL_BIGINT_TYPE)
typedef SQL_BIGINT_TYPE SQLBIGINT;
typedef SQL_BIGUINT_TYPE SQLUBIGINT;
#endif
typedef struct DATE_STRUCT
{
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
} DATE_STRUCT;
typedef DATE_STRUCT SQL_DATE_STRUCT;
typedef struct TIME_STRUCT
{
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
} TIME_STRUCT;
typedef TIME_STRUCT SQL_TIME_STRUCT;
typedef struct TIMESTAMP_STRUCT
{
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
SQLUINTEGER fraction; /* fraction of a second */
} TIMESTAMP_STRUCT;
typedef TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT;
typedef enum
{
SQL_IS_YEAR = 1,
SQL_IS_MONTH = 2,
SQL_IS_DAY = 3,
SQL_IS_HOUR = 4,
SQL_IS_MINUTE = 5,
SQL_IS_SECOND = 6,
SQL_IS_YEAR_TO_MONTH = 7,
SQL_IS_DAY_TO_HOUR = 8,
SQL_IS_DAY_TO_MINUTE = 9,
SQL_IS_DAY_TO_SECOND = 10,
SQL_IS_HOUR_TO_MINUTE = 11,
SQL_IS_HOUR_TO_SECOND = 12,
SQL_IS_MINUTE_TO_SECOND = 13
} SQLINTERVAL;
typedef struct tagSQL_YEAR_MONTH
{
SQLUINTEGER year;
SQLUINTEGER month;
} SQL_YEAR_MONTH_STRUCT;
typedef struct tagSQL_DAY_SECOND
{
SQLUINTEGER day;
SQLUINTEGER hour;
SQLUINTEGER minute;
SQLUINTEGER second;
SQLUINTEGER fraction;
} SQL_DAY_SECOND_STRUCT;
typedef struct tagSQL_INTERVAL_STRUCT
{
SQLINTERVAL interval_type;
SQLSMALLINT interval_sign;
union {
SQL_YEAR_MONTH_STRUCT year_month;
SQL_DAY_SECOND_STRUCT day_second;
} intval;
} SQL_INTERVAL_STRUCT;
/* Maximum precision (in base 10) of an SQL_C_NUMERIC value */
#define SQL_MAX_C_NUMERIC_PRECISION 38
/* internal representation of numeric data type */
#define SQL_MAX_NUMERIC_LEN 16
typedef struct tagSQL_NUMERIC_STRUCT
{
SQLCHAR precision;
SQLSCHAR scale;
SQLCHAR sign; /* 1 if positive, 0 if negative */
SQLCHAR val[SQL_MAX_NUMERIC_LEN];
} SQL_NUMERIC_STRUCT;
#endif
#define SQL_DECIMAL64_LEN 8
#define SQL_DECIMAL128_LEN 16
typedef struct tagSQLDECIMAL64 {
union {
SQLDOUBLE dummy; /* Dummy member for alignment purposes */
SQLCHAR dec64[SQL_DECIMAL64_LEN];
} udec64;
} SQLDECIMAL64;
typedef struct tagSQLDECIMAL128 {
union {
SQLDOUBLE dummy; /* Dummy member for alignment purposes */
SQLCHAR dec128[SQL_DECIMAL128_LEN];
} udec128;
} SQLDECIMAL128;
/* Core Function Prototypes */
SQLRETURN SQL_API_FN SQLAllocConnect (SQLHENV henv,
SQLHDBC FAR *phdbc);
SQLRETURN SQL_API_FN SQLAllocEnv (SQLHENV FAR *phenv);
SQLRETURN SQL_API_FN SQLAllocStmt (SQLHDBC hdbc,
SQLHSTMT FAR *phstmt);
SQLRETURN SQL_API_FN SQLAllocHandle( SQLSMALLINT fHandleType,
SQLHANDLE hInput,
SQLHANDLE * phOutput );
SQLRETURN SQL_API_FN SQLBindCol (SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLSMALLINT fCType,
SQLPOINTER rgbValue,
SQLLEN cbValueMax,
SQLLEN FAR *pcbValue);
SQLRETURN SQL_API_FN SQLCancel (SQLHSTMT hstmt);
#ifdef ODBC64
SQLRETURN SQL_API_FN SQLColAttribute (SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLUSMALLINT fDescType,
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT FAR *pcbDesc,
SQLLEN *pfDesc);
#else
SQLRETURN SQL_API_FN SQLColAttribute (SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLUSMALLINT fDescType,
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT FAR *pcbDesc,
SQLPOINTER pfDesc);
#endif
SQLRETURN SQL_API_FN SQLConnect (SQLHDBC hdbc,
SQLCHAR FAR *szDSN,
SQLSMALLINT cbDSN,
SQLCHAR FAR *szUID,
SQLSMALLINT cbUID,
SQLCHAR FAR *szAuthStr,
SQLSMALLINT cbAuthStr);
SQLRETURN SQL_API_FN SQLDescribeCol (SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLCHAR FAR *szColName,
SQLSMALLINT cbColNameMax,
SQLSMALLINT FAR *pcbColName,
SQLSMALLINT FAR *pfSqlType,
SQLULEN FAR *pcbColDef,
SQLSMALLINT FAR *pibScale,
SQLSMALLINT FAR *pfNullable);
SQLRETURN SQL_API_FN SQLDisconnect (SQLHDBC hdbc);
SQLRETURN SQL_API_FN SQLError (SQLHENV henv,
SQLHDBC hdbc,
SQLHSTMT hstmt,
SQLCHAR FAR *szSqlState,
SQLINTEGER FAR *pfNativeError,
SQLCHAR FAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT FAR *pcbErrorMsg);
SQLRETURN SQL_API_FN SQLExecDirect (SQLHSTMT hstmt,
SQLCHAR FAR *szSqlStr,
SQLINTEGER cbSqlStr);
SQLRETURN SQL_API_FN SQLExecute (SQLHSTMT hstmt);
SQLRETURN SQL_API_FN SQLFetch (SQLHSTMT hstmt);
SQLRETURN SQL_API_FN SQLFreeConnect (SQLHDBC hdbc);
SQLRETURN SQL_API_FN SQLFreeEnv (SQLHENV henv);
SQLRETURN SQL_API_FN SQLFreeStmt (SQLHSTMT hstmt,
SQLUSMALLINT fOption);
SQLRETURN SQL_API_FN SQLCloseCursor( SQLHSTMT hStmt );
SQLRETURN SQL_API_FN SQLGetCursorName (SQLHSTMT hstmt,
SQLCHAR FAR *szCursor,
SQLSMALLINT cbCursorMax,
SQLSMALLINT FAR *pcbCursor);
SQLRETURN SQL_API_FN SQLGetData (SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLSMALLINT fCType,
SQLPOINTER rgbValue,
SQLLEN cbValueMax,
SQLLEN FAR *pcbValue);
SQLRETURN SQL_API_FN SQLNumResultCols (SQLHSTMT hstmt,
SQLSMALLINT FAR *pccol);
SQLRETURN SQL_API_FN SQLPrepare (SQLHSTMT hstmt,
SQLCHAR FAR *szSqlStr,
SQLINTEGER cbSqlStr);
SQLRETURN SQL_API_FN SQLRowCount (SQLHSTMT hstmt,
SQLLEN FAR *pcrow);
SQLRETURN SQL_API_FN SQLSetCursorName (SQLHSTMT hstmt,
SQLCHAR FAR *szCursor,
SQLSMALLINT cbCursor);
SQLRETURN SQL_API_FN SQLSetParam (SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT fCType,
SQLSMALLINT fSqlType,
SQLULEN cbParamDef,
SQLSMALLINT ibScale,
SQLPOINTER rgbValue,
SQLLEN FAR *pcbValue);
SQLRETURN SQL_API_FN SQLTransact (SQLHENV henv,
SQLHDBC hdbc,
SQLUSMALLINT fType);
SQLRETURN SQL_API_FN SQLEndTran( SQLSMALLINT fHandleType,
SQLHANDLE hHandle,
SQLSMALLINT fType );
SQLRETURN SQL_API_FN SQLFreeHandle( SQLSMALLINT fHandleType,
SQLHANDLE hHandle );
SQLRETURN SQL_API_FN SQLGetDiagRec( SQLSMALLINT fHandleType,
SQLHANDLE hHandle,
SQLSMALLINT iRecNumber,
SQLCHAR * pszSqlState,
SQLINTEGER * pfNativeError,
SQLCHAR * pszErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT * pcbErrorMsg );
SQLRETURN SQL_API_FN SQLGetDiagField( SQLSMALLINT fHandleType,
SQLHANDLE hHandle,
SQLSMALLINT iRecNumber,
SQLSMALLINT fDiagIdentifier,
SQLPOINTER pDiagInfo,
SQLSMALLINT cbDiagInfoMax,
SQLSMALLINT * pcbDiagInfo );
SQLRETURN SQL_API_FN SQLCopyDesc( SQLHDESC hDescSource,
SQLHDESC hDescTarget );
SQLRETURN SQL_API_FN SQLGetDescField( SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT FieldIdentifier,
SQLPOINTER Value,
SQLINTEGER BufferLength,
SQLINTEGER *StringLength);
SQLRETURN SQL_API_FN SQLGetDescRec( SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLCHAR *Name,
SQLSMALLINT BufferLength,
SQLSMALLINT *StringLength,
SQLSMALLINT *Type,
SQLSMALLINT *SubType,
SQLLEN *Length,
SQLSMALLINT *Precision,
SQLSMALLINT *Scale,
SQLSMALLINT *Nullable);
SQLRETURN SQL_API_FN SQLSetDescField( SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT FieldIdentifier,
SQLPOINTER Value,
SQLINTEGER BufferLength);
SQLRETURN SQL_API_FN SQLSetDescRec( SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT Type,
SQLSMALLINT SubType,
SQLLEN Length,
SQLSMALLINT Precision,
SQLSMALLINT Scale,
SQLPOINTER Data,
SQLLEN *StringLength,
SQLLEN *Indicator);
#ifdef __cplusplus
}
#endif
/*
* Include ODBC header files for
* functions that are not specified in the X/Open Call Level Interface.
* This is included with permission from Microsoft.
* Do not modify (i.e. must not add, remove, rearrange) any part of the
* contents of sqlext.h
* Note: SQLDrivers is not supported by DB2 CLI.
*/
#ifndef __SQL
#define __SQL
#define ODBCVER 0x0351
#endif
#if !defined(WINDOWS) && !defined(WIN32) && !defined(SQLWINT)
typedef SQLWCHAR * LPWSTR;
typedef sqluint32 DWORD;
#endif
#include "sqlext.h"
#ifdef DB2_WINSOCKAPI_
#undef _WINSOCKAPI_
#undef DB2_WINSOCKAPI_
#endif
#endif /* SQL_H_SQLCLI */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,115 @@
/******************************************************************************
*
* Source File Name = SQLSYSTM.H
*
*
* (C) COPYRIGHT International Business Machines Corp. 1993
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*
* Function = Include File defining:
* Operating System Specific Information
*
* Operating System = NT 3.5
*
*****************************************************************************/
#ifndef SQL_H_SQLSYSTM
#define SQL_H_SQLSYSTM /* Permit duplicate Includes */
#if !defined DB2NT
#define DB2NT 1
#endif
#if !defined SQL_API_RC
#define SQL_API_RC int
#define SQL_STRUCTURE struct
#define SQL_POINTER
#define SQL_API_FN __stdcall
#define SQL_API_INTR __stdcall
#define PSQL_API_FN __stdcall *
#endif
/******************************************************************************
**
** The SQLOLDCHAR macro may be used to maintain compatibility between
** version 1 applications and version 2 header files. In version 1, many
** strings were declared as 'unsigned char'. In keeping with the spirit
** of ANSI C, all character data, structure members and function
** parameters with string semantics have been changed to 'char' in version 2.
** This change may produce type conflicts with some compilers. Adding
** -DSQLOLDCHAR to the compile command will cause the changed items to
** revert to their version 1 types. Note that this should be used for
** compatibility purposes only. New code should be written using plain
** 'char' where indicated in the documentation.
******************************************************************************/
#undef _SQLOLDCHAR
#if defined SQLOLDCHAR
#define _SQLOLDCHAR unsigned char
#else
#define _SQLOLDCHAR char
#endif
/******************************************************************************
**
** Define fixed size integer types.
**
******************************************************************************/
typedef char sqlint8;
typedef unsigned char sqluint8;
typedef short sqlint16;
typedef unsigned short sqluint16;
#if defined DB2_FORCE_INT32_TYPES_TO_INT
typedef int sqlint32;
typedef unsigned int sqluint32;
#else
typedef long sqlint32;
typedef unsigned long sqluint32;
#endif
#if !defined SQL_BIGINT_TYPE
#if defined _MSC_VER || defined __BORLANDC__
#define SQL_BIGINT_TYPE __int64
#define DB2_CONSTRUCT_BIGINT_CONSTANT(db2BigIntConstantValue) db2BigIntConstantValue##i64
#else
#define DB2_CONSTRUCT_BIGINT_CONSTANT(db2BigIntConstantValue) db2BigIntConstantValue##LL
#define SQL_BIGINT_TYPE long long
#endif
#endif
#if !defined SQL_BIGUINT_TYPE
#if defined _MSC_VER || defined __BORLANDC__
#define SQL_BIGUINT_TYPE unsigned __int64
#else
#define SQL_BIGUINT_TYPE unsigned long long
#endif
#endif
typedef SQL_BIGINT_TYPE sqlint64;
typedef SQL_BIGUINT_TYPE sqluint64;
/******************************************************************************
**
** The sqlintptr and sqluintptr are defined as integer types large enough
** to contain pointer values on this platform.
**
******************************************************************************/
#if defined _WIN64
#define db2Is64bit
typedef sqlint64 sqlintptr;
typedef sqluint64 sqluintptr;
#else
typedef sqlint32 sqlintptr;
typedef sqluint32 sqluintptr;
#endif
#endif /* SQL_H_SQLSYSTM */

View File

@ -0,0 +1,991 @@
/*!
* interface for the IibClient class.
*
* Copyright (c) 2005 by <your name/ organization here>
*/
#if !defined(__IBAPI_H__)
#define __IBAPI_H__
#include "SQLAPI.h"
#ifdef __SUNPRO_CC
#include <inttypes.h>
#define _INTPTR_T_DEFINED
#endif
#include <ibase.h>
#ifdef SA_64BIT
#define ISC_NULL_HANDLE 0
#else
#define ISC_NULL_HANDLE NULL
#endif
extern long g_nIB_DLLVersionLoaded;
extern void AddIBSupport(const SAConnection *pCon);
extern void ReleaseIBSupport();
typedef ISC_STATUS (ISC_EXPORT *isc_attach_database_t) (ISC_STATUS ISC_FAR *,
short,
char ISC_FAR *,
isc_db_handle ISC_FAR *,
short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_array_gen_sdl_t) (ISC_STATUS ISC_FAR *,
ISC_ARRAY_DESC ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *,
short ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_array_get_slice_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
ISC_QUAD ISC_FAR *,
ISC_ARRAY_DESC ISC_FAR *,
void ISC_FAR *,
ISC_LONG ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_array_lookup_bounds_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
char ISC_FAR *,
char ISC_FAR *,
ISC_ARRAY_DESC ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_array_lookup_desc_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
char ISC_FAR *,
char ISC_FAR *,
ISC_ARRAY_DESC ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_array_set_desc_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *,
char ISC_FAR *,
short ISC_FAR *,
short ISC_FAR *,
short ISC_FAR *,
ISC_ARRAY_DESC ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_array_put_slice_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
ISC_QUAD ISC_FAR *,
ISC_ARRAY_DESC ISC_FAR *,
void ISC_FAR *,
ISC_LONG ISC_FAR *);
typedef void (ISC_EXPORT *isc_blob_default_desc_t) (ISC_BLOB_DESC ISC_FAR *,
unsigned char ISC_FAR *,
unsigned char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_blob_gen_bpb_t) (ISC_STATUS ISC_FAR *,
ISC_BLOB_DESC ISC_FAR *,
ISC_BLOB_DESC ISC_FAR *,
unsigned short,
unsigned char ISC_FAR *,
unsigned short ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_blob_info_t) (ISC_STATUS ISC_FAR *,
isc_blob_handle ISC_FAR *,
short,
char ISC_FAR *,
short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_blob_lookup_desc_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
unsigned char ISC_FAR *,
unsigned char ISC_FAR *,
ISC_BLOB_DESC ISC_FAR *,
unsigned char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_blob_set_desc_t) (ISC_STATUS ISC_FAR *,
unsigned char ISC_FAR *,
unsigned char ISC_FAR *,
short,
short,
short,
ISC_BLOB_DESC ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_cancel_blob_t) (ISC_STATUS ISC_FAR *,
isc_blob_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_cancel_events_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
ISC_LONG ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_close_blob_t) (ISC_STATUS ISC_FAR *,
isc_blob_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_commit_retaining_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_commit_transaction_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_create_blob_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_blob_handle ISC_FAR *,
ISC_QUAD ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_create_blob2_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_blob_handle ISC_FAR *,
ISC_QUAD ISC_FAR *,
short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_create_database_t) (ISC_STATUS ISC_FAR *,
short,
char ISC_FAR *,
isc_db_handle ISC_FAR *,
short,
char ISC_FAR *,
short);
typedef ISC_STATUS (ISC_EXPORT *isc_database_info_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
short,
char ISC_FAR *,
short,
char ISC_FAR *);
typedef void (ISC_EXPORT *isc_decode_date_t) (ISC_QUAD ISC_FAR *,
void ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_detach_database_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_drop_database_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_allocate_statement_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_stmt_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_alloc_statement2_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_stmt_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_describe_t) (ISC_STATUS ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_describe_bind_t) (ISC_STATUS ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_exec_immed2_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_execute_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_execute2_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_execute_immediate_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_fetch_t) (ISC_STATUS ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_finish_t) (isc_db_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_free_statement_t) (ISC_STATUS ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_insert_t) (ISC_STATUS ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_prepare_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_set_cursor_name_t) (ISC_STATUS ISC_FAR *,
isc_stmt_handle ISC_FAR *,
char ISC_FAR *,
unsigned short);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_sql_info_t) (ISC_STATUS ISC_FAR *,
isc_stmt_handle ISC_FAR *,
short,
char ISC_FAR *,
short,
char ISC_FAR *);
typedef void (ISC_EXPORT *isc_encode_date_t) (void ISC_FAR *,
ISC_QUAD ISC_FAR *);
typedef ISC_LONG (ISC_EXPORT_VARARG *isc_event_block_t) (char ISC_FAR * ISC_FAR *,
char ISC_FAR * ISC_FAR *,
unsigned short, ...);
typedef void (ISC_EXPORT *isc_event_counts_t) (ISC_ULONG ISC_FAR *,
short,
char ISC_FAR *,
char ISC_FAR *);
typedef void (ISC_EXPORT_VARARG *isc_expand_dpb_t) (char ISC_FAR * ISC_FAR *,
short ISC_FAR *, ...);
typedef int (ISC_EXPORT *isc_modify_dpb_t) (char ISC_FAR * ISC_FAR *,
short ISC_FAR *, unsigned short,
char ISC_FAR *, short );
typedef ISC_LONG (ISC_EXPORT *isc_free_t) (char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_get_segment_t) (ISC_STATUS ISC_FAR *,
isc_blob_handle ISC_FAR *,
unsigned short ISC_FAR *,
unsigned short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_get_slice_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
ISC_QUAD ISC_FAR *,
short,
char ISC_FAR *,
short,
ISC_LONG ISC_FAR *,
ISC_LONG,
void ISC_FAR *,
ISC_LONG ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_interprete_t) (char ISC_FAR *,
ISC_STATUS ISC_FAR * ISC_FAR *);
/* Firebird safe string verison of isc_interprete */
typedef ISC_STATUS (ISC_EXPORT *fb_interpret_t)(char ISC_FAR *,
unsigned int,
ISC_STATUS ISC_FAR * ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_open_blob_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_blob_handle ISC_FAR *,
ISC_QUAD ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_open_blob2_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_blob_handle ISC_FAR *,
ISC_QUAD ISC_FAR *,
short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_prepare_transaction2_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
short,
char ISC_FAR *);
typedef void (ISC_EXPORT *isc_print_sqlerror_t) (short,
ISC_STATUS ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_print_status_t) (ISC_STATUS ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_put_segment_t) (ISC_STATUS ISC_FAR *,
isc_blob_handle ISC_FAR *,
unsigned short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_put_slice_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
ISC_QUAD ISC_FAR *,
short,
char ISC_FAR *,
short,
ISC_LONG ISC_FAR *,
ISC_LONG,
void ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_que_events_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
ISC_LONG ISC_FAR *,
short,
char ISC_FAR *,
isc_callback,
void ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_rollback_transaction_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_start_multiple_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
short,
void ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT_VARARG *isc_start_transaction_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
short, ...);
typedef ISC_LONG (ISC_EXPORT *isc_sqlcode_t) (ISC_STATUS ISC_FAR *);
typedef void (ISC_EXPORT *isc_sql_interprete_t) (short,
char ISC_FAR *,
short);
typedef ISC_STATUS (ISC_EXPORT *isc_transaction_info_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
short,
char ISC_FAR *,
short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_transact_request_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
char ISC_FAR *);
typedef ISC_LONG (ISC_EXPORT *isc_vax_integer_t) (char ISC_FAR *,
short);
typedef int (ISC_EXPORT *isc_add_user_t) (ISC_STATUS ISC_FAR *, USER_SEC_DATA *);
typedef int (ISC_EXPORT *isc_delete_user_t) (ISC_STATUS ISC_FAR *, USER_SEC_DATA *);
typedef int (ISC_EXPORT *isc_modify_user_t) (ISC_STATUS ISC_FAR *, USER_SEC_DATA *);
typedef ISC_STATUS (ISC_EXPORT *isc_compile_request_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_req_handle ISC_FAR *,
short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_compile_request2_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_req_handle ISC_FAR *,
short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_ddl_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_prepare_transaction_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_receive_t) (ISC_STATUS ISC_FAR *,
isc_req_handle ISC_FAR *,
short,
short,
void ISC_FAR *,
short);
typedef ISC_STATUS (ISC_EXPORT *isc_reconnect_transaction_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_release_request_t) (ISC_STATUS ISC_FAR *,
isc_req_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_request_info_t) (ISC_STATUS ISC_FAR *,
isc_req_handle ISC_FAR *,
short,
short,
char ISC_FAR *,
short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_seek_blob_t) (ISC_STATUS ISC_FAR *,
isc_blob_handle ISC_FAR *,
short,
ISC_LONG,
ISC_LONG ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_send_t) (ISC_STATUS ISC_FAR *,
isc_req_handle ISC_FAR *,
short,
short,
void ISC_FAR *,
short);
typedef ISC_STATUS (ISC_EXPORT *isc_start_and_send_t) (ISC_STATUS ISC_FAR *,
isc_req_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
short,
short,
void ISC_FAR *,
short);
typedef ISC_STATUS (ISC_EXPORT *isc_start_request_t) (ISC_STATUS ISC_FAR *,
isc_req_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
short);
typedef ISC_STATUS (ISC_EXPORT *isc_unwind_request_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
short);
typedef ISC_STATUS (ISC_EXPORT *isc_wait_for_event_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
short,
char ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_close_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_declare_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_execute_immediate_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_execute_m_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_execute2_m_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_execute_immediate_m_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_exec_immed3_m_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_fetch_m_t) (ISC_STATUS ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_insert_m_t) (ISC_STATUS ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_prepare_m_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_stmt_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
unsigned short,
char ISC_FAR *,
unsigned short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_dsql_release_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_close_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_declare_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_describe_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_describe_bind_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_execute_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_execute2_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_execute_immed_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_fetch_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_open_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_open2_t) (ISC_STATUS ISC_FAR *,
isc_tr_handle ISC_FAR *,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_insert_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_prepare_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
char ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
XSQLDA ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_embed_dsql_release_t) (ISC_STATUS ISC_FAR *,
char ISC_FAR *);
typedef BSTREAM ISC_FAR * (ISC_EXPORT *BLOB_open_t) (isc_blob_handle,
char ISC_FAR *,
int);
typedef int (ISC_EXPORT *BLOB_put_t) (char,
BSTREAM ISC_FAR *);
typedef int (ISC_EXPORT *BLOB_close_t) (BSTREAM ISC_FAR *);
typedef int (ISC_EXPORT *BLOB_get_t) (BSTREAM ISC_FAR *);
typedef int (ISC_EXPORT *BLOB_display_t) (ISC_QUAD ISC_FAR *,
isc_db_handle,
isc_tr_handle,
char ISC_FAR *);
typedef int (ISC_EXPORT *BLOB_dump_t) (ISC_QUAD ISC_FAR *,
isc_db_handle,
isc_tr_handle,
char ISC_FAR *);
typedef int (ISC_EXPORT *BLOB_edit_t) (ISC_QUAD ISC_FAR *,
isc_db_handle,
isc_tr_handle,
char ISC_FAR *);
typedef int (ISC_EXPORT *BLOB_load_t) (ISC_QUAD ISC_FAR *,
isc_db_handle,
isc_tr_handle,
char ISC_FAR *);
typedef int (ISC_EXPORT *BLOB_text_dump_t) (ISC_QUAD ISC_FAR *,
isc_db_handle,
isc_tr_handle,
char ISC_FAR *);
typedef int (ISC_EXPORT *BLOB_text_load_t) (ISC_QUAD ISC_FAR *,
isc_db_handle,
isc_tr_handle,
char ISC_FAR *);
typedef BSTREAM ISC_FAR * (ISC_EXPORT *Bopen_t) (ISC_QUAD ISC_FAR *,
isc_db_handle,
isc_tr_handle,
char ISC_FAR *);
typedef BSTREAM ISC_FAR * (ISC_EXPORT *Bopen2_t) (ISC_QUAD ISC_FAR *,
isc_db_handle,
isc_tr_handle,
char ISC_FAR *,
unsigned short);
typedef ISC_LONG (ISC_EXPORT *isc_ftof_t) (char ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short);
typedef ISC_STATUS (ISC_EXPORT *isc_print_blr_t) (char ISC_FAR *,
isc_callback,
void ISC_FAR *,
short);
typedef void (ISC_EXPORT *isc_set_debug_t) (int);
typedef void (ISC_EXPORT *isc_qtoq_t) (ISC_QUAD ISC_FAR *,
ISC_QUAD ISC_FAR *);
typedef void (ISC_EXPORT *isc_vtof_t) (char ISC_FAR *,
char ISC_FAR *,
unsigned short);
typedef void (ISC_EXPORT *isc_vtov_t) (char ISC_FAR *,
char ISC_FAR *,
short);
typedef int (ISC_EXPORT *isc_version_t) (isc_db_handle ISC_FAR *,
isc_callback,
void ISC_FAR *);
typedef ISC_LONG (ISC_EXPORT *isc_reset_fpe_t) (unsigned short);
typedef ISC_STATUS (ISC_EXPORT *isc_attach_service_t) (ISC_STATUS ISC_FAR *,
unsigned short,
char ISC_FAR *,
isc_svc_handle ISC_FAR *,
unsigned short,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_detach_service_t) (ISC_STATUS ISC_FAR *,
isc_svc_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_query_service_t) (ISC_STATUS ISC_FAR *,
isc_svc_handle ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
char ISC_FAR *,
unsigned short,
char ISC_FAR *);
/* InterBase API
typedef ISC_STATUS (ISC_EXPORT *isc_compile_map_t) (ISC_STATUS ISC_FAR *,
isc_form_handle ISC_FAR *,
isc_req_handle ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_compile_menu_t) (ISC_STATUS ISC_FAR *,
isc_form_handle ISC_FAR *,
isc_req_handle ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_compile_sub_map_t) (ISC_STATUS ISC_FAR *,
isc_win_handle ISC_FAR *,
isc_req_handle ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_create_window_t) (ISC_STATUS ISC_FAR *,
isc_win_handle ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *,
short ISC_FAR *,
short ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_delete_window_t) (ISC_STATUS ISC_FAR *,
isc_win_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_drive_form_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_win_handle ISC_FAR *,
isc_req_handle ISC_FAR *,
unsigned char ISC_FAR *,
unsigned char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_drive_menu_t) (ISC_STATUS ISC_FAR *,
isc_win_handle ISC_FAR *,
isc_req_handle ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *,
short ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *,
ISC_LONG ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_form_delete_t) (ISC_STATUS ISC_FAR *,
isc_form_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_form_fetch_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_req_handle ISC_FAR *,
unsigned char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_form_insert_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_req_handle ISC_FAR *,
unsigned char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_get_entree_t) (ISC_STATUS ISC_FAR *,
isc_req_handle ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *,
ISC_LONG ISC_FAR *,
short ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_initialize_menu_t) (ISC_STATUS ISC_FAR *,
isc_req_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_menu_t) (ISC_STATUS ISC_FAR *,
isc_win_handle ISC_FAR *,
isc_req_handle ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_load_form_t) (ISC_STATUS ISC_FAR *,
isc_db_handle ISC_FAR *,
isc_tr_handle ISC_FAR *,
isc_form_handle ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_pop_window_t) (ISC_STATUS ISC_FAR *,
isc_win_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_put_entree_t) (ISC_STATUS ISC_FAR *,
isc_req_handle ISC_FAR *,
short ISC_FAR *,
char ISC_FAR *,
ISC_LONG ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_reset_form_t) (ISC_STATUS ISC_FAR *,
isc_req_handle ISC_FAR *);
typedef ISC_STATUS (ISC_EXPORT *isc_suspend_window_t) (ISC_STATUS ISC_FAR *,
isc_win_handle ISC_FAR *);
*/
// API declarations
class SQLAPI_API ibAPI : public saAPI
{
public:
ibAPI();
isc_add_user_t isc_add_user;
isc_array_gen_sdl_t isc_array_gen_sdl;
isc_array_get_slice_t isc_array_get_slice;
isc_array_lookup_bounds_t isc_array_lookup_bounds;
isc_array_lookup_desc_t isc_array_lookup_desc;
isc_array_put_slice_t isc_array_put_slice;
isc_array_set_desc_t isc_array_set_desc;
isc_attach_database_t isc_attach_database;
isc_blob_default_desc_t isc_blob_default_desc;
isc_blob_gen_bpb_t isc_blob_gen_bpb;
isc_blob_info_t isc_blob_info;
isc_blob_lookup_desc_t isc_blob_lookup_desc;
isc_blob_set_desc_t isc_blob_set_desc;
isc_cancel_blob_t isc_cancel_blob;
isc_cancel_events_t isc_cancel_events;
isc_close_blob_t isc_close_blob;
isc_commit_retaining_t isc_commit_retaining;
isc_commit_transaction_t isc_commit_transaction;
isc_create_blob_t isc_create_blob;
isc_create_blob2_t isc_create_blob2;
isc_create_database_t isc_create_database;
isc_database_info_t isc_database_info;
isc_decode_date_t isc_decode_date;
isc_detach_database_t isc_detach_database;
isc_drop_database_t isc_drop_database;
isc_dsql_allocate_statement_t isc_dsql_allocate_statement;
isc_dsql_alloc_statement2_t isc_dsql_alloc_statement2;
isc_dsql_describe_t isc_dsql_describe;
isc_dsql_describe_bind_t isc_dsql_describe_bind;
isc_dsql_exec_immed2_t isc_dsql_exec_immed2;
isc_dsql_execute_t isc_dsql_execute;
isc_dsql_execute2_t isc_dsql_execute2;
isc_dsql_execute_immediate_t isc_dsql_execute_immediate;
isc_dsql_fetch_t isc_dsql_fetch;
isc_dsql_finish_t isc_dsql_finish;
isc_dsql_free_statement_t isc_dsql_free_statement;
isc_dsql_insert_t isc_dsql_insert;
isc_dsql_prepare_t isc_dsql_prepare;
isc_dsql_set_cursor_name_t isc_dsql_set_cursor_name;
isc_dsql_sql_info_t isc_dsql_sql_info;
isc_encode_date_t isc_encode_date;
isc_event_block_t isc_event_block;
isc_event_counts_t isc_event_counts;
isc_expand_dpb_t isc_expand_dpb;
isc_modify_dpb_t isc_modify_dpb;
isc_free_t isc_free;
isc_get_segment_t isc_get_segment;
isc_get_slice_t isc_get_slice;
isc_interprete_t isc_interprete;
isc_open_blob_t isc_open_blob;
isc_open_blob2_t isc_open_blob2;
isc_prepare_transaction2_t isc_prepare_transaction2;
isc_print_sqlerror_t isc_print_sqlerror;
isc_print_status_t isc_print_status;
isc_put_segment_t isc_put_segment;
isc_put_slice_t isc_put_slice;
isc_que_events_t isc_que_events;
isc_rollback_transaction_t isc_rollback_transaction;
isc_start_multiple_t isc_start_multiple;
isc_start_transaction_t isc_start_transaction;
isc_sqlcode_t isc_sqlcode;
isc_sql_interprete_t isc_sql_interprete;
isc_transaction_info_t isc_transaction_info;
isc_transact_request_t isc_transact_request;
isc_vax_integer_t isc_vax_integer;
isc_delete_user_t isc_delete_user;
isc_modify_user_t isc_modify_user;
isc_compile_request_t isc_compile_request;
isc_compile_request2_t isc_compile_request2;
isc_ddl_t isc_ddl;
isc_prepare_transaction_t isc_prepare_transaction;
isc_receive_t isc_receive;
isc_reconnect_transaction_t isc_reconnect_transaction;
isc_release_request_t isc_release_request;
isc_request_info_t isc_request_info;
isc_seek_blob_t isc_seek_blob;
isc_send_t isc_send;
isc_start_and_send_t isc_start_and_send;
isc_start_request_t isc_start_request;
isc_unwind_request_t isc_unwind_request;
isc_wait_for_event_t isc_wait_for_event;
isc_close_t isc_close;
isc_declare_t isc_declare;
isc_execute_immediate_t isc_execute_immediate;
isc_dsql_execute_m_t isc_dsql_execute_m;
isc_dsql_execute2_m_t isc_dsql_execute2_m;
isc_dsql_execute_immediate_m_t isc_dsql_execute_immediate_m;
isc_dsql_exec_immed3_m_t isc_dsql_exec_immed3_m;
isc_dsql_fetch_m_t isc_dsql_fetch_m;
isc_dsql_insert_m_t isc_dsql_insert_m;
isc_dsql_prepare_m_t isc_dsql_prepare_m;
isc_dsql_release_t isc_dsql_release;
isc_embed_dsql_close_t isc_embed_dsql_close;
isc_embed_dsql_declare_t isc_embed_dsql_declare;
isc_embed_dsql_describe_t isc_embed_dsql_describe;
isc_embed_dsql_describe_bind_t isc_embed_dsql_describe_bind;
isc_embed_dsql_execute_t isc_embed_dsql_execute;
isc_embed_dsql_execute2_t isc_embed_dsql_execute2;
isc_embed_dsql_execute_immed_t isc_embed_dsql_execute_immed;
isc_embed_dsql_fetch_t isc_embed_dsql_fetch;
isc_embed_dsql_open_t isc_embed_dsql_open;
isc_embed_dsql_open2_t isc_embed_dsql_open2;
isc_embed_dsql_insert_t isc_embed_dsql_insert;
isc_embed_dsql_prepare_t isc_embed_dsql_prepare;
isc_embed_dsql_release_t isc_embed_dsql_release;
isc_ftof_t isc_ftof;
isc_print_blr_t isc_print_blr;
isc_set_debug_t isc_set_debug;
isc_qtoq_t isc_qtoq;
isc_vtof_t isc_vtof;
isc_vtov_t isc_vtov;
isc_version_t isc_version;
fb_interpret_t fb_interpret;
};
class SQLAPI_API ibConnectionHandles : public saConnectionHandles
{
public:
ibConnectionHandles();
isc_db_handle m_db_handle; // Database handle
isc_tr_handle m_tr_handle; // Transaction handle
};
class SQLAPI_API ibCommandHandles : public saCommandHandles
{
public:
ibCommandHandles();
isc_stmt_handle m_stmt_handle;
};
extern ibAPI g_ibAPI;
#endif // !defined(__IBAPI_H__)

View File

@ -0,0 +1,37 @@
/*
* PROGRAM: UDF and Blob filter Utilities library
* MODULE: ib_util.h
* DESCRIPTION: Prototype header file for ib_util.c
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef _IB_UTIL_H
#define _IB_UTIL_H
#ifdef __cplusplus
extern "C" {
#endif
extern void *ib_util_malloc(long);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* _IB_UTIL_H */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,432 @@
// infAPI.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__INFAPI_H__)
#define __INFAPI_H__
#include "SQLAPI.h"
// API header(s)
#include <infxcli.h>
extern long g_nInfDLLVersionLoaded;
extern void AddInfSupport(const SAConnection * pCon);
extern void ReleaseInfSupport();
typedef SQLRETURN (SQL_API *SQLAllocConnect_t)(SQLHENV EnvironmentHandle,
SQLHDBC *ConnectionHandle);
typedef SQLRETURN (SQL_API *SQLAllocEnv_t)(SQLHENV *EnvironmentHandle);
typedef SQLRETURN (SQL_API *SQLAllocHandle_t)(SQLSMALLINT HandleType,
SQLHANDLE InputHandle, SQLHANDLE *OutputHandle);
typedef SQLRETURN (SQL_API *SQLAllocStmt_t)(SQLHDBC ConnectionHandle,
SQLHSTMT *StatementHandle);
typedef SQLRETURN (SQL_API *SQLBindCol_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
SQLPOINTER TargetValue, SQLLEN BufferLength,
SQLLEN *StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLBindParameter_t)(
SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT fParamType,
SQLSMALLINT fCType,
SQLSMALLINT fSqlType,
SQLULEN cbColDef,
SQLSMALLINT ibScale,
SQLPOINTER rgbValue,
SQLLEN cbValueMax,
SQLLEN *pcbValue);
typedef SQLRETURN (SQL_API *SQLBrowseConnect_t)(
SQLHDBC hdbc,
SQLTCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLTCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut);
typedef SQLRETURN (SQL_API *SQLBulkOperations_t)(
SQLHSTMT StatementHandle,
SQLSMALLINT Operation);
typedef SQLRETURN (SQL_API *SQLCancel_t)(SQLHSTMT StatementHandle);
typedef SQLRETURN (SQL_API *SQLCloseCursor_t)(SQLHSTMT StatementHandle);
#if defined(SA_UNICODE) && (defined(SA_64BIT) || defined(WIN64) || defined(ODBC64))
typedef SQLRETURN (SQL_API *SQLColAttribute_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
SQLSMALLINT *StringLength, SQLLEN* NumericAttribute);
#else
typedef SQLRETURN (SQL_API *SQLColAttribute_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
SQLSMALLINT *StringLength, SQLPOINTER NumericAttribute);
#endif
typedef SQLRETURN (SQL_API *SQLColAttributes_t)(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLUSMALLINT fDescType,
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT *pcbDesc,
SQLLEN *pfDesc);
typedef SQLRETURN (SQL_API *SQLColumnPrivileges_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLTCHAR *szColumnName,
SQLSMALLINT cbColumnName);
typedef SQLRETURN (SQL_API *SQLColumns_t)(SQLHSTMT StatementHandle,
SQLTCHAR *CatalogName, SQLSMALLINT NameLength1,
SQLTCHAR *SchemaName, SQLSMALLINT NameLength2,
SQLTCHAR *TableName, SQLSMALLINT NameLength3,
SQLTCHAR *ColumnName, SQLSMALLINT NameLength4);
typedef SQLRETURN (SQL_API *SQLConnect_t)(SQLHDBC ConnectionHandle,
SQLTCHAR *ServerName, SQLSMALLINT NameLength1,
SQLTCHAR *UserName, SQLSMALLINT NameLength2,
SQLTCHAR *Authentication, SQLSMALLINT NameLength3);
typedef SQLRETURN (SQL_API *SQLCopyDesc_t)(SQLHDESC SourceDescHandle,
SQLHDESC TargetDescHandle);
typedef SQLRETURN (SQL_API *SQLDataSources_t)(SQLHENV EnvironmentHandle,
SQLUSMALLINT Direction, SQLTCHAR *ServerName,
SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
SQLTCHAR *Description, SQLSMALLINT BufferLength2,
SQLSMALLINT *NameLength2);
typedef SQLRETURN (SQL_API *SQLDescribeCol_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLTCHAR *ColumnName,
SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
SQLSMALLINT *DataType, SQLULEN *ColumnSize,
SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable);
typedef SQLRETURN (SQL_API *SQLDescribeParam_t)(
SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT *pfSqlType,
SQLULEN *pcbParamDef,
SQLSMALLINT *pibScale,
SQLSMALLINT *pfNullable);
typedef SQLRETURN (SQL_API *SQLDisconnect_t)(SQLHDBC ConnectionHandle);
typedef SQLRETURN (SQL_API *SQLDriverConnect_t)(
SQLHDBC hdbc,
SQLHWND hwnd,
SQLTCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLTCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut,
SQLUSMALLINT fDriverCompletion);
typedef SQLRETURN (SQL_API *SQLDrivers_t)(
SQLHENV henv,
SQLUSMALLINT fDirection,
SQLTCHAR *szDriverDesc,
SQLSMALLINT cbDriverDescMax,
SQLSMALLINT *pcbDriverDesc,
SQLTCHAR *szDriverAttributes,
SQLSMALLINT cbDrvrAttrMax,
SQLSMALLINT *pcbDrvrAttr);
typedef SQLRETURN (SQL_API *SQLEndTran_t)(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT CompletionType);
typedef SQLRETURN (SQL_API *SQLError_t)(SQLHENV EnvironmentHandle,
SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
SQLTCHAR *Sqlstate, SQLINTEGER *NativeError,
SQLTCHAR *MessageText, SQLSMALLINT BufferLength,
SQLSMALLINT *TextLength);
typedef SQLRETURN (SQL_API *SQLExecDirect_t)(SQLHSTMT StatementHandle,
SQLTCHAR *StatementText, SQLINTEGER TextLength);
typedef SQLRETURN (SQL_API *SQLExecute_t)(SQLHSTMT StatementHandle);
typedef SQLRETURN (SQL_API *SQLExtendedFetch_t)(
SQLHSTMT hstmt,
SQLUSMALLINT fFetchType,
SQLINTEGER irow,
SQLUINTEGER *pcrow,
SQLUSMALLINT *rgfRowStatus);
typedef SQLRETURN (SQL_API *SQLFetch_t)(SQLHSTMT StatementHandle);
typedef SQLRETURN (SQL_API *SQLFetchScroll_t)(SQLHSTMT StatementHandle,
SQLSMALLINT FetchOrientation, SQLLEN FetchOffset);
typedef SQLRETURN (SQL_API *SQLForeignKeys_t)(
SQLHSTMT hstmt,
SQLTCHAR *szPkCatalogName,
SQLSMALLINT cbPkCatalogName,
SQLTCHAR *szPkSchemaName,
SQLSMALLINT cbPkSchemaName,
SQLTCHAR *szPkTableName,
SQLSMALLINT cbPkTableName,
SQLTCHAR *szFkCatalogName,
SQLSMALLINT cbFkCatalogName,
SQLTCHAR *szFkSchemaName,
SQLSMALLINT cbFkSchemaName,
SQLTCHAR *szFkTableName,
SQLSMALLINT cbFkTableName);
typedef SQLRETURN (SQL_API *SQLFreeConnect_t)(SQLHDBC ConnectionHandle);
typedef SQLRETURN (SQL_API *SQLFreeEnv_t)(SQLHENV EnvironmentHandle);
typedef SQLRETURN (SQL_API *SQLFreeHandle_t)(SQLSMALLINT HandleType, SQLHANDLE Handle);
typedef SQLRETURN (SQL_API *SQLFreeStmt_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT Option);
typedef SQLRETURN (SQL_API *SQLGetConnectAttr_t)(SQLHDBC ConnectionHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER BufferLength, SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API *SQLGetConnectOption_t)(SQLHDBC ConnectionHandle,
SQLUSMALLINT Option, SQLPOINTER Value);
typedef SQLRETURN (SQL_API *SQLGetCursorName_t)(SQLHSTMT StatementHandle,
SQLTCHAR *CursorName, SQLSMALLINT BufferLength,
SQLSMALLINT *NameLength);
typedef SQLRETURN (SQL_API *SQLGetData_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
SQLPOINTER TargetValue, SQLLEN BufferLength,
SQLLEN *StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLGetDescField_t)(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
SQLPOINTER Value, SQLINTEGER BufferLength,
SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API *SQLGetDescRec_t)(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLTCHAR *Name,
SQLSMALLINT BufferLength, SQLSMALLINT *StringLength,
SQLSMALLINT *Type, SQLSMALLINT *SubType,
SQLLEN *Length, SQLSMALLINT *Precision,
SQLSMALLINT *Scale, SQLSMALLINT *Nullable);
typedef SQLRETURN (SQL_API *SQLGetDiagRec_t)(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT RecNumber, SQLTCHAR *Sqlstate,
SQLINTEGER *NativeError, SQLTCHAR *MessageText,
SQLSMALLINT BufferLength, SQLSMALLINT *TextLength);
typedef SQLRETURN (SQL_API *SQLGetDiagField_t)(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
SQLPOINTER DiagInfo, SQLSMALLINT BufferLength,
SQLSMALLINT *StringLength);
typedef SQLRETURN (SQL_API *SQLGetEnvAttr_t)(SQLHENV EnvironmentHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER BufferLength, SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API *SQLGetFunctions_t)(SQLHDBC ConnectionHandle,
SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
typedef SQLRETURN (SQL_API *SQLGetInfo_t)(SQLHDBC ConnectionHandle,
SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
typedef SQLRETURN (SQL_API *SQLGetStmtAttr_t)(SQLHSTMT StatementHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER BufferLength, SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API *SQLGetStmtOption_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT Option, SQLPOINTER Value);
typedef SQLRETURN (SQL_API *SQLGetTypeInfo_t)(SQLHSTMT StatementHandle,
SQLSMALLINT DataType);
typedef SQLRETURN (SQL_API *SQLMoreResults_t)(
SQLHSTMT hstmt);
typedef SQLRETURN (SQL_API *SQLNativeSql_t)(
SQLHDBC hdbc,
SQLTCHAR *szSqlStrIn,
SQLINTEGER cbSqlStrIn,
SQLTCHAR *szSqlStr,
SQLINTEGER cbSqlStrMax,
SQLINTEGER *pcbSqlStr);
typedef SQLRETURN (SQL_API *SQLNumParams_t)(
SQLHSTMT hstmt,
SQLSMALLINT *pcpar);
typedef SQLRETURN (SQL_API *SQLNumResultCols_t)(SQLHSTMT StatementHandle,
SQLSMALLINT *ColumnCount);
typedef SQLRETURN (SQL_API *SQLParamData_t)(SQLHSTMT StatementHandle,
SQLPOINTER *Value);
typedef SQLRETURN (SQL_API *SQLParamOptions_t)(
SQLHSTMT hstmt,
SQLULEN crow,
SQLULEN *pirow);
typedef SQLRETURN (SQL_API *SQLPrepare_t)(SQLHSTMT StatementHandle,
SQLTCHAR *StatementText, SQLINTEGER TextLength);
typedef SQLRETURN (SQL_API *SQLPrimaryKeys_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szTableName,
SQLSMALLINT cbTableName);
typedef SQLRETURN (SQL_API *SQLProcedureColumns_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szProcName,
SQLSMALLINT cbProcName,
SQLTCHAR *szColumnName,
SQLSMALLINT cbColumnName);
typedef SQLRETURN (SQL_API *SQLProcedures_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szProcName,
SQLSMALLINT cbProcName);
typedef SQLRETURN (SQL_API *SQLPutData_t)(SQLHSTMT StatementHandle,
SQLPOINTER Data, SQLLEN StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLRowCount_t)(SQLHSTMT StatementHandle,
SQLLEN *RowCount);
typedef SQLRETURN (SQL_API *SQLSetConnectAttr_t)(SQLHDBC ConnectionHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER StringLength);
typedef SQLRETURN (SQL_API *SQLSetConnectOption_t)(SQLHDBC ConnectionHandle,
SQLUSMALLINT Option, SQLULEN Value);
typedef SQLRETURN (SQL_API *SQLSetCursorName_t)(SQLHSTMT StatementHandle,
SQLTCHAR *CursorName, SQLSMALLINT NameLength);
typedef SQLRETURN (SQL_API *SQLSetDescField_t)(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
SQLPOINTER Value, SQLINTEGER BufferLength);
typedef SQLRETURN (SQL_API *SQLSetDescRec_t)(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT Type,
SQLSMALLINT SubType, SQLLEN Length,
SQLSMALLINT Precision, SQLSMALLINT Scale,
SQLPOINTER Data, SQLLEN *StringLength,
SQLLEN *Indicator);
typedef SQLRETURN (SQL_API *SQLSetEnvAttr_t)(SQLHENV EnvironmentHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER StringLength);
typedef SQLRETURN (SQL_API *SQLSetParam_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
SQLSMALLINT ParameterType, SQLULEN LengthPrecision,
SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
SQLLEN *StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLSetPos_t)(
SQLHSTMT hstmt,
SQLSETPOSIROW irow,
SQLUSMALLINT fOption,
SQLUSMALLINT fLock);
typedef SQLRETURN (SQL_API *SQLSetScrollOptions_t)( /* Use SQLSetStmtOptions */
SQLHSTMT hstmt,
SQLUSMALLINT fConcurrency,
SQLINTEGER crowKeyset,
SQLUSMALLINT crowRowset);
typedef SQLRETURN (SQL_API *SQLSetStmtAttr_t)(SQLHSTMT StatementHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER StringLength);
typedef SQLRETURN (SQL_API *SQLSetStmtOption_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT Option, SQLULEN Value);
typedef SQLRETURN (SQL_API *SQLSpecialColumns_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT IdentifierType, SQLTCHAR *CatalogName,
SQLSMALLINT NameLength1, SQLTCHAR *SchemaName,
SQLSMALLINT NameLength2, SQLTCHAR *TableName,
SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
SQLUSMALLINT Nullable);
typedef SQLRETURN (SQL_API *SQLStatistics_t)(SQLHSTMT StatementHandle,
SQLTCHAR *CatalogName, SQLSMALLINT NameLength1,
SQLTCHAR *SchemaName, SQLSMALLINT NameLength2,
SQLTCHAR *TableName, SQLSMALLINT NameLength3,
SQLUSMALLINT Unique, SQLUSMALLINT Reserved);
typedef SQLRETURN (SQL_API *SQLTablePrivileges_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szTableName,
SQLSMALLINT cbTableName);
typedef SQLRETURN (SQL_API *SQLTables_t)(SQLHSTMT StatementHandle,
SQLTCHAR *CatalogName, SQLSMALLINT NameLength1,
SQLTCHAR *SchemaName, SQLSMALLINT NameLength2,
SQLTCHAR *TableName, SQLSMALLINT NameLength3,
SQLTCHAR *TableType, SQLSMALLINT NameLength4);
typedef SQLRETURN (SQL_API *SQLTransact_t)(SQLHENV EnvironmentHandle,
SQLHDBC ConnectionHandle, SQLUSMALLINT CompletionType);
class SQLAPI_API infAPI : public saAPI
{
public:
infAPI();
SQLAllocConnect_t SQLAllocConnect; // 1.0
SQLAllocEnv_t SQLAllocEnv; // 1.0
SQLAllocHandle_t SQLAllocHandle; // 3.0
SQLAllocStmt_t SQLAllocStmt; // 1.0
SQLBindCol_t SQLBindCol; // 1.0
SQLBindParameter_t SQLBindParameter; // 2.0
SQLBrowseConnect_t SQLBrowseConnect; // 1.0
SQLBulkOperations_t SQLBulkOperations; // 3.0
SQLCancel_t SQLCancel; // 1.0
SQLCloseCursor_t SQLCloseCursor; // 3.0
SQLColAttribute_t SQLColAttribute; // 3.0
SQLColAttributes_t SQLColAttributes; // 1.0
SQLColumnPrivileges_t SQLColumnPrivileges;// 1.0
SQLColumns_t SQLColumns; // 1.0
SQLConnect_t SQLConnect; // 1.0
SQLCopyDesc_t SQLCopyDesc; // 3.0
SQLDataSources_t SQLDataSources; // 1.0
SQLDescribeCol_t SQLDescribeCol; // 1.0
SQLDescribeParam_t SQLDescribeParam; // 1.0
SQLDisconnect_t SQLDisconnect; // 1.0
SQLDriverConnect_t SQLDriverConnect; // 1.0
SQLDrivers_t SQLDrivers; // 2.0
SQLEndTran_t SQLEndTran; // 3.0
SQLError_t SQLError; // 1.0
SQLExecDirect_t SQLExecDirect; // 1.0
SQLExecute_t SQLExecute; // 1.0
SQLExtendedFetch_t SQLExtendedFetch; // 1.0
SQLFetch_t SQLFetch; // 1.0
SQLFetchScroll_t SQLFetchScroll; // 1.0
SQLForeignKeys_t SQLForeignKeys; // 1.0
SQLFreeConnect_t SQLFreeConnect; // 1.0
SQLFreeEnv_t SQLFreeEnv; // 1.0
SQLFreeHandle_t SQLFreeHandle; // 3.0
SQLFreeStmt_t SQLFreeStmt; // 1.0
SQLGetConnectAttr_t SQLGetConnectAttr; // 3.0
SQLGetConnectOption_t SQLGetConnectOption;// 1.0
SQLGetCursorName_t SQLGetCursorName; // 1.0
SQLGetData_t SQLGetData; // 1.0
SQLGetDescField_t SQLGetDescField; // 3.0
SQLGetDescRec_t SQLGetDescRec; // 3.0
SQLGetDiagField_t SQLGetDiagField; // 3.0
SQLGetDiagRec_t SQLGetDiagRec; // 3.0
SQLGetEnvAttr_t SQLGetEnvAttr; // 3.0
SQLGetFunctions_t SQLGetFunctions; // 1.0
SQLGetInfo_t SQLGetInfo; // 1.0
SQLGetStmtAttr_t SQLGetStmtAttr; // 3.0
SQLGetStmtOption_t SQLGetStmtOption; // 1.0
SQLGetTypeInfo_t SQLGetTypeInfo; // 1.0
SQLMoreResults_t SQLMoreResults; // 1.0
SQLNativeSql_t SQLNativeSql; // 1.0
SQLNumParams_t SQLNumParams; // 1.0
SQLNumResultCols_t SQLNumResultCols; // 1.0
SQLParamData_t SQLParamData; // 1.0
SQLParamOptions_t SQLParamOptions; // 1.0
SQLPrepare_t SQLPrepare; // 1.0
SQLPrimaryKeys_t SQLPrimaryKeys; // 1.0
SQLProcedureColumns_t SQLProcedureColumns;// 1.0
SQLProcedures_t SQLProcedures; // 1.0
SQLPutData_t SQLPutData; // 1.0
SQLRowCount_t SQLRowCount; // 1.0
SQLSetConnectAttr_t SQLSetConnectAttr; // 3.0
SQLSetConnectOption_t SQLSetConnectOption;// 1.0
SQLSetCursorName_t SQLSetCursorName; // 1.0
SQLSetDescField_t SQLSetDescField; // 3.0
SQLSetDescRec_t SQLSetDescRec; // 3.0
SQLSetEnvAttr_t SQLSetEnvAttr; // 3.0
SQLSetParam_t SQLSetParam; // 1.0
SQLSetPos_t SQLSetPos; // 1.0
SQLSetScrollOptions_t SQLSetScrollOptions;// 1.0
SQLSetStmtAttr_t SQLSetStmtAttr; // 3.0
SQLSetStmtOption_t SQLSetStmtOption; // 1.0
SQLSpecialColumns_t SQLSpecialColumns; // 1.0
SQLStatistics_t SQLStatistics; // 1.0
SQLTablePrivileges_t SQLTablePrivileges; // 1.0
SQLTables_t SQLTables; // 1.0
SQLTransact_t SQLTransact; // 1.0
};
class SQLAPI_API infConnectionHandles : public saConnectionHandles
{
public:
infConnectionHandles();
SQLHENV m_hevn;
SQLHDBC m_hdbc;
};
class SQLAPI_API infCommandHandles : public saCommandHandles
{
public:
infCommandHandles();
SQLHSTMT m_hstmt;
};
extern infAPI g_infAPI;
#endif // !defined(__INFAPI_H__)

View File

@ -0,0 +1,310 @@
/****************************************************************************
*
* IBM CORP.
*
* PROPRIETARY DATA
*
* Licensed Material - Property Of IBM
*
* "Restricted Materials of IBM"
*
* IBM Informix Client SDK
*
* (c) Copyright IBM Corporation 1997, 2011. All rights reserved.
*
** INFXCLI.H - This is the the main include for IBM Informix-CLI
** applications.
**
** Preconditions:
** for Windows environment:
** #include "windows.h"
**
*********************************************************************/
#ifndef __INFXCLI_H
#define __INFXCLI_H
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
/*
** include sql.h and sqlext.h
*/
#ifdef _WINDOWS_
#include "sql.h"
#include "sqlext.h"
#else
#include <stdlib.h>
#include "infxsql.h"
#endif /*_WINDOWS_*/
#define SQL_TXN_LAST_COMMITTED 0x00000010L
#define SQL_TRANSACTION_LAST_COMMITTED SQL_TXN_LAST_COMMITTED
/* For extended errors */
#define SQL_DIAG_ISAM_ERROR 13
#define SQL_DIAG_XA_ERROR 14
/* START -- Q+E Software's SQLSetStmtOption extensions (1040 to 1139) */
/* defines here for backwards compatibility */
#define SQL_STMTOPT_START 1040
/* Get the rowid for the last row inserted */
#define SQL_GET_ROWID (SQL_STMTOPT_START+8)
/* Get the value for the serial column in the last row inserted */
#define SQL_GET_SERIAL_VALUE (SQL_STMTOPT_START+9)
/* END -- Q+E Software's SQLSetStmtOption extensions (1040 to 1139) */
/*
** Informix extensions
*/
/* Informix Column Attributes Flags Definitions */
#define FDNULLABLE 0x0001 /* null allowed in field */
#define FDDISTINCT 0x0002 /* distinct of all */
#define FDDISTLVARCHAR 0x0004 /* distinct of SQLLVARCHAR */
#define FDDISTBOOLEAN 0x0008 /* distinct of SQLBOOL */
#define FDDISTSIMP 0x0010 /* distinct of simple type */
#define FDCSTTYPE 0x0020 /* constructor type */
#define FDNAMED 0x0040 /* named row type */
#define ISNULLABLE( flags ) ( flags & FDNULLABLE ? 1 : 0)
#define ISDISTINCT( flags ) ( flags & FDDISTINCT ? 1 : 0)
/* Informix Type Estensions */
#define SQL_INFX_UDT_FIXED -100
#define SQL_INFX_UDT_VARYING -101
#define SQL_INFX_UDT_BLOB -102
#define SQL_INFX_UDT_CLOB -103
#define SQL_INFX_UDT_LVARCHAR -104
#define SQL_INFX_RC_ROW -105
#define SQL_INFX_RC_COLLECTION -106
#define SQL_INFX_RC_LIST -107
#define SQL_INFX_RC_SET -108
#define SQL_INFX_RC_MULTISET -109
#define SQL_INFX_UNSUPPORTED -110
#define SQL_INFX_C_SMARTLOB_LOCATOR -111
#define SQL_INFX_QUALIFIER -112
#define SQL_INFX_DECIMAL -113
#define SQL_INFX_BIGINT -114
typedef void * HINFX_RC; /* row & collection handle */
/* Informix Connect Attributes Extensions */
#define SQL_OPT_LONGID 2251
#define SQL_INFX_ATTR_LONGID SQL_OPT_LONGID
#define SQL_INFX_ATTR_LEAVE_TRAILING_SPACES 2252
#define SQL_INFX_ATTR_DEFAULT_UDT_FETCH_TYPE 2253
#define SQL_INFX_ATTR_ENABLE_SCROLL_CURSORS 2254
#define SQL_ENABLE_INSERT_CURSOR 2255
#define SQL_INFX_ATTR_ENABLE_INSERT_CURSORS SQL_ENABLE_INSERT_CURSOR
#define SQL_INFX_ATTR_OPTIMIZE_AUTOCOMMIT 2256
#define SQL_INFX_ATTR_ODBC_TYPES_ONLY 2257
#define SQL_INFX_ATTR_FETCH_BUFFER_SIZE 2258
#define SQL_INFX_ATTR_OPTOFC 2259
#define SQL_INFX_ATTR_OPTMSG 2260
#define SQL_INFX_ATTR_REPORT_KEYSET_CURSORS 2261
#define SQL_INFX_ATTR_LO_AUTOMATIC 2262
#define SQL_INFX_ATTR_AUTO_FREE 2263
#define SQL_INFX_ATTR_DEFERRED_PREPARE 2265
#define SQL_INFX_ATTR_PAM_FUNCTION 2266 /* void pamCallback
(int msgStyle,
void *responseBuf,
int responseBufLen,
int *responseLenPtr,
void *challengeBuf,
int challengeBufLen,
int *challengeLenPtr) */
#define SQL_INFX_ATTR_PAM_RESPONSE_BUF 2267 /* SQLPOINTER */
#define SQL_INFX_ATTR_PAM_RESPONSE_BUF_LEN 2268 /* SQLINTEGER */
#define SQL_INFX_ATTR_PAM_RESPONSE_LEN_PTR 2269 /* SQLPOINTER */
#define SQL_INFX_ATTR_PAM_CHALLENGE_BUF 2270 /* SQLPOINTER */
#define SQL_INFX_ATTR_PAM_CHALLENGE_BUF_LEN 2271 /* SQLINTEGER */
#define SQL_INFX_ATTR_PAM_CHALLENGE_LEN_PTR 2272 /* SQLINTEGER * - number of bytes in challenge */
#define SQL_INFX_ATTR_DELIMIDENT 2273 /* As of now this attribute is only being used
in .NET Provider since it is sitting on top
of ODBC.*/
#define SQL_INFX_ATTR_DBLOCALE 2275
#define SQL_INFX_ATTR_LOCALIZE_DECIMALS 2276
#define SQL_INFX_ATTR_DEFAULT_DECIMAL 2277
#define SQL_INFX_ATTR_SKIP_PARSING 2278
#define SQL_INFX_ATTR_CALL_FROM_DOTNET 2279
#define SQL_INFX_ATTR_LENGTHINCHARFORDIAGRECW 2280
#define SQL_INFX_ATTR_SENDTIMEOUT 2281
#define SQL_INFX_ATTR_RECVTIMEOUT 2282
#define SQL_INFX_ATTR_IDSISAMERRMSG 2283
/*Attributes same as cli*/
#define SQL_ATTR_USE_TRUSTED_CONTEXT 2561
/* Informix Descriptor Extensions */
#define SQL_INFX_ATTR_FLAGS 1900 /* UDWORD */
#define SQL_INFX_ATTR_EXTENDED_TYPE_CODE 1901 /* UDWORD */
#define SQL_INFX_ATTR_EXTENDED_TYPE_NAME 1902 /* UCHAR ptr */
#define SQL_INFX_ATTR_EXTENDED_TYPE_OWNER 1903 /* UCHAR ptr */
#define SQL_INFX_ATTR_EXTENDED_TYPE_ALIGNMENT 1904 /* UDWORD */
#define SQL_INFX_ATTR_SOURCE_TYPE_CODE 1905 /* UDWORD */
/* Informix Statement Attributes Extensions */
#define SQL_VMB_CHAR_LEN 2325
#define SQL_INFX_ATTR_VMB_CHAR_LEN SQL_VMB_CHAR_LEN
#define SQL_INFX_ATTR_MAX_FET_ARR_SIZE 2326
/* Informix fOption, SQL_VMB_CHAR_LEN vParam */
#define SQL_VMB_CHAR_EXACT 0
#define SQL_VMB_CHAR_ESTIMATE 1
/* Informix row/collection traversal constants */
#define SQL_INFX_RC_NEXT 1
#define SQL_INFX_RC_PRIOR 2
#define SQL_INFX_RC_FIRST 3
#define SQL_INFX_RC_LAST 4
#define SQL_INFX_RC_ABSOLUTE 5
#define SQL_INFX_RC_RELATIVE 6
#define SQL_INFX_RC_CURRENT 7
/*******************************************************************************
* Large Object (LO) related structures
*
* LO_SPEC: Large object spec structure
* It is used for creating smartblobs. The user may examin and/or set certain
* fields of LO_SPEC by using ifx_lo_spec[set|get]_* accessor functions.
*
* LO_PTR: Large object pointer structure
* Identifies the LO and provides ancillary, security-related information.
*
* LO_STAT: Large object stat structure
* It is used in querying attribtes of smartblobs. The user may examin fields
* herein by using ifx_lo_stat[set|get]_* accessor functions.
*
* These structures are opaque to the user. Accessor functions are provided
* for these structures.
******************************************************************************/
/* Informix GetInfo Extensions to obtain length of LO related structures */
#define SQL_INFX_LO_SPEC_LENGTH 2250 /* UWORD */
#define SQL_INFX_LO_PTR_LENGTH 2251 /* UWORD */
#define SQL_INFX_LO_STAT_LENGTH 2252 /* UWORD */
/******************************************************************************
* LO Open flags: (see documentation for further explanation)
*
* LO_APPEND - Positions the seek position to end-of-file + 1. By itself,
* it is equivalent to write only mode followed by a seek to the
* end of large object. Read opeartions will fail.
* You can OR the LO_APPEND flag with another access mode.
* LO_WRONLY - Only write operations are valid on the data.
* LO_RDONLY - Only read operations are valid on the data.
* LO_RDWR - Both read and write operations are valid on the data.
*
* LO_RANDOM - If set overrides optimizer decision. Indicates that I/O is
* random and that the system should not read-ahead.
* LO_SEQUENTIAL - If set overrides optimizer decision. Indicates that
* reads are sequential in either forward or reverse direction.
*
* LO_FORWARD - Only used for sequential access. Indicates that the sequential
* access will be in a forward direction, i.e. from low offset
* to higher offset.
* LO_REVERSE - Only used for sequential access. Indicates that the sequential
* access will be in a reverse direction.
*
* LO_BUFFER - If set overrides optimizer decision. I/O goes through the
* buffer pool.
* LO_NOBUFFER - If set then I/O does not use the buffer pool.
******************************************************************************/
#define LO_APPEND 0x1
#define LO_WRONLY 0x2
#define LO_RDONLY 0x4 /* default */
#define LO_RDWR 0x8
#define LO_RANDOM 0x20 /* default is determined by optimizer */
#define LO_SEQUENTIAL 0x40 /* default is determined by optimizer */
#define LO_FORWARD 0x80 /* default */
#define LO_REVERSE 0x100
#define LO_BUFFER 0x200 /* default is determined by optimizer */
#define LO_NOBUFFER 0x400 /* default is determined by optimizer */
#define LO_DIRTY_READ 0x10
#define LO_NODIRTY_READ 0x800
#define LO_LOCKALL 0x1000 /* default */
#define LO_LOCKRANGE 0x2000
/*******************************************************************************
* LO create-time flags:
*
* Bitmask - Set/Get via ifx_lo_specset_flags() on LO_SPEC.
******************************************************************************/
#define LO_ATTR_LOG 0x0001
#define LO_ATTR_NOLOG 0x0002
#define LO_ATTR_DELAY_LOG 0x0004
#define LO_ATTR_KEEP_LASTACCESS_TIME 0x0008
#define LO_ATTR_NOKEEP_LASTACCESS_TIME 0x0010
#define LO_ATTR_HIGH_INTEG 0x0020
#define LO_ATTR_MODERATE_INTEG 0x0040
/*******************************************************************************
* Symbolic constants for the "lseek" routine
******************************************************************************/
#define LO_SEEK_SET 0 /* Set curr. pos. to "offset" */
#define LO_SEEK_CUR 1 /* Set curr. pos. to current + "offset" */
#define LO_SEEK_END 2 /* Set curr. pos. to EOF + "offset" */
/*******************************************************************************
* Symbolic constants for lo_lock and lo_unlock routines.
******************************************************************************/
#define LO_SHARED_MODE 1
#define LO_EXCLUSIVE_MODE 2
/*******************************************************************************
* Intersolv specific infoTypes for SQLGetInfo
******************************************************************************/
#define SQL_RESERVED_WORDS 1011
#define SQL_PSEUDO_COLUMNS 1012
#define SQL_FROM_RESERVED_WORDS 1013
#define SQL_WHERE_CLAUSE_TERMINATORS 1014
#define SQL_COLUMN_FIRST_CHARS 1015
#define SQL_COLUMN_MIDDLE_CHARS 1016
#define SQL_TABLE_FIRST_CHARS 1018
#define SQL_TABLE_MIDDLE_CHARS 1019
#define SQL_FAST_SPECIAL_COLUMNS 1021
#define SQL_ACCESS_CONFLICTS 1022
#define SQL_LOCKING_SYNTAX 1023
#define SQL_LOCKING_DURATION 1024
#define SQL_RECORD_OPERATIONS 1025
#define SQL_QUALIFIER_SYNTAX 1026
/* Function for acquiring the xa_switch structure defined by Informix RM */
struct xa_switch_t * _fninfx_xa_switch( void );
/* Function for obtaining the Environment handle associated with an XA
Connection */
RETCODE IFMX_SQLGetXaHenv(int, HENV *);
/*Function for obtaining the Database handle associated with an XA Connection */
RETCODE IFMX_SQLGetXaHdbc(int, HDBC *);
#ifdef __cplusplus
} /* End of extern "C" { */
#endif /* __cplusplus */
#endif /* __INFXCLI_H */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,303 @@
// myAPI.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__MYAPI_H__)
#define __MYAPI_H__
#include "SQLAPI.h"
// API header(s)
#include <mysql.h>
#include <errmsg.h>
extern void AddMySQLSupport(const SAConnection * pCon);
extern void ReleaseMySQLSupport();
/* Functions to get information from the MYSQL and MYSQL_RES structures */
/* Should definitely be used if one uses shared libraries */
typedef my_ulonglong (STDCALL *mysql_num_rows_t)(MYSQL_RES *res);
typedef unsigned int (STDCALL *mysql_num_fields_t)(MYSQL_RES *res);
typedef my_bool (STDCALL *mysql_eof_t)(MYSQL_RES *res);
typedef MYSQL_FIELD * (STDCALL *mysql_fetch_field_direct_t)(MYSQL_RES *res,
unsigned int fieldnr);
typedef MYSQL_FIELD * (STDCALL *mysql_fetch_fields_t)(MYSQL_RES *res);
typedef MYSQL_ROWS * (STDCALL *mysql_row_tell_t)(MYSQL_RES *res);
typedef unsigned int (STDCALL *mysql_field_tell_t)(MYSQL_RES *res);
typedef unsigned int (STDCALL *mysql_field_count_t)(MYSQL *mysql);
typedef my_ulonglong (STDCALL *mysql_affected_rows_t)(MYSQL *mysql);
typedef my_ulonglong (STDCALL *mysql_insert_id_t)(MYSQL *mysql);
typedef unsigned int (STDCALL *mysql_errno_t)(MYSQL *mysql);
typedef const char * (STDCALL *mysql_error_t)(MYSQL *mysql);
typedef const char * (STDCALL *mysql_info_t)(MYSQL *mysql);
typedef unsigned long (STDCALL *mysql_thread_id_t)(MYSQL *mysql);
typedef const char * (STDCALL *mysql_character_set_name_t)(MYSQL *mysql);
typedef MYSQL * (STDCALL *mysql_init_t)(MYSQL *mysql);
//#ifdef HAVE_OPENSSL
typedef int (STDCALL *mysql_ssl_set_t)(MYSQL *mysql, const char *key,
const char *cert, const char *ca,
const char *capath, const char *cipher);
typedef char * (STDCALL *mysql_ssl_cipher_t)(MYSQL *mysql);
typedef int (STDCALL *mysql_ssl_clear_t)(MYSQL *mysql);
//#endif /* HAVE_OPENSSL */
typedef MYSQL * (STDCALL *mysql_connect_t)(MYSQL *mysql, const char *host,
const char *user, const char *passwd);
typedef my_bool (STDCALL *mysql_change_user_t)(MYSQL *mysql, const char *user,
const char *passwd, const char *db);
//#if MYSQL_VERSION_ID >= 32200
typedef MYSQL * (STDCALL *mysql_real_connect2_t)(MYSQL *mysql, const char *host,
const char *user,
const char *passwd,
const char *db,
unsigned int port,
const char *unix_socket,
long unsigned int clientflag);
//#else
typedef MYSQL * (STDCALL *mysql_real_connect1_t)(MYSQL *mysql, const char *host,
const char *user,
const char *passwd,
unsigned int port,
const char *unix_socket,
long unsigned int clientflag);
//#endif
typedef void (STDCALL *mysql_close_t)(MYSQL *sock);
typedef int (STDCALL *mysql_next_result_t)(MYSQL *mysql);
typedef int (STDCALL *mysql_select_db_t)(MYSQL *mysql, const char *db);
typedef int (STDCALL *mysql_query_t)(MYSQL *mysql, const char *q);
typedef int (STDCALL *mysql_send_query_t)(MYSQL *mysql, const char *q,
long unsigned int length);
typedef my_bool (STDCALL *mysql_read_query_result_t)(MYSQL *mysql);
typedef int (STDCALL *mysql_real_query_t)(MYSQL *mysql, const char *q,
long unsigned int length);
typedef int (STDCALL *mysql_create_db_t)(MYSQL *mysql, const char *DB);
typedef int (STDCALL *mysql_drop_db_t)(MYSQL *mysql, const char *DB);
typedef int (STDCALL *mysql_shutdown_t)(MYSQL *mysql, mysql_enum_shutdown_level);
typedef int (STDCALL *mysql_dump_debug_info_t)(MYSQL *mysql);
typedef int (STDCALL *mysql_refresh_t)(MYSQL *mysql,
unsigned int refresh_options);
typedef int (STDCALL *mysql_kill_t)(MYSQL *mysql,unsigned long pid);
typedef int (STDCALL *mysql_ping_t)(MYSQL *mysql);
typedef const char * (STDCALL *mysql_stat_t)(MYSQL *mysql);
typedef const char * (STDCALL *mysql_get_server_info_t)(MYSQL *mysql);
typedef const char * (STDCALL *mysql_get_client_info_t)(void);
typedef const char * (STDCALL *mysql_get_host_info_t)(MYSQL *mysql);
typedef unsigned int (STDCALL *mysql_get_proto_info_t)(MYSQL *mysql);
typedef MYSQL_RES * (STDCALL *mysql_list_dbs_t)(MYSQL *mysql,const char *wild);
typedef MYSQL_RES * (STDCALL *mysql_list_tables_t)(MYSQL *mysql,const char *wild);
typedef MYSQL_RES * (STDCALL *mysql_list_fields_t)(MYSQL *mysql, const char *table,
const char *wild);
typedef MYSQL_RES * (STDCALL *mysql_list_processes_t)(MYSQL *mysql);
typedef MYSQL_RES * (STDCALL *mysql_store_result_t)(MYSQL *mysql);
typedef MYSQL_RES * (STDCALL *mysql_use_result_t)(MYSQL *mysql);
typedef int (STDCALL *mysql_options_t)(MYSQL *mysql,enum mysql_option option,
const void *arg);
typedef void (STDCALL *mysql_free_result_t)(MYSQL_RES *result);
typedef void (STDCALL *mysql_data_seek_t)(MYSQL_RES *result,
my_ulonglong offset);
typedef MYSQL_ROW_OFFSET (STDCALL *mysql_row_seek_t)(MYSQL_RES *result, MYSQL_ROW_OFFSET);
typedef MYSQL_FIELD_OFFSET (STDCALL *mysql_field_seek_t)(MYSQL_RES *result,
MYSQL_FIELD_OFFSET offset);
typedef MYSQL_ROW (STDCALL *mysql_fetch_row_t)(MYSQL_RES *result);
typedef unsigned long * (STDCALL *mysql_fetch_lengths_t)(MYSQL_RES *result);
typedef MYSQL_FIELD * (STDCALL *mysql_fetch_field_t)(MYSQL_RES *result);
typedef unsigned long (STDCALL *mysql_escape_string_t)(char *to,const char *from,
unsigned long from_length);
typedef unsigned long (STDCALL *mysql_real_escape_string_t)(MYSQL *mysql,
char *to,const char *from,
unsigned long length);
typedef void (STDCALL *mysql_debug_t)(const char *debug);
typedef char * (STDCALL *mysql_odbc_escape_string_t)(MYSQL *mysql,
char *to,
unsigned long to_length,
const char *from,
unsigned long from_length,
void *param,
char *
(*extend_buffer)
(void *, char *to,
unsigned long *length));
typedef void (STDCALL *myodbc_remove_escape_t)(MYSQL *mysql,char *name);
typedef my_bool (STDCALL *mysql_thread_init_t)(void);
typedef void (STDCALL *mysql_thread_end_t)(void);
typedef unsigned int (STDCALL *mysql_thread_safe_t)(void);
//#define mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT)
typedef int (STDCALL *mysql_server_init_t)(int argc, char **argv, char **groups);
typedef void (STDCALL *mysql_server_end_t)(void);
typedef int (STDCALL *mysql_set_character_set_t)(MYSQL *mysql, const char *csname);
// MySQL statement API functions
typedef MYSQL_STMT * (STDCALL *mysql_stmt_init_t)(MYSQL *mysql);
typedef int (STDCALL *mysql_stmt_prepare_t)(MYSQL_STMT *stmt, const char *query,
unsigned long length);
typedef int (STDCALL *mysql_stmt_execute_t)(MYSQL_STMT *stmt);
typedef int (STDCALL *mysql_stmt_fetch_t)(MYSQL_STMT *stmt);
typedef int (STDCALL *mysql_stmt_fetch_column_t)(MYSQL_STMT *stmt, MYSQL_BIND *bind,
unsigned int column,
unsigned long offset);
typedef int (STDCALL *mysql_stmt_store_result_t)(MYSQL_STMT *stmt);
typedef unsigned long (STDCALL *mysql_stmt_param_count_t)(MYSQL_STMT * stmt);
typedef my_bool (STDCALL *mysql_stmt_attr_set_t)(MYSQL_STMT *stmt,
enum enum_stmt_attr_type attr_type,
const void *attr);
typedef my_bool (STDCALL *mysql_stmt_attr_get_t)(MYSQL_STMT *stmt,
enum enum_stmt_attr_type attr_type,
void *attr);
typedef my_bool (STDCALL *mysql_stmt_bind_param_t)(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
typedef my_bool (STDCALL *mysql_stmt_bind_result_t)(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
typedef my_bool (STDCALL *mysql_stmt_close_t)(MYSQL_STMT * stmt);
typedef my_bool (STDCALL *mysql_stmt_reset_t)(MYSQL_STMT * stmt);
typedef my_bool (STDCALL *mysql_stmt_free_result_t)(MYSQL_STMT *stmt);
typedef my_bool (STDCALL *mysql_stmt_send_long_data_t)(MYSQL_STMT *stmt,
unsigned int param_number,
const char *data,
unsigned long length);
typedef MYSQL_RES * (STDCALL *mysql_stmt_result_metadata_t)(MYSQL_STMT *stmt);
typedef MYSQL_RES * (STDCALL *mysql_stmt_param_metadata_t)(MYSQL_STMT *stmt);
typedef unsigned int (STDCALL *mysql_stmt_errno_t)(MYSQL_STMT * stmt);
typedef const char * (STDCALL *mysql_stmt_error_t)(MYSQL_STMT * stmt);
typedef const char * (STDCALL *mysql_stmt_sqlstate_t)(MYSQL_STMT * stmt);
typedef MYSQL_ROW_OFFSET (STDCALL *mysql_stmt_row_seek_t)(MYSQL_STMT *stmt,
MYSQL_ROW_OFFSET offset);
typedef MYSQL_ROW_OFFSET (STDCALL *mysql_stmt_row_tell_t)(MYSQL_STMT *stmt);
typedef void (STDCALL *mysql_stmt_data_seek_t)(MYSQL_STMT *stmt, my_ulonglong offset);
typedef my_ulonglong (STDCALL *mysql_stmt_num_rows_t)(MYSQL_STMT *stmt);
typedef my_ulonglong (STDCALL *mysql_stmt_affected_rows_t)(MYSQL_STMT *stmt);
typedef my_ulonglong (STDCALL *mysql_stmt_insert_id_t)(MYSQL_STMT *stmt);
typedef unsigned int (STDCALL *mysql_stmt_field_count_t)(MYSQL_STMT *stmt);
typedef void (STDCALL *mysql_get_character_set_info_t)(MYSQL *mysql,
MY_CHARSET_INFO *charset);
// API declarations
class SQLAPI_API myAPI : public saAPI
{
public:
myAPI();
mysql_num_rows_t mysql_num_rows;
mysql_num_fields_t mysql_num_fields;
mysql_eof_t mysql_eof;
mysql_fetch_field_direct_t mysql_fetch_field_direct;
mysql_fetch_fields_t mysql_fetch_fields;
mysql_row_tell_t mysql_row_tell;
mysql_field_tell_t mysql_field_tell;
mysql_field_count_t mysql_field_count;
mysql_affected_rows_t mysql_affected_rows;
mysql_insert_id_t mysql_insert_id;
mysql_errno_t mysql_errno;
mysql_error_t mysql_error;
mysql_info_t mysql_info;
mysql_thread_id_t mysql_thread_id;
mysql_character_set_name_t mysql_character_set_name;
mysql_init_t mysql_init;
mysql_ssl_set_t mysql_ssl_set;
mysql_ssl_cipher_t mysql_ssl_cipher;
mysql_ssl_clear_t mysql_ssl_clear;
mysql_connect_t mysql_connect;
mysql_change_user_t mysql_change_user;
mysql_real_connect1_t mysql_real_connect1;
mysql_real_connect2_t mysql_real_connect2;
mysql_close_t mysql_close;
mysql_next_result_t mysql_next_result;
mysql_select_db_t mysql_select_db;
mysql_query_t mysql_query;
mysql_send_query_t mysql_send_query;
mysql_read_query_result_t mysql_read_query_result;
mysql_real_query_t mysql_real_query;
mysql_create_db_t mysql_create_db;
mysql_drop_db_t mysql_drop_db;
mysql_shutdown_t mysql_shutdown;
mysql_dump_debug_info_t mysql_dump_debug_info;
mysql_refresh_t mysql_refresh;
mysql_kill_t mysql_kill;
mysql_ping_t mysql_ping;
mysql_stat_t mysql_stat;
mysql_get_server_info_t mysql_get_server_info;
mysql_get_client_info_t mysql_get_client_info;
mysql_get_host_info_t mysql_get_host_info;
mysql_get_proto_info_t mysql_get_proto_info;
mysql_list_dbs_t mysql_list_dbs;
mysql_list_tables_t mysql_list_tables;
mysql_list_fields_t mysql_list_fields;
mysql_list_processes_t mysql_list_processes;
mysql_store_result_t mysql_store_result;
mysql_use_result_t mysql_use_result;
mysql_options_t mysql_options;
mysql_free_result_t mysql_free_result;
mysql_data_seek_t mysql_data_seek;
mysql_row_seek_t mysql_row_seek;
mysql_field_seek_t mysql_field_seek;
mysql_fetch_row_t mysql_fetch_row;
mysql_fetch_lengths_t mysql_fetch_lengths;
mysql_fetch_field_t mysql_fetch_field;
mysql_escape_string_t mysql_escape_string;
mysql_real_escape_string_t mysql_real_escape_string;
mysql_debug_t mysql_debug;
mysql_odbc_escape_string_t mysql_odbc_escape_string;
myodbc_remove_escape_t myodbc_remove_escape;
mysql_thread_init_t mysql_thread_init;
mysql_thread_end_t mysql_thread_end;
mysql_thread_safe_t mysql_thread_safe;
mysql_server_init_t mysql_server_init;
mysql_server_end_t mysql_server_end;
mysql_set_character_set_t mysql_set_character_set;
// MySQL statement API functions
mysql_stmt_init_t mysql_stmt_init;
mysql_stmt_prepare_t mysql_stmt_prepare;
mysql_stmt_execute_t mysql_stmt_execute;
mysql_stmt_fetch_t mysql_stmt_fetch;
mysql_stmt_fetch_column_t mysql_stmt_fetch_column;
mysql_stmt_store_result_t mysql_stmt_store_result;
mysql_stmt_param_count_t mysql_stmt_param_count;
mysql_stmt_attr_set_t mysql_stmt_attr_set;
mysql_stmt_attr_get_t mysql_stmt_attr_get;
mysql_stmt_bind_param_t mysql_stmt_bind_param;
mysql_stmt_bind_result_t mysql_stmt_bind_result;
mysql_stmt_close_t mysql_stmt_close;
mysql_stmt_reset_t mysql_stmt_reset;
mysql_stmt_free_result_t mysql_stmt_free_result;
mysql_stmt_send_long_data_t mysql_stmt_send_long_data;
mysql_stmt_result_metadata_t mysql_stmt_result_metadata;
mysql_stmt_param_metadata_t mysql_stmt_param_metadata;
mysql_stmt_errno_t mysql_stmt_errno;
mysql_stmt_error_t mysql_stmt_error;
mysql_stmt_sqlstate_t mysql_stmt_sqlstate;
mysql_stmt_row_seek_t mysql_stmt_row_seek;
mysql_stmt_row_tell_t mysql_stmt_row_tell;
mysql_stmt_data_seek_t mysql_stmt_data_seek;
mysql_stmt_num_rows_t mysql_stmt_num_rows;
mysql_stmt_affected_rows_t mysql_stmt_affected_rows;
mysql_stmt_insert_id_t mysql_stmt_insert_id;
mysql_stmt_field_count_t mysql_stmt_field_count;
mysql_get_character_set_info_t mysql_get_character_set_info;
};
class SQLAPI_API myConnectionHandles : public saConnectionHandles
{
public:
myConnectionHandles();
MYSQL *mysql; // MySQL connection struct
};
class SQLAPI_API myCommandHandles : public saCommandHandles
{
public:
myCommandHandles();
MYSQL_RES *result; // MySQL result struct
MYSQL_STMT *stmt; // MySQL statement struct
};
extern myAPI g_myAPI;
#endif // !defined(__MYAPI_H__)

View File

@ -0,0 +1,112 @@
#ifndef ERRMSG_INCLUDED
#define ERRMSG_INCLUDED
/* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/* Error messages for MySQL clients */
/* (Error messages for the daemon are in sql/share/errmsg.txt) */
#ifdef __cplusplus
extern "C" {
#endif
void init_client_errs(void);
void finish_client_errs(void);
extern const char *client_errors[]; /* Error messages */
#ifdef __cplusplus
}
#endif
#define CR_MIN_ERROR 2000 /* For easier client code */
#define CR_MAX_ERROR 2999
#if !defined(ER)
#define ER(X) (((X) >= CR_ERROR_FIRST && (X) <= CR_ERROR_LAST)? \
client_errors[(X)-CR_ERROR_FIRST]: client_errors[CR_UNKNOWN_ERROR])
#endif
#define CLIENT_ERRMAP 2 /* Errormap used by my_error() */
/* Do not add error numbers before CR_ERROR_FIRST. */
/* If necessary to add lower numbers, change CR_ERROR_FIRST accordingly. */
#define CR_ERROR_FIRST 2000 /*Copy first error nr.*/
#define CR_UNKNOWN_ERROR 2000
#define CR_SOCKET_CREATE_ERROR 2001
#define CR_CONNECTION_ERROR 2002
#define CR_CONN_HOST_ERROR 2003
#define CR_IPSOCK_ERROR 2004
#define CR_UNKNOWN_HOST 2005
#define CR_SERVER_GONE_ERROR 2006
#define CR_VERSION_ERROR 2007
#define CR_OUT_OF_MEMORY 2008
#define CR_WRONG_HOST_INFO 2009
#define CR_LOCALHOST_CONNECTION 2010
#define CR_TCP_CONNECTION 2011
#define CR_SERVER_HANDSHAKE_ERR 2012
#define CR_SERVER_LOST 2013
#define CR_COMMANDS_OUT_OF_SYNC 2014
#define CR_NAMEDPIPE_CONNECTION 2015
#define CR_NAMEDPIPEWAIT_ERROR 2016
#define CR_NAMEDPIPEOPEN_ERROR 2017
#define CR_NAMEDPIPESETSTATE_ERROR 2018
#define CR_CANT_READ_CHARSET 2019
#define CR_NET_PACKET_TOO_LARGE 2020
#define CR_EMBEDDED_CONNECTION 2021
#define CR_PROBE_SLAVE_STATUS 2022
#define CR_PROBE_SLAVE_HOSTS 2023
#define CR_PROBE_SLAVE_CONNECT 2024
#define CR_PROBE_MASTER_CONNECT 2025
#define CR_SSL_CONNECTION_ERROR 2026
#define CR_MALFORMED_PACKET 2027
#define CR_WRONG_LICENSE 2028
/* new 4.1 error codes */
#define CR_NULL_POINTER 2029
#define CR_NO_PREPARE_STMT 2030
#define CR_PARAMS_NOT_BOUND 2031
#define CR_DATA_TRUNCATED 2032
#define CR_NO_PARAMETERS_EXISTS 2033
#define CR_INVALID_PARAMETER_NO 2034
#define CR_INVALID_BUFFER_USE 2035
#define CR_UNSUPPORTED_PARAM_TYPE 2036
#define CR_SHARED_MEMORY_CONNECTION 2037
#define CR_SHARED_MEMORY_CONNECT_REQUEST_ERROR 2038
#define CR_SHARED_MEMORY_CONNECT_ANSWER_ERROR 2039
#define CR_SHARED_MEMORY_CONNECT_FILE_MAP_ERROR 2040
#define CR_SHARED_MEMORY_CONNECT_MAP_ERROR 2041
#define CR_SHARED_MEMORY_FILE_MAP_ERROR 2042
#define CR_SHARED_MEMORY_MAP_ERROR 2043
#define CR_SHARED_MEMORY_EVENT_ERROR 2044
#define CR_SHARED_MEMORY_CONNECT_ABANDONED_ERROR 2045
#define CR_SHARED_MEMORY_CONNECT_SET_ERROR 2046
#define CR_CONN_UNKNOW_PROTOCOL 2047
#define CR_INVALID_CONN_HANDLE 2048
#define CR_SECURE_AUTH 2049
#define CR_FETCH_CANCELED 2050
#define CR_NO_DATA 2051
#define CR_NO_STMT_METADATA 2052
#define CR_NO_RESULT_SET 2053
#define CR_NOT_IMPLEMENTED 2054
#define CR_SERVER_LOST_EXTENDED 2055
#define CR_STMT_CLOSED 2056
#define CR_NEW_STMT_METADATA 2057
#define CR_ALREADY_CONNECTED 2058
#define CR_AUTH_PLUGIN_CANNOT_LOAD 2059
#define CR_DUPLICATE_CONNECTION_ATTR 2060
#define CR_AUTH_PLUGIN_ERR 2061
#define CR_ERROR_LAST /*Copy last error nr:*/ 2061
/* Add error numbers before CR_ERROR_LAST and change it accordingly. */
#endif /* ERRMSG_INCLUDED */

View File

@ -0,0 +1,60 @@
/* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/*
Data structures for mysys/my_alloc.c (root memory allocator)
*/
#ifndef _my_alloc_h
#define _my_alloc_h
#define ALLOC_MAX_BLOCK_TO_DROP 4096
#define ALLOC_MAX_BLOCK_USAGE_BEFORE_DROP 10
#ifdef __cplusplus
extern "C" {
#endif
typedef struct st_used_mem
{ /* struct for once_alloc (block) */
struct st_used_mem *next; /* Next block in use */
unsigned int left; /* memory left in block */
unsigned int size; /* size of block */
} USED_MEM;
typedef struct st_mem_root
{
USED_MEM *free; /* blocks with free memory in it */
USED_MEM *used; /* blocks almost without free memory */
USED_MEM *pre_alloc; /* preallocated block */
/* if block have less memory it will be put in 'used' list */
size_t min_malloc;
size_t block_size; /* initial block size */
unsigned int block_num; /* allocated blocks counter */
/*
first free block in queue test counter (if it exceed
MAX_BLOCK_USAGE_BEFORE_DROP block will be dropped in 'used' list)
*/
unsigned int first_block_usage;
void (*error_handler)(void);
} MEM_ROOT;
#ifdef __cplusplus
}
#endif
#endif

View File

@ -0,0 +1,45 @@
/* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#ifndef _list_h_
#define _list_h_
#ifdef __cplusplus
extern "C" {
#endif
typedef struct st_list {
struct st_list *prev,*next;
void *data;
} LIST;
typedef int (*list_walk_action)(void *,void *);
extern LIST *list_add(LIST *root,LIST *element);
extern LIST *list_delete(LIST *root,LIST *element);
extern LIST *list_cons(void *data,LIST *root);
extern LIST *list_reverse(LIST *root);
extern void list_free(LIST *root,unsigned int free_data);
extern unsigned int list_length(LIST *);
extern int list_walk(LIST *,list_walk_action action,unsigned char * argument);
#define list_rest(a) ((a)->next)
#define list_push(a,b) (a)=list_cons((b),(a))
#define list_pop(A) {LIST *old=(A); (A)=list_delete(old,old); my_free(old); }
#ifdef __cplusplus
}
#endif
#endif

View File

@ -0,0 +1,739 @@
/* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/*
This file defines the client API to MySQL and also the ABI of the
dynamically linked libmysqlclient.
The ABI should never be changed in a released product of MySQL,
thus you need to take great care when changing the file. In case
the file is changed so the ABI is broken, you must also update
the SHARED_LIB_MAJOR_VERSION in cmake/mysql_version.cmake
*/
#ifndef _mysql_h
#define _mysql_h
#ifdef _AIX /* large-file support will break without this */
#include <standards.h>
#endif
#ifdef __CYGWIN__ /* CYGWIN implements a UNIX API */
#undef WIN
#undef _WIN
#undef _WIN32
#undef _WIN64
#undef __WIN__
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifndef MY_GLOBAL_INCLUDED /* If not standard header */
#ifndef MYSQL_ABI_CHECK
#include <sys/types.h>
#endif
#ifdef __LCC__
#include <winsock2.h> /* For windows */
#endif
typedef char my_bool;
#if (defined(_WIN32) || defined(_WIN64)) && !defined(__WIN__)
#define __WIN__
#endif
#if !defined(__WIN__)
#define STDCALL
#else
#define STDCALL __stdcall
#endif
#ifndef my_socket_defined
#ifdef __WIN__
#define my_socket SOCKET
#else
typedef int my_socket;
#endif /* __WIN__ */
#endif /* my_socket_defined */
#endif /* MY_GLOBAL_INCLUDED */
#include "mysql_version.h"
#include "mysql_com.h"
#include "mysql_time.h"
#include "my_list.h" /* for LISTs used in 'MYSQL' and 'MYSQL_STMT' */
extern unsigned int mysql_port;
extern char *mysql_unix_port;
#define CLIENT_NET_READ_TIMEOUT 365*24*3600 /* Timeout on read */
#define CLIENT_NET_WRITE_TIMEOUT 365*24*3600 /* Timeout on write */
#define IS_PRI_KEY(n) ((n) & PRI_KEY_FLAG)
#define IS_NOT_NULL(n) ((n) & NOT_NULL_FLAG)
#define IS_BLOB(n) ((n) & BLOB_FLAG)
/**
Returns true if the value is a number which does not need quotes for
the sql_lex.cc parser to parse correctly.
*/
#define IS_NUM(t) (((t) <= MYSQL_TYPE_INT24 && (t) != MYSQL_TYPE_TIMESTAMP) || (t) == MYSQL_TYPE_YEAR || (t) == MYSQL_TYPE_NEWDECIMAL)
#define IS_LONGDATA(t) ((t) >= MYSQL_TYPE_TINY_BLOB && (t) <= MYSQL_TYPE_STRING)
typedef struct st_mysql_field {
char *name; /* Name of column */
char *org_name; /* Original column name, if an alias */
char *table; /* Table of column if column was a field */
char *org_table; /* Org table name, if table was an alias */
char *db; /* Database for table */
char *catalog; /* Catalog for table */
char *def; /* Default value (set by mysql_list_fields) */
unsigned long length; /* Width of column (create length) */
unsigned long max_length; /* Max width for selected set */
unsigned int name_length;
unsigned int org_name_length;
unsigned int table_length;
unsigned int org_table_length;
unsigned int db_length;
unsigned int catalog_length;
unsigned int def_length;
unsigned int flags; /* Div flags */
unsigned int decimals; /* Number of decimals in field */
unsigned int charsetnr; /* Character set */
enum enum_field_types type; /* Type of field. See mysql_com.h for types */
void *extension;
} MYSQL_FIELD;
typedef char **MYSQL_ROW; /* return data as array of strings */
typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */
#ifndef MY_GLOBAL_INCLUDED
#if defined(NO_CLIENT_LONG_LONG)
typedef unsigned long my_ulonglong;
#elif defined (__WIN__)
typedef unsigned __int64 my_ulonglong;
#else
typedef unsigned long long my_ulonglong;
#endif
#endif
#include "typelib.h"
#define MYSQL_COUNT_ERROR (~(my_ulonglong) 0)
/* backward compatibility define - to be removed eventually */
#define ER_WARN_DATA_TRUNCATED WARN_DATA_TRUNCATED
typedef struct st_mysql_rows {
struct st_mysql_rows *next; /* list of rows */
MYSQL_ROW data;
unsigned long length;
} MYSQL_ROWS;
typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */
#include "my_alloc.h"
typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
typedef struct st_mysql_data {
MYSQL_ROWS *data;
struct embedded_query_result *embedded_info;
MEM_ROOT alloc;
my_ulonglong rows;
unsigned int fields;
/* extra info for embedded library */
void *extension;
} MYSQL_DATA;
enum mysql_option
{
MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE,
MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP,
MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME, MYSQL_OPT_LOCAL_INFILE,
MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_READ_TIMEOUT,
MYSQL_OPT_WRITE_TIMEOUT, MYSQL_OPT_USE_RESULT,
MYSQL_OPT_USE_REMOTE_CONNECTION, MYSQL_OPT_USE_EMBEDDED_CONNECTION,
MYSQL_OPT_GUESS_CONNECTION, MYSQL_SET_CLIENT_IP, MYSQL_SECURE_AUTH,
MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_RECONNECT,
MYSQL_OPT_SSL_VERIFY_SERVER_CERT, MYSQL_PLUGIN_DIR, MYSQL_DEFAULT_AUTH,
MYSQL_OPT_BIND,
MYSQL_OPT_SSL_KEY, MYSQL_OPT_SSL_CERT,
MYSQL_OPT_SSL_CA, MYSQL_OPT_SSL_CAPATH, MYSQL_OPT_SSL_CIPHER,
MYSQL_OPT_SSL_CRL, MYSQL_OPT_SSL_CRLPATH,
MYSQL_OPT_CONNECT_ATTR_RESET, MYSQL_OPT_CONNECT_ATTR_ADD,
MYSQL_OPT_CONNECT_ATTR_DELETE,
MYSQL_SERVER_PUBLIC_KEY,
MYSQL_ENABLE_CLEARTEXT_PLUGIN,
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
};
/**
@todo remove the "extension", move st_mysql_options completely
out of mysql.h
*/
struct st_mysql_options_extention;
struct st_mysql_options {
unsigned int connect_timeout, read_timeout, write_timeout;
unsigned int port, protocol;
unsigned long client_flag;
char *host,*user,*password,*unix_socket,*db;
struct st_dynamic_array *init_commands;
char *my_cnf_file,*my_cnf_group, *charset_dir, *charset_name;
char *ssl_key; /* PEM key file */
char *ssl_cert; /* PEM cert file */
char *ssl_ca; /* PEM CA file */
char *ssl_capath; /* PEM directory of CA-s? */
char *ssl_cipher; /* cipher to use */
char *shared_memory_base_name;
unsigned long max_allowed_packet;
my_bool use_ssl; /* if to use SSL or not */
my_bool compress,named_pipe;
my_bool unused1;
my_bool unused2;
my_bool unused3;
my_bool unused4;
enum mysql_option methods_to_use;
union {
/*
The ip/hostname to use when authenticating
client against embedded server built with
grant tables - only used in embedded server
*/
char *client_ip;
/*
The local address to bind when connecting to
remote server - not used in embedded server
*/
char *bind_address;
} ci;
/* Refuse client connecting to server if it uses old (pre-4.1.1) protocol */
my_bool secure_auth;
/* 0 - never report, 1 - always report (default) */
my_bool report_data_truncation;
/* function pointers for local infile support */
int (*local_infile_init)(void **, const char *, void *);
int (*local_infile_read)(void *, char *, unsigned int);
void (*local_infile_end)(void *);
int (*local_infile_error)(void *, char *, unsigned int);
void *local_infile_userdata;
struct st_mysql_options_extention *extension;
};
enum mysql_status
{
MYSQL_STATUS_READY, MYSQL_STATUS_GET_RESULT, MYSQL_STATUS_USE_RESULT,
MYSQL_STATUS_STATEMENT_GET_RESULT
};
enum mysql_protocol_type
{
MYSQL_PROTOCOL_DEFAULT, MYSQL_PROTOCOL_TCP, MYSQL_PROTOCOL_SOCKET,
MYSQL_PROTOCOL_PIPE, MYSQL_PROTOCOL_MEMORY
};
typedef struct character_set
{
unsigned int number; /* character set number */
unsigned int state; /* character set state */
const char *csname; /* collation name */
const char *name; /* character set name */
const char *comment; /* comment */
const char *dir; /* character set directory */
unsigned int mbminlen; /* min. length for multibyte strings */
unsigned int mbmaxlen; /* max. length for multibyte strings */
} MY_CHARSET_INFO;
struct st_mysql_methods;
struct st_mysql_stmt;
typedef struct st_mysql
{
NET net; /* Communication parameters */
unsigned char *connector_fd; /* ConnectorFd for SSL */
char *host,*user,*passwd,*unix_socket,*server_version,*host_info;
char *info, *db;
struct charset_info_st *charset;
MYSQL_FIELD *fields;
MEM_ROOT field_alloc;
my_ulonglong affected_rows;
my_ulonglong insert_id; /* id if insert on table with NEXTNR */
my_ulonglong extra_info; /* Not used */
unsigned long thread_id; /* Id for connection in server */
unsigned long packet_length;
unsigned int port;
unsigned long client_flag,server_capabilities;
unsigned int protocol_version;
unsigned int field_count;
unsigned int server_status;
unsigned int server_language;
unsigned int warning_count;
struct st_mysql_options options;
enum mysql_status status;
my_bool free_me; /* If free in mysql_close */
my_bool reconnect; /* set to 1 if automatic reconnect */
/* session-wide random string */
char scramble[SCRAMBLE_LENGTH+1];
my_bool unused1;
void *unused2, *unused3, *unused4, *unused5;
LIST *stmts; /* list of all statements */
const struct st_mysql_methods *methods;
void *thd;
/*
Points to boolean flag in MYSQL_RES or MYSQL_STMT. We set this flag
from mysql_stmt_close if close had to cancel result set of this object.
*/
my_bool *unbuffered_fetch_owner;
/* needed for embedded server - no net buffer to store the 'info' */
char *info_buffer;
void *extension;
} MYSQL;
typedef struct st_mysql_res {
my_ulonglong row_count;
MYSQL_FIELD *fields;
MYSQL_DATA *data;
MYSQL_ROWS *data_cursor;
unsigned long *lengths; /* column lengths of current row */
MYSQL *handle; /* for unbuffered reads */
const struct st_mysql_methods *methods;
MYSQL_ROW row; /* If unbuffered read */
MYSQL_ROW current_row; /* buffer to current row */
MEM_ROOT field_alloc;
unsigned int field_count, current_field;
my_bool eof; /* Used by mysql_fetch_row */
/* mysql_stmt_close() had to cancel this result */
my_bool unbuffered_fetch_cancelled;
void *extension;
} MYSQL_RES;
#if !defined(MYSQL_SERVER) && !defined(MYSQL_CLIENT)
#define MYSQL_CLIENT
#endif
typedef struct st_mysql_parameters
{
unsigned long *p_max_allowed_packet;
unsigned long *p_net_buffer_length;
void *extension;
} MYSQL_PARAMETERS;
#if !defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet)
#define net_buffer_length (*mysql_get_parameters()->p_net_buffer_length)
#endif
/*
Set up and bring down the server; to ensure that applications will
work when linked against either the standard client library or the
embedded server library, these functions should be called.
*/
int STDCALL mysql_server_init(int argc, char **argv, char **groups);
void STDCALL mysql_server_end(void);
/*
mysql_server_init/end need to be called when using libmysqld or
libmysqlclient (exactly, mysql_server_init() is called by mysql_init() so
you don't need to call it explicitely; but you need to call
mysql_server_end() to free memory). The names are a bit misleading
(mysql_SERVER* to be used when using libmysqlCLIENT). So we add more general
names which suit well whether you're using libmysqld or libmysqlclient. We
intend to promote these aliases over the mysql_server* ones.
*/
#define mysql_library_init mysql_server_init
#define mysql_library_end mysql_server_end
MYSQL_PARAMETERS *STDCALL mysql_get_parameters(void);
/*
Set up and bring down a thread; these function should be called
for each thread in an application which opens at least one MySQL
connection. All uses of the connection(s) should be between these
function calls.
*/
my_bool STDCALL mysql_thread_init(void);
void STDCALL mysql_thread_end(void);
/*
Functions to get information from the MYSQL and MYSQL_RES structures
Should definitely be used if one uses shared libraries.
*/
my_ulonglong STDCALL mysql_num_rows(MYSQL_RES *res);
unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);
my_bool STDCALL mysql_eof(MYSQL_RES *res);
MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res,
unsigned int fieldnr);
MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES *res);
MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res);
MYSQL_FIELD_OFFSET STDCALL mysql_field_tell(MYSQL_RES *res);
unsigned int STDCALL mysql_field_count(MYSQL *mysql);
my_ulonglong STDCALL mysql_affected_rows(MYSQL *mysql);
my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql);
unsigned int STDCALL mysql_errno(MYSQL *mysql);
const char * STDCALL mysql_error(MYSQL *mysql);
const char *STDCALL mysql_sqlstate(MYSQL *mysql);
unsigned int STDCALL mysql_warning_count(MYSQL *mysql);
const char * STDCALL mysql_info(MYSQL *mysql);
unsigned long STDCALL mysql_thread_id(MYSQL *mysql);
const char * STDCALL mysql_character_set_name(MYSQL *mysql);
int STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);
MYSQL * STDCALL mysql_init(MYSQL *mysql);
my_bool STDCALL mysql_ssl_set(MYSQL *mysql, const char *key,
const char *cert, const char *ca,
const char *capath, const char *cipher);
const char * STDCALL mysql_get_ssl_cipher(MYSQL *mysql);
my_bool STDCALL mysql_change_user(MYSQL *mysql, const char *user,
const char *passwd, const char *db);
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
const char *user,
const char *passwd,
const char *db,
unsigned int port,
const char *unix_socket,
unsigned long clientflag);
int STDCALL mysql_select_db(MYSQL *mysql, const char *db);
int STDCALL mysql_query(MYSQL *mysql, const char *q);
int STDCALL mysql_send_query(MYSQL *mysql, const char *q,
unsigned long length);
int STDCALL mysql_real_query(MYSQL *mysql, const char *q,
unsigned long length);
MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);
MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);
void STDCALL mysql_get_character_set_info(MYSQL *mysql,
MY_CHARSET_INFO *charset);
/* local infile support */
#define LOCAL_INFILE_ERROR_LEN 512
void
mysql_set_local_infile_handler(MYSQL *mysql,
int (*local_infile_init)(void **, const char *,
void *),
int (*local_infile_read)(void *, char *,
unsigned int),
void (*local_infile_end)(void *),
int (*local_infile_error)(void *, char*,
unsigned int),
void *);
void
mysql_set_local_infile_default(MYSQL *mysql);
int STDCALL mysql_shutdown(MYSQL *mysql,
enum mysql_enum_shutdown_level
shutdown_level);
int STDCALL mysql_dump_debug_info(MYSQL *mysql);
int STDCALL mysql_refresh(MYSQL *mysql,
unsigned int refresh_options);
int STDCALL mysql_kill(MYSQL *mysql,unsigned long pid);
int STDCALL mysql_set_server_option(MYSQL *mysql,
enum enum_mysql_set_option
option);
int STDCALL mysql_ping(MYSQL *mysql);
const char * STDCALL mysql_stat(MYSQL *mysql);
const char * STDCALL mysql_get_server_info(MYSQL *mysql);
const char * STDCALL mysql_get_client_info(void);
unsigned long STDCALL mysql_get_client_version(void);
const char * STDCALL mysql_get_host_info(MYSQL *mysql);
unsigned long STDCALL mysql_get_server_version(MYSQL *mysql);
unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql);
MYSQL_RES * STDCALL mysql_list_dbs(MYSQL *mysql,const char *wild);
MYSQL_RES * STDCALL mysql_list_tables(MYSQL *mysql,const char *wild);
MYSQL_RES * STDCALL mysql_list_processes(MYSQL *mysql);
int STDCALL mysql_options(MYSQL *mysql,enum mysql_option option,
const void *arg);
int STDCALL mysql_options4(MYSQL *mysql,enum mysql_option option,
const void *arg1, const void *arg2);
void STDCALL mysql_free_result(MYSQL_RES *result);
void STDCALL mysql_data_seek(MYSQL_RES *result,
my_ulonglong offset);
MYSQL_ROW_OFFSET STDCALL mysql_row_seek(MYSQL_RES *result,
MYSQL_ROW_OFFSET offset);
MYSQL_FIELD_OFFSET STDCALL mysql_field_seek(MYSQL_RES *result,
MYSQL_FIELD_OFFSET offset);
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
unsigned long * STDCALL mysql_fetch_lengths(MYSQL_RES *result);
MYSQL_FIELD * STDCALL mysql_fetch_field(MYSQL_RES *result);
MYSQL_RES * STDCALL mysql_list_fields(MYSQL *mysql, const char *table,
const char *wild);
unsigned long STDCALL mysql_escape_string(char *to,const char *from,
unsigned long from_length);
unsigned long STDCALL mysql_hex_string(char *to,const char *from,
unsigned long from_length);
unsigned long STDCALL mysql_real_escape_string(MYSQL *mysql,
char *to,const char *from,
unsigned long length);
void STDCALL mysql_debug(const char *debug);
void STDCALL myodbc_remove_escape(MYSQL *mysql,char *name);
unsigned int STDCALL mysql_thread_safe(void);
my_bool STDCALL mysql_embedded(void);
my_bool STDCALL mysql_read_query_result(MYSQL *mysql);
/*
The following definitions are added for the enhanced
client-server protocol
*/
/* statement state */
enum enum_mysql_stmt_state
{
MYSQL_STMT_INIT_DONE= 1, MYSQL_STMT_PREPARE_DONE, MYSQL_STMT_EXECUTE_DONE,
MYSQL_STMT_FETCH_DONE
};
/*
This structure is used to define bind information, and
internally by the client library.
Public members with their descriptions are listed below
(conventionally `On input' refers to the binds given to
mysql_stmt_bind_param, `On output' refers to the binds given
to mysql_stmt_bind_result):
buffer_type - One of the MYSQL_* types, used to describe
the host language type of buffer.
On output: if column type is different from
buffer_type, column value is automatically converted
to buffer_type before it is stored in the buffer.
buffer - On input: points to the buffer with input data.
On output: points to the buffer capable to store
output data.
The type of memory pointed by buffer must correspond
to buffer_type. See the correspondence table in
the comment to mysql_stmt_bind_param.
The two above members are mandatory for any kind of bind.
buffer_length - the length of the buffer. You don't have to set
it for any fixed length buffer: float, double,
int, etc. It must be set however for variable-length
types, such as BLOBs or STRINGs.
length - On input: in case when lengths of input values
are different for each execute, you can set this to
point at a variable containining value length. This
way the value length can be different in each execute.
If length is not NULL, buffer_length is not used.
Note, length can even point at buffer_length if
you keep bind structures around while fetching:
this way you can change buffer_length before
each execution, everything will work ok.
On output: if length is set, mysql_stmt_fetch will
write column length into it.
is_null - On input: points to a boolean variable that should
be set to TRUE for NULL values.
This member is useful only if your data may be
NULL in some but not all cases.
If your data is never NULL, is_null should be set to 0.
If your data is always NULL, set buffer_type
to MYSQL_TYPE_NULL, and is_null will not be used.
is_unsigned - On input: used to signify that values provided for one
of numeric types are unsigned.
On output describes signedness of the output buffer.
If, taking into account is_unsigned flag, column data
is out of range of the output buffer, data for this column
is regarded truncated. Note that this has no correspondence
to the sign of result set column, if you need to find it out
use mysql_stmt_result_metadata.
error - where to write a truncation error if it is present.
possible error value is:
0 no truncation
1 value is out of range or buffer is too small
Please note that MYSQL_BIND also has internals members.
*/
typedef struct st_mysql_bind
{
unsigned long *length; /* output length pointer */
my_bool *is_null; /* Pointer to null indicator */
void *buffer; /* buffer to get/put data */
/* set this if you want to track data truncations happened during fetch */
my_bool *error;
unsigned char *row_ptr; /* for the current data position */
void (*store_param_func)(NET *net, struct st_mysql_bind *param);
void (*fetch_result)(struct st_mysql_bind *, MYSQL_FIELD *,
unsigned char **row);
void (*skip_result)(struct st_mysql_bind *, MYSQL_FIELD *,
unsigned char **row);
/* output buffer length, must be set when fetching str/binary */
unsigned long buffer_length;
unsigned long offset; /* offset position for char/binary fetch */
unsigned long length_value; /* Used if length is 0 */
unsigned int param_number; /* For null count and error messages */
unsigned int pack_length; /* Internal length for packed data */
enum enum_field_types buffer_type; /* buffer type */
my_bool error_value; /* used if error is 0 */
my_bool is_unsigned; /* set if integer type is unsigned */
my_bool long_data_used; /* If used with mysql_send_long_data */
my_bool is_null_value; /* Used if is_null is 0 */
void *extension;
} MYSQL_BIND;
struct st_mysql_stmt_extension;
/* statement handler */
typedef struct st_mysql_stmt
{
MEM_ROOT mem_root; /* root allocations */
LIST list; /* list to keep track of all stmts */
MYSQL *mysql; /* connection handle */
MYSQL_BIND *params; /* input parameters */
MYSQL_BIND *bind; /* output parameters */
MYSQL_FIELD *fields; /* result set metadata */
MYSQL_DATA result; /* cached result set */
MYSQL_ROWS *data_cursor; /* current row in cached result */
/*
mysql_stmt_fetch() calls this function to fetch one row (it's different
for buffered, unbuffered and cursor fetch).
*/
int (*read_row_func)(struct st_mysql_stmt *stmt,
unsigned char **row);
/* copy of mysql->affected_rows after statement execution */
my_ulonglong affected_rows;
my_ulonglong insert_id; /* copy of mysql->insert_id */
unsigned long stmt_id; /* Id for prepared statement */
unsigned long flags; /* i.e. type of cursor to open */
unsigned long prefetch_rows; /* number of rows per one COM_FETCH */
/*
Copied from mysql->server_status after execute/fetch to know
server-side cursor status for this statement.
*/
unsigned int server_status;
unsigned int last_errno; /* error code */
unsigned int param_count; /* input parameter count */
unsigned int field_count; /* number of columns in result set */
enum enum_mysql_stmt_state state; /* statement state */
char last_error[MYSQL_ERRMSG_SIZE]; /* error message */
char sqlstate[SQLSTATE_LENGTH+1];
/* Types of input parameters should be sent to server */
my_bool send_types_to_server;
my_bool bind_param_done; /* input buffers were supplied */
unsigned char bind_result_done; /* output buffers were supplied */
/* mysql_stmt_close() had to cancel this result */
my_bool unbuffered_fetch_cancelled;
/*
Is set to true if we need to calculate field->max_length for
metadata fields when doing mysql_stmt_store_result.
*/
my_bool update_max_length;
struct st_mysql_stmt_extension *extension;
} MYSQL_STMT;
enum enum_stmt_attr_type
{
/*
When doing mysql_stmt_store_result calculate max_length attribute
of statement metadata. This is to be consistent with the old API,
where this was done automatically.
In the new API we do that only by request because it slows down
mysql_stmt_store_result sufficiently.
*/
STMT_ATTR_UPDATE_MAX_LENGTH,
/*
unsigned long with combination of cursor flags (read only, for update,
etc)
*/
STMT_ATTR_CURSOR_TYPE,
/*
Amount of rows to retrieve from server per one fetch if using cursors.
Accepts unsigned long attribute in the range 1 - ulong_max
*/
STMT_ATTR_PREFETCH_ROWS
};
MYSQL_STMT * STDCALL mysql_stmt_init(MYSQL *mysql);
int STDCALL mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query,
unsigned long length);
int STDCALL mysql_stmt_execute(MYSQL_STMT *stmt);
int STDCALL mysql_stmt_fetch(MYSQL_STMT *stmt);
int STDCALL mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *bind_arg,
unsigned int column,
unsigned long offset);
int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt);
unsigned long STDCALL mysql_stmt_param_count(MYSQL_STMT * stmt);
my_bool STDCALL mysql_stmt_attr_set(MYSQL_STMT *stmt,
enum enum_stmt_attr_type attr_type,
const void *attr);
my_bool STDCALL mysql_stmt_attr_get(MYSQL_STMT *stmt,
enum enum_stmt_attr_type attr_type,
void *attr);
my_bool STDCALL mysql_stmt_bind_param(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
my_bool STDCALL mysql_stmt_close(MYSQL_STMT * stmt);
my_bool STDCALL mysql_stmt_reset(MYSQL_STMT * stmt);
my_bool STDCALL mysql_stmt_free_result(MYSQL_STMT *stmt);
my_bool STDCALL mysql_stmt_send_long_data(MYSQL_STMT *stmt,
unsigned int param_number,
const char *data,
unsigned long length);
MYSQL_RES *STDCALL mysql_stmt_result_metadata(MYSQL_STMT *stmt);
MYSQL_RES *STDCALL mysql_stmt_param_metadata(MYSQL_STMT *stmt);
unsigned int STDCALL mysql_stmt_errno(MYSQL_STMT * stmt);
const char *STDCALL mysql_stmt_error(MYSQL_STMT * stmt);
const char *STDCALL mysql_stmt_sqlstate(MYSQL_STMT * stmt);
MYSQL_ROW_OFFSET STDCALL mysql_stmt_row_seek(MYSQL_STMT *stmt,
MYSQL_ROW_OFFSET offset);
MYSQL_ROW_OFFSET STDCALL mysql_stmt_row_tell(MYSQL_STMT *stmt);
void STDCALL mysql_stmt_data_seek(MYSQL_STMT *stmt, my_ulonglong offset);
my_ulonglong STDCALL mysql_stmt_num_rows(MYSQL_STMT *stmt);
my_ulonglong STDCALL mysql_stmt_affected_rows(MYSQL_STMT *stmt);
my_ulonglong STDCALL mysql_stmt_insert_id(MYSQL_STMT *stmt);
unsigned int STDCALL mysql_stmt_field_count(MYSQL_STMT *stmt);
my_bool STDCALL mysql_commit(MYSQL * mysql);
my_bool STDCALL mysql_rollback(MYSQL * mysql);
my_bool STDCALL mysql_autocommit(MYSQL * mysql, my_bool auto_mode);
my_bool STDCALL mysql_more_results(MYSQL *mysql);
int STDCALL mysql_next_result(MYSQL *mysql);
int STDCALL mysql_stmt_next_result(MYSQL_STMT *stmt);
void STDCALL mysql_close(MYSQL *sock);
/* status return codes */
#define MYSQL_NO_DATA 100
#define MYSQL_DATA_TRUNCATED 101
#define mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT)
#ifdef USE_OLD_FUNCTIONS
MYSQL * STDCALL mysql_connect(MYSQL *mysql, const char *host,
const char *user, const char *passwd);
int STDCALL mysql_create_db(MYSQL *mysql, const char *DB);
int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB);
#endif
#define HAVE_MYSQL_REAL_CONNECT
#ifdef __cplusplus
}
#endif
#endif /* _mysql_h */

View File

@ -0,0 +1,602 @@
/* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/*
** Common definition between mysql server & client
*/
#ifndef _mysql_com_h
#define _mysql_com_h
#define HOSTNAME_LENGTH 60
#define SYSTEM_CHARSET_MBMAXLEN 3
#define NAME_CHAR_LEN 64 /* Field/table name length */
#define USERNAME_CHAR_LENGTH 16
#define NAME_LEN (NAME_CHAR_LEN*SYSTEM_CHARSET_MBMAXLEN)
#define USERNAME_LENGTH (USERNAME_CHAR_LENGTH*SYSTEM_CHARSET_MBMAXLEN)
#define MYSQL_AUTODETECT_CHARSET_NAME "auto"
#define SERVER_VERSION_LENGTH 60
#define SQLSTATE_LENGTH 5
/*
Maximum length of comments
*/
#define TABLE_COMMENT_INLINE_MAXLEN 180 /* pre 6.0: 60 characters */
#define TABLE_COMMENT_MAXLEN 2048
#define COLUMN_COMMENT_MAXLEN 1024
#define INDEX_COMMENT_MAXLEN 1024
#define TABLE_PARTITION_COMMENT_MAXLEN 1024
/*
USER_HOST_BUFF_SIZE -- length of string buffer, that is enough to contain
username and hostname parts of the user identifier with trailing zero in
MySQL standard format:
user_name_part@host_name_part\0
*/
#define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_LENGTH + 2
#define LOCAL_HOST "localhost"
#define LOCAL_HOST_NAMEDPIPE "."
#if defined(__WIN__) && !defined( _CUSTOMCONFIG_)
#define MYSQL_NAMEDPIPE "MySQL"
#define MYSQL_SERVICENAME "MySQL"
#endif /* __WIN__ */
/*
You should add new commands to the end of this list, otherwise old
servers won't be able to handle them as 'unsupported'.
*/
enum enum_server_command
{
COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST,
COM_CREATE_DB, COM_DROP_DB, COM_REFRESH, COM_SHUTDOWN, COM_STATISTICS,
COM_PROCESS_INFO, COM_CONNECT, COM_PROCESS_KILL, COM_DEBUG, COM_PING,
COM_TIME, COM_DELAYED_INSERT, COM_CHANGE_USER, COM_BINLOG_DUMP,
COM_TABLE_DUMP, COM_CONNECT_OUT, COM_REGISTER_SLAVE,
COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE,
COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH, COM_DAEMON,
COM_BINLOG_DUMP_GTID,
/* don't forget to update const char *command_name[] in sql_parse.cc */
/* Must be last */
COM_END
};
/*
Length of random string sent by server on handshake; this is also length of
obfuscated password, recieved from client
*/
#define SCRAMBLE_LENGTH 20
#define SCRAMBLE_LENGTH_323 8
/* length of password stored in the db: new passwords are preceeded with '*' */
#define SCRAMBLED_PASSWORD_CHAR_LENGTH (SCRAMBLE_LENGTH*2+1)
#define SCRAMBLED_PASSWORD_CHAR_LENGTH_323 (SCRAMBLE_LENGTH_323*2)
#define NOT_NULL_FLAG 1 /* Field can't be NULL */
#define PRI_KEY_FLAG 2 /* Field is part of a primary key */
#define UNIQUE_KEY_FLAG 4 /* Field is part of a unique key */
#define MULTIPLE_KEY_FLAG 8 /* Field is part of a key */
#define BLOB_FLAG 16 /* Field is a blob */
#define UNSIGNED_FLAG 32 /* Field is unsigned */
#define ZEROFILL_FLAG 64 /* Field is zerofill */
#define BINARY_FLAG 128 /* Field is binary */
/* The following are only sent to new clients */
#define ENUM_FLAG 256 /* field is an enum */
#define AUTO_INCREMENT_FLAG 512 /* field is a autoincrement field */
#define TIMESTAMP_FLAG 1024 /* Field is a timestamp */
#define SET_FLAG 2048 /* field is a set */
#define NO_DEFAULT_VALUE_FLAG 4096 /* Field doesn't have default value */
#define ON_UPDATE_NOW_FLAG 8192 /* Field is set to NOW on UPDATE */
#define NUM_FLAG 32768 /* Field is num (for clients) */
#define PART_KEY_FLAG 16384 /* Intern; Part of some key */
#define GROUP_FLAG 32768 /* Intern: Group field */
#define UNIQUE_FLAG 65536 /* Intern: Used by sql_yacc */
#define BINCMP_FLAG 131072 /* Intern: Used by sql_yacc */
#define GET_FIXED_FIELDS_FLAG (1 << 18) /* Used to get fields in item tree */
#define FIELD_IN_PART_FUNC_FLAG (1 << 19)/* Field part of partition func */
/**
Intern: Field in TABLE object for new version of altered table,
which participates in a newly added index.
*/
#define FIELD_IN_ADD_INDEX (1 << 20)
#define FIELD_IS_RENAMED (1<< 21) /* Intern: Field is being renamed */
#define FIELD_FLAGS_STORAGE_MEDIA 22 /* Field storage media, bit 22-23 */
#define FIELD_FLAGS_STORAGE_MEDIA_MASK (3 << FIELD_FLAGS_STORAGE_MEDIA)
#define FIELD_FLAGS_COLUMN_FORMAT 24 /* Field column format, bit 24-25 */
#define FIELD_FLAGS_COLUMN_FORMAT_MASK (3 << FIELD_FLAGS_COLUMN_FORMAT)
#define FIELD_IS_DROPPED (1<< 26) /* Intern: Field is being dropped */
#define REFRESH_GRANT 1 /* Refresh grant tables */
#define REFRESH_LOG 2 /* Start on new log file */
#define REFRESH_TABLES 4 /* close all tables */
#define REFRESH_HOSTS 8 /* Flush host cache */
#define REFRESH_STATUS 16 /* Flush status variables */
#define REFRESH_THREADS 32 /* Flush thread cache */
#define REFRESH_SLAVE 64 /* Reset master info and restart slave
thread */
#define REFRESH_MASTER 128 /* Remove all bin logs in the index
and truncate the index */
#define REFRESH_ERROR_LOG 256 /* Rotate only the erorr log */
#define REFRESH_ENGINE_LOG 512 /* Flush all storage engine logs */
#define REFRESH_BINARY_LOG 1024 /* Flush the binary log */
#define REFRESH_RELAY_LOG 2048 /* Flush the relay log */
#define REFRESH_GENERAL_LOG 4096 /* Flush the general log */
#define REFRESH_SLOW_LOG 8192 /* Flush the slow query log */
/* The following can't be set with mysql_refresh() */
#define REFRESH_READ_LOCK 16384 /* Lock tables for read */
#define REFRESH_FAST 32768 /* Intern flag */
/* RESET (remove all queries) from query cache */
#define REFRESH_QUERY_CACHE 65536
#define REFRESH_QUERY_CACHE_FREE 0x20000L /* pack query cache */
#define REFRESH_DES_KEY_FILE 0x40000L
#define REFRESH_USER_RESOURCES 0x80000L
#define REFRESH_FOR_EXPORT 0x100000L /* FLUSH TABLES ... FOR EXPORT */
#define CLIENT_LONG_PASSWORD 1 /* new more secure passwords */
#define CLIENT_FOUND_ROWS 2 /* Found instead of affected rows */
#define CLIENT_LONG_FLAG 4 /* Get all column flags */
#define CLIENT_CONNECT_WITH_DB 8 /* One can specify db on connect */
#define CLIENT_NO_SCHEMA 16 /* Don't allow database.table.column */
#define CLIENT_COMPRESS 32 /* Can use compression protocol */
#define CLIENT_ODBC 64 /* Odbc client */
#define CLIENT_LOCAL_FILES 128 /* Can use LOAD DATA LOCAL */
#define CLIENT_IGNORE_SPACE 256 /* Ignore spaces before '(' */
#define CLIENT_PROTOCOL_41 512 /* New 4.1 protocol */
#define CLIENT_INTERACTIVE 1024 /* This is an interactive client */
#define CLIENT_SSL 2048 /* Switch to SSL after handshake */
#define CLIENT_IGNORE_SIGPIPE 4096 /* IGNORE sigpipes */
#define CLIENT_TRANSACTIONS 8192 /* Client knows about transactions */
#define CLIENT_RESERVED 16384 /* Old flag for 4.1 protocol */
#define CLIENT_SECURE_CONNECTION 32768 /* New 4.1 authentication */
#define CLIENT_MULTI_STATEMENTS (1UL << 16) /* Enable/disable multi-stmt support */
#define CLIENT_MULTI_RESULTS (1UL << 17) /* Enable/disable multi-results */
#define CLIENT_PS_MULTI_RESULTS (1UL << 18) /* Multi-results in PS-protocol */
#define CLIENT_PLUGIN_AUTH (1UL << 19) /* Client supports plugin authentication */
#define CLIENT_CONNECT_ATTRS (1UL << 20) /* Client supports connection attributes */
/* Enable authentication response packet to be larger than 255 bytes. */
#define CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA (1UL << 21)
/* Don't close the connection for a connection with expired password. */
#define CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS (1UL << 22)
#define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30)
#define CLIENT_REMEMBER_OPTIONS (1UL << 31)
#ifdef HAVE_COMPRESS
#define CAN_CLIENT_COMPRESS CLIENT_COMPRESS
#else
#define CAN_CLIENT_COMPRESS 0
#endif
/* Gather all possible capabilites (flags) supported by the server */
#define CLIENT_ALL_FLAGS (CLIENT_LONG_PASSWORD \
| CLIENT_FOUND_ROWS \
| CLIENT_LONG_FLAG \
| CLIENT_CONNECT_WITH_DB \
| CLIENT_NO_SCHEMA \
| CLIENT_COMPRESS \
| CLIENT_ODBC \
| CLIENT_LOCAL_FILES \
| CLIENT_IGNORE_SPACE \
| CLIENT_PROTOCOL_41 \
| CLIENT_INTERACTIVE \
| CLIENT_SSL \
| CLIENT_IGNORE_SIGPIPE \
| CLIENT_TRANSACTIONS \
| CLIENT_RESERVED \
| CLIENT_SECURE_CONNECTION \
| CLIENT_MULTI_STATEMENTS \
| CLIENT_MULTI_RESULTS \
| CLIENT_PS_MULTI_RESULTS \
| CLIENT_SSL_VERIFY_SERVER_CERT \
| CLIENT_REMEMBER_OPTIONS \
| CLIENT_PLUGIN_AUTH \
| CLIENT_CONNECT_ATTRS \
| CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA \
| CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS \
)
/*
Switch off the flags that are optional and depending on build flags
If any of the optional flags is supported by the build it will be switched
on before sending to the client during the connection handshake.
*/
#define CLIENT_BASIC_FLAGS (((CLIENT_ALL_FLAGS & ~CLIENT_SSL) \
& ~CLIENT_COMPRESS) \
& ~CLIENT_SSL_VERIFY_SERVER_CERT)
/**
Is raised when a multi-statement transaction
has been started, either explicitly, by means
of BEGIN or COMMIT AND CHAIN, or
implicitly, by the first transactional
statement, when autocommit=off.
*/
#define SERVER_STATUS_IN_TRANS 1
#define SERVER_STATUS_AUTOCOMMIT 2 /* Server in auto_commit mode */
#define SERVER_MORE_RESULTS_EXISTS 8 /* Multi query - next query exists */
#define SERVER_QUERY_NO_GOOD_INDEX_USED 16
#define SERVER_QUERY_NO_INDEX_USED 32
/**
The server was able to fulfill the clients request and opened a
read-only non-scrollable cursor for a query. This flag comes
in reply to COM_STMT_EXECUTE and COM_STMT_FETCH commands.
*/
#define SERVER_STATUS_CURSOR_EXISTS 64
/**
This flag is sent when a read-only cursor is exhausted, in reply to
COM_STMT_FETCH command.
*/
#define SERVER_STATUS_LAST_ROW_SENT 128
#define SERVER_STATUS_DB_DROPPED 256 /* A database was dropped */
#define SERVER_STATUS_NO_BACKSLASH_ESCAPES 512
/**
Sent to the client if after a prepared statement reprepare
we discovered that the new statement returns a different
number of result set columns.
*/
#define SERVER_STATUS_METADATA_CHANGED 1024
#define SERVER_QUERY_WAS_SLOW 2048
/**
To mark ResultSet containing output parameter values.
*/
#define SERVER_PS_OUT_PARAMS 4096
/**
Set at the same time as SERVER_STATUS_IN_TRANS if the started
multi-statement transaction is a read-only transaction. Cleared
when the transaction commits or aborts. Since this flag is sent
to clients in OK and EOF packets, the flag indicates the
transaction status at the end of command execution.
*/
#define SERVER_STATUS_IN_TRANS_READONLY 8192
/**
Server status flags that must be cleared when starting
execution of a new SQL statement.
Flags from this set are only added to the
current server status by the execution engine, but
never removed -- the execution engine expects them
to disappear automagically by the next command.
*/
#define SERVER_STATUS_CLEAR_SET (SERVER_QUERY_NO_GOOD_INDEX_USED| \
SERVER_QUERY_NO_INDEX_USED|\
SERVER_MORE_RESULTS_EXISTS|\
SERVER_STATUS_METADATA_CHANGED |\
SERVER_QUERY_WAS_SLOW |\
SERVER_STATUS_DB_DROPPED |\
SERVER_STATUS_CURSOR_EXISTS|\
SERVER_STATUS_LAST_ROW_SENT)
#define MYSQL_ERRMSG_SIZE 512
#define NET_READ_TIMEOUT 30 /* Timeout on read */
#define NET_WRITE_TIMEOUT 60 /* Timeout on write */
#define NET_WAIT_TIMEOUT 8*60*60 /* Wait for new query */
#define ONLY_KILL_QUERY 1
struct st_vio; /* Only C */
typedef struct st_vio Vio;
#define MAX_TINYINT_WIDTH 3 /* Max width for a TINY w.o. sign */
#define MAX_SMALLINT_WIDTH 5 /* Max width for a SHORT w.o. sign */
#define MAX_MEDIUMINT_WIDTH 8 /* Max width for a INT24 w.o. sign */
#define MAX_INT_WIDTH 10 /* Max width for a LONG w.o. sign */
#define MAX_BIGINT_WIDTH 20 /* Max width for a LONGLONG */
#define MAX_CHAR_WIDTH 255 /* Max length for a CHAR colum */
#define MAX_BLOB_WIDTH 16777216 /* Default width for blob */
typedef struct st_net {
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
Vio *vio;
unsigned char *buff,*buff_end,*write_pos,*read_pos;
my_socket fd; /* For Perl DBI/dbd */
/*
The following variable is set if we are doing several queries in one
command ( as in LOAD TABLE ... FROM MASTER ),
and do not want to confuse the client with OK at the wrong time
*/
unsigned long remain_in_buf,length, buf_length, where_b;
unsigned long max_packet,max_packet_size;
unsigned int pkt_nr,compress_pkt_nr;
unsigned int write_timeout, read_timeout, retry_count;
int fcntl;
unsigned int *return_status;
unsigned char reading_or_writing;
char save_char;
my_bool unused1; /* Please remove with the next incompatible ABI change */
my_bool unused2; /* Please remove with the next incompatible ABI change */
my_bool compress;
my_bool unused3; /* Please remove with the next incompatible ABI change. */
/*
Pointer to query object in query cache, do not equal NULL (0) for
queries in cache that have not stored its results yet
*/
#endif
/*
Unused, please remove with the next incompatible ABI change.
*/
unsigned char *unused;
unsigned int last_errno;
unsigned char error;
my_bool unused4; /* Please remove with the next incompatible ABI change. */
my_bool unused5; /* Please remove with the next incompatible ABI change. */
/** Client library error message buffer. Actually belongs to struct MYSQL. */
char last_error[MYSQL_ERRMSG_SIZE];
/** Client library sqlstate buffer. Set along with the error message. */
char sqlstate[SQLSTATE_LENGTH+1];
/**
Extension pointer, for the caller private use.
Any program linking with the networking library can use this pointer,
which is handy when private connection specific data needs to be
maintained.
The mysqld server process uses this pointer internally,
to maintain the server internal instrumentation for the connection.
*/
void *extension;
} NET;
#define packet_error (~(unsigned long) 0)
enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG,
MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE,
MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP,
MYSQL_TYPE_LONGLONG,MYSQL_TYPE_INT24,
MYSQL_TYPE_DATE, MYSQL_TYPE_TIME,
MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR,
MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR,
MYSQL_TYPE_BIT,
MYSQL_TYPE_TIMESTAMP2,
MYSQL_TYPE_DATETIME2,
MYSQL_TYPE_TIME2,
MYSQL_TYPE_NEWDECIMAL=246,
MYSQL_TYPE_ENUM=247,
MYSQL_TYPE_SET=248,
MYSQL_TYPE_TINY_BLOB=249,
MYSQL_TYPE_MEDIUM_BLOB=250,
MYSQL_TYPE_LONG_BLOB=251,
MYSQL_TYPE_BLOB=252,
MYSQL_TYPE_VAR_STRING=253,
MYSQL_TYPE_STRING=254,
MYSQL_TYPE_GEOMETRY=255
};
/* For backward compatibility */
#define CLIENT_MULTI_QUERIES CLIENT_MULTI_STATEMENTS
#define FIELD_TYPE_DECIMAL MYSQL_TYPE_DECIMAL
#define FIELD_TYPE_NEWDECIMAL MYSQL_TYPE_NEWDECIMAL
#define FIELD_TYPE_TINY MYSQL_TYPE_TINY
#define FIELD_TYPE_SHORT MYSQL_TYPE_SHORT
#define FIELD_TYPE_LONG MYSQL_TYPE_LONG
#define FIELD_TYPE_FLOAT MYSQL_TYPE_FLOAT
#define FIELD_TYPE_DOUBLE MYSQL_TYPE_DOUBLE
#define FIELD_TYPE_NULL MYSQL_TYPE_NULL
#define FIELD_TYPE_TIMESTAMP MYSQL_TYPE_TIMESTAMP
#define FIELD_TYPE_LONGLONG MYSQL_TYPE_LONGLONG
#define FIELD_TYPE_INT24 MYSQL_TYPE_INT24
#define FIELD_TYPE_DATE MYSQL_TYPE_DATE
#define FIELD_TYPE_TIME MYSQL_TYPE_TIME
#define FIELD_TYPE_DATETIME MYSQL_TYPE_DATETIME
#define FIELD_TYPE_YEAR MYSQL_TYPE_YEAR
#define FIELD_TYPE_NEWDATE MYSQL_TYPE_NEWDATE
#define FIELD_TYPE_ENUM MYSQL_TYPE_ENUM
#define FIELD_TYPE_SET MYSQL_TYPE_SET
#define FIELD_TYPE_TINY_BLOB MYSQL_TYPE_TINY_BLOB
#define FIELD_TYPE_MEDIUM_BLOB MYSQL_TYPE_MEDIUM_BLOB
#define FIELD_TYPE_LONG_BLOB MYSQL_TYPE_LONG_BLOB
#define FIELD_TYPE_BLOB MYSQL_TYPE_BLOB
#define FIELD_TYPE_VAR_STRING MYSQL_TYPE_VAR_STRING
#define FIELD_TYPE_STRING MYSQL_TYPE_STRING
#define FIELD_TYPE_CHAR MYSQL_TYPE_TINY
#define FIELD_TYPE_INTERVAL MYSQL_TYPE_ENUM
#define FIELD_TYPE_GEOMETRY MYSQL_TYPE_GEOMETRY
#define FIELD_TYPE_BIT MYSQL_TYPE_BIT
/* Shutdown/kill enums and constants */
/* Bits for THD::killable. */
#define MYSQL_SHUTDOWN_KILLABLE_CONNECT (unsigned char)(1 << 0)
#define MYSQL_SHUTDOWN_KILLABLE_TRANS (unsigned char)(1 << 1)
#define MYSQL_SHUTDOWN_KILLABLE_LOCK_TABLE (unsigned char)(1 << 2)
#define MYSQL_SHUTDOWN_KILLABLE_UPDATE (unsigned char)(1 << 3)
enum mysql_enum_shutdown_level {
/*
We want levels to be in growing order of hardness (because we use number
comparisons). Note that DEFAULT does not respect the growing property, but
it's ok.
*/
SHUTDOWN_DEFAULT = 0,
/* wait for existing connections to finish */
SHUTDOWN_WAIT_CONNECTIONS= MYSQL_SHUTDOWN_KILLABLE_CONNECT,
/* wait for existing trans to finish */
SHUTDOWN_WAIT_TRANSACTIONS= MYSQL_SHUTDOWN_KILLABLE_TRANS,
/* wait for existing updates to finish (=> no partial MyISAM update) */
SHUTDOWN_WAIT_UPDATES= MYSQL_SHUTDOWN_KILLABLE_UPDATE,
/* flush InnoDB buffers and other storage engines' buffers*/
SHUTDOWN_WAIT_ALL_BUFFERS= (MYSQL_SHUTDOWN_KILLABLE_UPDATE << 1),
/* don't flush InnoDB buffers, flush other storage engines' buffers*/
SHUTDOWN_WAIT_CRITICAL_BUFFERS= (MYSQL_SHUTDOWN_KILLABLE_UPDATE << 1) + 1,
/* Now the 2 levels of the KILL command */
#if MYSQL_VERSION_ID >= 50000
KILL_QUERY= 254,
#endif
KILL_CONNECTION= 255
};
enum enum_cursor_type
{
CURSOR_TYPE_NO_CURSOR= 0,
CURSOR_TYPE_READ_ONLY= 1,
CURSOR_TYPE_FOR_UPDATE= 2,
CURSOR_TYPE_SCROLLABLE= 4
};
/* options for mysql_set_option */
enum enum_mysql_set_option
{
MYSQL_OPTION_MULTI_STATEMENTS_ON,
MYSQL_OPTION_MULTI_STATEMENTS_OFF
};
#define net_new_transaction(net) ((net)->pkt_nr=0)
#ifdef __cplusplus
extern "C" {
#endif
my_bool my_net_init(NET *net, Vio* vio);
void my_net_local_init(NET *net);
void net_end(NET *net);
void net_clear(NET *net, my_bool check_buffer);
my_bool net_realloc(NET *net, size_t length);
my_bool net_flush(NET *net);
my_bool my_net_write(NET *net,const unsigned char *packet, size_t len);
my_bool net_write_command(NET *net,unsigned char command,
const unsigned char *header, size_t head_len,
const unsigned char *packet, size_t len);
my_bool net_write_packet(NET *net, const unsigned char *packet, size_t length);
unsigned long my_net_read(NET *net);
#ifdef MY_GLOBAL_INCLUDED
void my_net_set_write_timeout(NET *net, uint timeout);
void my_net_set_read_timeout(NET *net, uint timeout);
#endif
struct rand_struct {
unsigned long seed1,seed2,max_value;
double max_value_dbl;
};
#ifdef __cplusplus
}
#endif
/* The following is for user defined functions */
enum Item_result {STRING_RESULT=0, REAL_RESULT, INT_RESULT, ROW_RESULT,
DECIMAL_RESULT};
typedef struct st_udf_args
{
unsigned int arg_count; /* Number of arguments */
enum Item_result *arg_type; /* Pointer to item_results */
char **args; /* Pointer to argument */
unsigned long *lengths; /* Length of string arguments */
char *maybe_null; /* Set to 1 for all maybe_null args */
char **attributes; /* Pointer to attribute name */
unsigned long *attribute_lengths; /* Length of attribute arguments */
void *extension;
} UDF_ARGS;
/* This holds information about the result */
typedef struct st_udf_init
{
my_bool maybe_null; /* 1 if function can return NULL */
unsigned int decimals; /* for real functions */
unsigned long max_length; /* For string functions */
char *ptr; /* free pointer for function data */
my_bool const_item; /* 1 if function always returns the same value */
void *extension;
} UDF_INIT;
/*
TODO: add a notion for determinism of the UDF.
See Item_udf_func::update_used_tables ()
*/
/* Constants when using compression */
#define NET_HEADER_SIZE 4 /* standard header size */
#define COMP_HEADER_SIZE 3 /* compression header extra size */
/* Prototypes to password functions */
#ifdef __cplusplus
extern "C" {
#endif
/*
These functions are used for authentication by client and server and
implemented in sql/password.c
*/
void randominit(struct rand_struct *, unsigned long seed1,
unsigned long seed2);
double my_rnd(struct rand_struct *);
void create_random_string(char *to, unsigned int length, struct rand_struct *rand_st);
void hash_password(unsigned long *to, const char *password, unsigned int password_len);
void make_scrambled_password_323(char *to, const char *password);
void scramble_323(char *to, const char *message, const char *password);
my_bool check_scramble_323(const unsigned char *reply, const char *message,
unsigned long *salt);
void get_salt_from_password_323(unsigned long *res, const char *password);
void make_password_from_salt_323(char *to, const unsigned long *salt);
void make_scrambled_password(char *to, const char *password);
void scramble(char *to, const char *message, const char *password);
my_bool check_scramble(const unsigned char *reply, const char *message,
const unsigned char *hash_stage2);
void get_salt_from_password(unsigned char *res, const char *password);
void make_password_from_salt(char *to, const unsigned char *hash_stage2);
char *octet2hex(char *to, const char *str, unsigned int len);
/* end of password.c */
char *get_tty_password(const char *opt_message);
const char *mysql_errno_to_sqlstate(unsigned int mysql_errno);
/* Some other useful functions */
my_bool my_thread_init(void);
void my_thread_end(void);
#ifdef MY_GLOBAL_INCLUDED
ulong STDCALL net_field_length(uchar **packet);
my_ulonglong net_field_length_ll(uchar **packet);
uchar *net_store_length(uchar *pkg, ulonglong length);
#endif
#ifdef __cplusplus
}
#endif
#define NULL_LENGTH ((unsigned long) ~0) /* For net_store_length */
#define MYSQL_STMT_HEADER 4
#define MYSQL_LONG_DATA_HEADER 6
#define NOT_FIXED_DEC 31
#endif

View File

@ -0,0 +1,55 @@
/* Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
#ifndef _mysql_time_h_
#define _mysql_time_h_
/*
Time declarations shared between the server and client API:
you should not add anything to this header unless it's used
(and hence should be visible) in mysql.h.
If you're looking for a place to add new time-related declaration,
it's most likely my_time.h. See also "C API Handling of Date
and Time Values" chapter in documentation.
*/
enum enum_mysql_timestamp_type
{
MYSQL_TIMESTAMP_NONE= -2, MYSQL_TIMESTAMP_ERROR= -1,
MYSQL_TIMESTAMP_DATE= 0, MYSQL_TIMESTAMP_DATETIME= 1, MYSQL_TIMESTAMP_TIME= 2
};
/*
Structure which is used to represent datetime values inside MySQL.
We assume that values in this structure are normalized, i.e. year <= 9999,
month <= 12, day <= 31, hour <= 23, hour <= 59, hour <= 59. Many functions
in server such as my_system_gmt_sec() or make_time() family of functions
rely on this (actually now usage of make_*() family relies on a bit weaker
restriction). Also functions that produce MYSQL_TIME as result ensure this.
There is one exception to this rule though if this structure holds time
value (time_type == MYSQL_TIMESTAMP_TIME) days and hour member can hold
bigger values.
*/
typedef struct st_mysql_time
{
unsigned int year, month, day, hour, minute, second;
unsigned long second_part; /**< microseconds */
my_bool neg;
enum enum_mysql_timestamp_type time_type;
} MYSQL_TIME;
#endif /* _mysql_time_h_ */

View File

@ -0,0 +1,32 @@
/* Copyright Abandoned 1996,1999 TCX DataKonsult AB & Monty Program KB
& Detron HB, 1996, 1999-2004, 2007 MySQL AB.
This file is public domain and comes with NO WARRANTY of any kind
*/
/* Version numbers for protocol & mysqld */
#ifndef _mysql_version_h
#define _mysql_version_h
#ifdef _CUSTOMCONFIG_
#include <custom_conf.h>
#else
#define PROTOCOL_VERSION 10
#define MYSQL_SERVER_VERSION "5.6.23"
#define MYSQL_BASE_VERSION "mysqld-5.6"
#define MYSQL_SERVER_SUFFIX_DEF ""
#define FRM_VER 6
#define MYSQL_VERSION_ID 50623
#define MYSQL_PORT 3306
#define MYSQL_PORT_DEFAULT 0
#define MYSQL_UNIX_ADDR "/tmp/mysql.sock"
#define MYSQL_CONFIG_NAME "my"
#define MYSQL_COMPILATION_COMMENT "MySQL Community Server (GPL)"
/* mysqld compile time options */
#endif /* _CUSTOMCONFIG_ */
#ifndef LICENSE
#define LICENSE GPL
#endif /* LICENSE */
#endif /* _mysql_version_h */

View File

@ -0,0 +1,54 @@
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
#ifndef _typelib_h
#define _typelib_h
#include "my_alloc.h"
typedef struct st_typelib { /* Different types saved here */
unsigned int count; /* How many types */
const char *name; /* Name of typelib */
const char **type_names;
unsigned int *type_lengths;
} TYPELIB;
extern my_ulonglong find_typeset(char *x, TYPELIB *typelib,int *error_position);
extern int find_type_or_exit(const char *x, TYPELIB *typelib,
const char *option);
#define FIND_TYPE_BASIC 0
/** makes @c find_type() require the whole name, no prefix */
#define FIND_TYPE_NO_PREFIX (1 << 0)
/** always implicitely on, so unused, but old code may pass it */
#define FIND_TYPE_NO_OVERWRITE (1 << 1)
/** makes @c find_type() accept a number */
#define FIND_TYPE_ALLOW_NUMBER (1 << 2)
/** makes @c find_type() treat ',' as terminator */
#define FIND_TYPE_COMMA_TERM (1 << 3)
extern int find_type(const char *x, const TYPELIB *typelib, unsigned int flags);
extern void make_type(char *to,unsigned int nr,TYPELIB *typelib);
extern const char *get_type(TYPELIB *typelib,unsigned int nr);
extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from);
extern TYPELIB sql_protocol_typelib;
my_ulonglong find_set_from_flags(const TYPELIB *lib, unsigned int default_name,
my_ulonglong cur_set, my_ulonglong default_set,
const char *str, unsigned int length,
char **err_pos, unsigned int *err_len);
#endif /* _typelib_h */

View File

@ -0,0 +1,472 @@
// odbcAPI.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__ODBCAPI_H__)
#define __ODBCAPI_H__
#include "SQLAPI.h"
// API header(s)
#include <sql.h>
#include <sqlext.h>
extern long g_nODBCDLLVersionLoaded;
extern void AddODBCSupport(const SAConnection *pCon);
extern void ReleaseODBCSupport();
typedef SQLRETURN (SQL_API *SQLAllocConnect_t)(SQLHENV EnvironmentHandle,
SQLHDBC *ConnectionHandle);
typedef SQLRETURN (SQL_API *SQLAllocEnv_t)(SQLHENV *EnvironmentHandle);
typedef SQLRETURN (SQL_API *SQLAllocHandle_t)(SQLSMALLINT HandleType,
SQLHANDLE InputHandle, SQLHANDLE *OutputHandle);
typedef SQLRETURN (SQL_API *SQLAllocStmt_t)(SQLHDBC ConnectionHandle,
SQLHSTMT *StatementHandle);
typedef SQLRETURN (SQL_API *SQLBindCol_t)(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLSMALLINT TargetType,
SQLPOINTER TargetValue,
SQLLEN BufferLength,
SQLLEN *StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLBindParameter_t)(
SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT fParamType,
SQLSMALLINT fCType,
SQLSMALLINT fSqlType,
SQLULEN cbColDef,
SQLSMALLINT ibScale,
SQLPOINTER rgbValue,
SQLLEN cbValueMax,
SQLLEN *pcbValue);
typedef SQLRETURN (SQL_API *SQLBrowseConnect_t)(
SQLHDBC hdbc,
SQLTCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLTCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut);
typedef SQLRETURN (SQL_API *SQLBulkOperations_t)(
SQLHSTMT StatementHandle,
SQLSMALLINT Operation);
typedef SQLRETURN (SQL_API *SQLCancel_t)(SQLHSTMT StatementHandle);
typedef SQLRETURN (SQL_API *SQLCloseCursor_t)(SQLHSTMT StatementHandle);
typedef SQLRETURN (SQL_API *SQLColAttribute_t)(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLUSMALLINT FieldIdentifier,
SQLPOINTER CharacterAttribute,
SQLSMALLINT BufferLength,
SQLSMALLINT *StringLength,
SQLLEN *NumericAttribute);
typedef SQLRETURN (SQL_API *SQLColAttributes_t)(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLUSMALLINT fDescType,
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT *pcbDesc,
SQLLEN *pfDesc);
typedef SQLRETURN (SQL_API *SQLColumnPrivileges_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLTCHAR *szColumnName,
SQLSMALLINT cbColumnName);
typedef SQLRETURN (SQL_API *SQLColumns_t)(SQLHSTMT StatementHandle,
SQLTCHAR *CatalogName, SQLSMALLINT NameLength1,
SQLTCHAR *SchemaName, SQLSMALLINT NameLength2,
SQLTCHAR *TableName, SQLSMALLINT NameLength3,
SQLTCHAR *ColumnName, SQLSMALLINT NameLength4);
typedef SQLRETURN (SQL_API *SQLConnect_t)(SQLHDBC ConnectionHandle,
SQLTCHAR *ServerName, SQLSMALLINT NameLength1,
SQLTCHAR *UserName, SQLSMALLINT NameLength2,
SQLTCHAR *Authentication, SQLSMALLINT NameLength3);
typedef SQLRETURN (SQL_API *SQLCopyDesc_t)(SQLHDESC SourceDescHandle,
SQLHDESC TargetDescHandle);
typedef SQLRETURN (SQL_API *SQLDataSources_t)(SQLHENV EnvironmentHandle,
SQLUSMALLINT Direction, SQLTCHAR *ServerName,
SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
SQLTCHAR *Description, SQLSMALLINT BufferLength2,
SQLSMALLINT *NameLength2);
typedef SQLRETURN (SQL_API *SQLDescribeCol_t)(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLTCHAR *ColumnName,
SQLSMALLINT BufferLength,
SQLSMALLINT *NameLength,
SQLSMALLINT *DataType,
SQLULEN *ColumnSize,
SQLSMALLINT *DecimalDigits,
SQLSMALLINT *Nullable);
typedef SQLRETURN (SQL_API *SQLDescribeParam_t)(
SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT *pfSqlType,
SQLULEN *pcbParamDef,
SQLSMALLINT *pibScale,
SQLSMALLINT *pfNullable);
typedef SQLRETURN (SQL_API *SQLDisconnect_t)(SQLHDBC ConnectionHandle);
typedef SQLRETURN (SQL_API *SQLDriverConnect_t)(
SQLHDBC hdbc,
SQLHWND hwnd,
SQLTCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLTCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut,
SQLUSMALLINT fDriverCompletion);
typedef SQLRETURN (SQL_API *SQLDrivers_t)(
SQLHENV henv,
SQLUSMALLINT fDirection,
SQLTCHAR *szDriverDesc,
SQLSMALLINT cbDriverDescMax,
SQLSMALLINT *pcbDriverDesc,
SQLTCHAR *szDriverAttributes,
SQLSMALLINT cbDrvrAttrMax,
SQLSMALLINT *pcbDrvrAttr);
typedef SQLRETURN (SQL_API *SQLEndTran_t)(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT CompletionType);
typedef SQLRETURN (SQL_API *SQLError_t)(SQLHENV EnvironmentHandle,
SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
SQLTCHAR *Sqlstate, SQLINTEGER *NativeError,
SQLTCHAR *MessageText, SQLSMALLINT BufferLength,
SQLSMALLINT *TextLength);
typedef SQLRETURN (SQL_API *SQLExecDirect_t)(SQLHSTMT StatementHandle,
SQLTCHAR *StatementText, SQLINTEGER TextLength);
typedef SQLRETURN (SQL_API *SQLExecute_t)(SQLHSTMT StatementHandle);
typedef SQLRETURN (SQL_API *SQLExtendedFetch_t)(
SQLHSTMT hstmt,
SQLUSMALLINT fFetchType,
SQLLEN irow,
SQLULEN *pcrow,
SQLUSMALLINT *rgfRowStatus);
typedef SQLRETURN (SQL_API *SQLFetch_t)(SQLHSTMT StatementHandle);
typedef SQLRETURN (SQL_API *SQLFetchScroll_t)(
SQLHSTMT StatementHandle,
SQLSMALLINT FetchOrientation,
SQLLEN FetchOffset);
typedef SQLRETURN (SQL_API *SQLForeignKeys_t)(
SQLHSTMT hstmt,
SQLTCHAR *szPkCatalogName,
SQLSMALLINT cbPkCatalogName,
SQLTCHAR *szPkSchemaName,
SQLSMALLINT cbPkSchemaName,
SQLTCHAR *szPkTableName,
SQLSMALLINT cbPkTableName,
SQLTCHAR *szFkCatalogName,
SQLSMALLINT cbFkCatalogName,
SQLTCHAR *szFkSchemaName,
SQLSMALLINT cbFkSchemaName,
SQLTCHAR *szFkTableName,
SQLSMALLINT cbFkTableName);
typedef SQLRETURN (SQL_API *SQLFreeConnect_t)(SQLHDBC ConnectionHandle);
typedef SQLRETURN (SQL_API *SQLFreeEnv_t)(SQLHENV EnvironmentHandle);
typedef SQLRETURN (SQL_API *SQLFreeHandle_t)(SQLSMALLINT HandleType, SQLHANDLE Handle);
typedef SQLRETURN (SQL_API *SQLFreeStmt_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT Option);
typedef SQLRETURN (SQL_API *SQLGetConnectAttr_t)(SQLHDBC ConnectionHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER BufferLength, SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API *SQLGetConnectOption_t)(SQLHDBC ConnectionHandle,
SQLUSMALLINT Option, SQLPOINTER Value);
typedef SQLRETURN (SQL_API *SQLGetCursorName_t)(SQLHSTMT StatementHandle,
SQLTCHAR *CursorName, SQLSMALLINT BufferLength,
SQLSMALLINT *NameLength);
typedef SQLRETURN (SQL_API *SQLGetData_t)(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLSMALLINT TargetType,
SQLPOINTER TargetValue,
SQLLEN BufferLength,
SQLLEN *StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLGetDescField_t)(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
SQLPOINTER Value, SQLINTEGER BufferLength,
SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API *SQLGetDescRec_t)(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLTCHAR *Name,
SQLSMALLINT BufferLength,
SQLSMALLINT *StringLength,
SQLSMALLINT *Type,
SQLSMALLINT *SubType,
SQLLEN *Length,
SQLSMALLINT *Precision,
SQLSMALLINT *Scale,
SQLSMALLINT *Nullable);
typedef SQLRETURN (SQL_API *SQLGetDiagRec_t)(
SQLSMALLINT HandleType,
SQLHANDLE Handle,
SQLSMALLINT RecNumber,
SQLTCHAR *Sqlstate,
SQLINTEGER *NativeError,
SQLTCHAR *MessageText,
SQLSMALLINT BufferLength,
SQLSMALLINT *TextLength);
typedef SQLRETURN (SQL_API *SQLGetDiagField_t)(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
SQLPOINTER DiagInfo, SQLSMALLINT BufferLength,
SQLSMALLINT *StringLength);
typedef SQLRETURN (SQL_API *SQLGetEnvAttr_t)(SQLHENV EnvironmentHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER BufferLength, SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API *SQLGetFunctions_t)(SQLHDBC ConnectionHandle,
SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
typedef SQLRETURN (SQL_API *SQLGetInfo_t)(SQLHDBC ConnectionHandle,
SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
typedef SQLRETURN (SQL_API *SQLGetStmtAttr_t)(SQLHSTMT StatementHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER BufferLength, SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API *SQLGetStmtOption_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT Option, SQLPOINTER Value);
typedef SQLRETURN (SQL_API *SQLGetTypeInfo_t)(SQLHSTMT StatementHandle,
SQLSMALLINT DataType);
typedef SQLRETURN (SQL_API *SQLMoreResults_t)(
SQLHSTMT hstmt);
typedef SQLRETURN (SQL_API *SQLNativeSql_t)(
SQLHDBC hdbc,
SQLTCHAR *szSqlStrIn,
SQLINTEGER cbSqlStrIn,
SQLTCHAR *szSqlStr,
SQLINTEGER cbSqlStrMax,
SQLINTEGER *pcbSqlStr);
typedef SQLRETURN (SQL_API *SQLNumParams_t)(
SQLHSTMT hstmt,
SQLSMALLINT *pcpar);
typedef SQLRETURN (SQL_API *SQLNumResultCols_t)(SQLHSTMT StatementHandle,
SQLSMALLINT *ColumnCount);
typedef SQLRETURN (SQL_API *SQLParamData_t)(SQLHSTMT StatementHandle,
SQLPOINTER *Value);
typedef SQLRETURN (SQL_API *SQLParamOptions_t)(
SQLHSTMT hstmt,
SQLULEN crow,
SQLULEN *pirow);
typedef SQLRETURN (SQL_API *SQLPrepare_t)(SQLHSTMT StatementHandle,
SQLTCHAR *StatementText, SQLINTEGER TextLength);
typedef SQLRETURN (SQL_API *SQLPrimaryKeys_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szTableName,
SQLSMALLINT cbTableName);
typedef SQLRETURN (SQL_API *SQLProcedureColumns_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szProcName,
SQLSMALLINT cbProcName,
SQLTCHAR *szColumnName,
SQLSMALLINT cbColumnName);
typedef SQLRETURN (SQL_API *SQLProcedures_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szProcName,
SQLSMALLINT cbProcName);
typedef SQLRETURN (SQL_API *SQLPutData_t)(
SQLHSTMT StatementHandle,
SQLPOINTER Data,
SQLLEN StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLRowCount_t)(
SQLHSTMT StatementHandle,
SQLLEN *RowCount);
typedef SQLRETURN (SQL_API *SQLSetConnectAttr_t)(
SQLHDBC ConnectionHandle,
SQLINTEGER Attribute,
SQLPOINTER Value,
SQLINTEGER StringLength);
typedef SQLRETURN (SQL_API *SQLSetConnectOption_t)(
SQLHDBC ConnectionHandle,
SQLUSMALLINT Option,
SQLULEN Value);
typedef SQLRETURN (SQL_API *SQLSetCursorName_t)(SQLHSTMT StatementHandle,
SQLTCHAR *CursorName, SQLSMALLINT NameLength);
typedef SQLRETURN (SQL_API *SQLSetDescField_t)(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
SQLPOINTER Value, SQLINTEGER BufferLength);
typedef SQLRETURN (SQL_API *SQLSetDescRec_t)(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT Type,
SQLSMALLINT SubType,
SQLLEN Length,
SQLSMALLINT Precision,
SQLSMALLINT Scale,
SQLPOINTER Data,
SQLLEN *StringLength,
SQLLEN *Indicator);
typedef SQLRETURN (SQL_API *SQLSetEnvAttr_t)(SQLHENV EnvironmentHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER StringLength);
typedef SQLRETURN (SQL_API *SQLSetParam_t)(
SQLHSTMT StatementHandle,
SQLUSMALLINT ParameterNumber,
SQLSMALLINT ValueType,
SQLSMALLINT ParameterType,
SQLULEN LengthPrecision,
SQLSMALLINT ParameterScale,
SQLPOINTER ParameterValue,
SQLLEN *StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLSetPos_t)(
SQLHSTMT hstmt,
SQLSETPOSIROW irow,
SQLUSMALLINT fOption,
SQLUSMALLINT fLock);
typedef SQLRETURN (SQL_API *SQLSetScrollOptions_t)( /* Use SQLSetStmtOptions */
SQLHSTMT hstmt,
SQLUSMALLINT fConcurrency,
SQLLEN crowKeyset,
SQLUSMALLINT crowRowset);
typedef SQLRETURN (SQL_API *SQLSetStmtAttr_t)(SQLHSTMT StatementHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER StringLength);
typedef SQLRETURN (SQL_API *SQLSetStmtOption_t)(
SQLHSTMT StatementHandle,
SQLUSMALLINT Option,
SQLULEN Value);
typedef SQLRETURN (SQL_API *SQLSpecialColumns_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT IdentifierType, SQLTCHAR *CatalogName,
SQLSMALLINT NameLength1, SQLTCHAR *SchemaName,
SQLSMALLINT NameLength2, SQLTCHAR *TableName,
SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
SQLUSMALLINT Nullable);
typedef SQLRETURN (SQL_API *SQLStatistics_t)(SQLHSTMT StatementHandle,
SQLTCHAR *CatalogName, SQLSMALLINT NameLength1,
SQLTCHAR *SchemaName, SQLSMALLINT NameLength2,
SQLTCHAR *TableName, SQLSMALLINT NameLength3,
SQLUSMALLINT Unique, SQLUSMALLINT Reserved);
typedef SQLRETURN (SQL_API *SQLTablePrivileges_t)(
SQLHSTMT hstmt,
SQLTCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLTCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLTCHAR *szTableName,
SQLSMALLINT cbTableName);
typedef SQLRETURN (SQL_API *SQLTables_t)(SQLHSTMT StatementHandle,
SQLTCHAR *CatalogName, SQLSMALLINT NameLength1,
SQLTCHAR *SchemaName, SQLSMALLINT NameLength2,
SQLTCHAR *TableName, SQLSMALLINT NameLength3,
SQLTCHAR *TableType, SQLSMALLINT NameLength4);
typedef SQLRETURN (SQL_API *SQLTransact_t)(SQLHENV EnvironmentHandle,
SQLHDBC ConnectionHandle, SQLUSMALLINT CompletionType);
class SQLAPI_API odbcAPI : public saAPI
{
public:
odbcAPI();
SQLAllocConnect_t SQLAllocConnect; // 1.0
SQLAllocEnv_t SQLAllocEnv; // 1.0
SQLAllocHandle_t SQLAllocHandle; // 3.0
SQLAllocStmt_t SQLAllocStmt; // 1.0
SQLBindCol_t SQLBindCol; // 1.0
SQLBindParameter_t SQLBindParameter; // 2.0
SQLBrowseConnect_t SQLBrowseConnect; // 1.0
SQLBulkOperations_t SQLBulkOperations; // 3.0
SQLCancel_t SQLCancel; // 1.0
SQLCloseCursor_t SQLCloseCursor; // 3.0
SQLColAttribute_t SQLColAttribute; // 3.0
SQLColAttributes_t SQLColAttributes; // 1.0
SQLColumnPrivileges_t SQLColumnPrivileges;// 1.0
SQLColumns_t SQLColumns; // 1.0
SQLConnect_t SQLConnect; // 1.0
SQLCopyDesc_t SQLCopyDesc; // 3.0
SQLDataSources_t SQLDataSources; // 1.0
SQLDescribeCol_t SQLDescribeCol; // 1.0
SQLDescribeParam_t SQLDescribeParam; // 1.0
SQLDisconnect_t SQLDisconnect; // 1.0
SQLDriverConnect_t SQLDriverConnect; // 1.0
SQLDrivers_t SQLDrivers; // 2.0
SQLEndTran_t SQLEndTran; // 3.0
SQLError_t SQLError; // 1.0
SQLExecDirect_t SQLExecDirect; // 1.0
SQLExecute_t SQLExecute; // 1.0
SQLExtendedFetch_t SQLExtendedFetch; // 1.0
SQLFetch_t SQLFetch; // 1.0
SQLFetchScroll_t SQLFetchScroll; // 1.0
SQLForeignKeys_t SQLForeignKeys; // 1.0
SQLFreeConnect_t SQLFreeConnect; // 1.0
SQLFreeEnv_t SQLFreeEnv; // 1.0
SQLFreeHandle_t SQLFreeHandle; // 3.0
SQLFreeStmt_t SQLFreeStmt; // 1.0
SQLGetConnectAttr_t SQLGetConnectAttr; // 3.0
SQLGetConnectOption_t SQLGetConnectOption;// 1.0
SQLGetCursorName_t SQLGetCursorName; // 1.0
SQLGetData_t SQLGetData; // 1.0
SQLGetDescField_t SQLGetDescField; // 3.0
SQLGetDescRec_t SQLGetDescRec; // 3.0
SQLGetDiagField_t SQLGetDiagField; // 3.0
SQLGetDiagRec_t SQLGetDiagRec; // 3.0
SQLGetEnvAttr_t SQLGetEnvAttr; // 3.0
SQLGetFunctions_t SQLGetFunctions; // 1.0
SQLGetInfo_t SQLGetInfo; // 1.0
SQLGetStmtAttr_t SQLGetStmtAttr; // 3.0
SQLGetStmtOption_t SQLGetStmtOption; // 1.0
SQLGetTypeInfo_t SQLGetTypeInfo; // 1.0
SQLMoreResults_t SQLMoreResults; // 1.0
SQLNativeSql_t SQLNativeSql; // 1.0
SQLNumParams_t SQLNumParams; // 1.0
SQLNumResultCols_t SQLNumResultCols; // 1.0
SQLParamData_t SQLParamData; // 1.0
SQLParamOptions_t SQLParamOptions; // 1.0
SQLPrepare_t SQLPrepare; // 1.0
SQLPrimaryKeys_t SQLPrimaryKeys; // 1.0
SQLProcedureColumns_t SQLProcedureColumns;// 1.0
SQLProcedures_t SQLProcedures; // 1.0
SQLPutData_t SQLPutData; // 1.0
SQLRowCount_t SQLRowCount; // 1.0
SQLSetConnectAttr_t SQLSetConnectAttr; // 3.0
SQLSetConnectOption_t SQLSetConnectOption;// 1.0
SQLSetCursorName_t SQLSetCursorName; // 1.0
SQLSetDescField_t SQLSetDescField; // 3.0
SQLSetDescRec_t SQLSetDescRec; // 3.0
SQLSetEnvAttr_t SQLSetEnvAttr; // 3.0
SQLSetParam_t SQLSetParam; // 1.0
SQLSetPos_t SQLSetPos; // 1.0
SQLSetScrollOptions_t SQLSetScrollOptions;// 1.0
SQLSetStmtAttr_t SQLSetStmtAttr; // 3.0
SQLSetStmtOption_t SQLSetStmtOption; // 1.0
SQLSpecialColumns_t SQLSpecialColumns; // 1.0
SQLStatistics_t SQLStatistics; // 1.0
SQLTablePrivileges_t SQLTablePrivileges; // 1.0
SQLTables_t SQLTables; // 1.0
SQLTransact_t SQLTransact; // 1.0
};
class SQLAPI_API odbcConnectionHandles : public saConnectionHandles
{
public:
odbcConnectionHandles();
SQLHENV m_hevn;
SQLHDBC m_hdbc;
};
class SQLAPI_API odbcCommandHandles : public saCommandHandles
{
public:
odbcCommandHandles();
SQLHSTMT m_hstmt;
};
extern odbcAPI g_odbcAPI;
#endif // !defined(__ODBCAPI_H__)

View File

@ -0,0 +1,839 @@
//-----------------------------------------------------------------------------
// File: sql.h
//
// Copyright: Copyright (c) Microsoft Corporation
//
// Contents: This is the the main include for ODBC Core functions.
//
// Comments: preconditions: #include "windows.h"
//
//-----------------------------------------------------------------------------
#ifndef __SQL
#define __SQL
/*
* ODBCVER ODBC version number (0x0351). To exclude
* definitions introduced in version 3.5 (or above)
* #define ODBCVER 0x0300 before #including <sql.h>
*/
#ifndef ODBCVER
#define ODBCVER 0x0351
#endif
#ifndef __SQLTYPES
#include "sqltypes.h"
#endif
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
/* special length/indicator values */
#define SQL_NULL_DATA (-1)
#define SQL_DATA_AT_EXEC (-2)
/* return values from functions */
#define SQL_SUCCESS 0
#define SQL_SUCCESS_WITH_INFO 1
#if (ODBCVER >= 0x0300)
#define SQL_NO_DATA 100
#endif
#define SQL_ERROR (-1)
#define SQL_INVALID_HANDLE (-2)
#define SQL_STILL_EXECUTING 2
#define SQL_NEED_DATA 99
/* test for SQL_SUCCESS or SQL_SUCCESS_WITH_INFO */
#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
/* flags for null-terminated string */
#define SQL_NTS (-3)
#define SQL_NTSL (-3L)
/* maximum message length */
#define SQL_MAX_MESSAGE_LENGTH 512
/* date/time length constants */
#if (ODBCVER >= 0x0300)
#define SQL_DATE_LEN 10
#define SQL_TIME_LEN 8 /* add P+1 if precision is nonzero */
#define SQL_TIMESTAMP_LEN 19 /* add P+1 if precision is nonzero */
#endif
/* handle type identifiers */
#if (ODBCVER >= 0x0300)
#define SQL_HANDLE_ENV 1
#define SQL_HANDLE_DBC 2
#define SQL_HANDLE_STMT 3
#define SQL_HANDLE_DESC 4
#endif
/* environment attribute */
#if (ODBCVER >= 0x0300)
#define SQL_ATTR_OUTPUT_NTS 10001
#endif
/* connection attributes */
#if (ODBCVER >= 0x0300)
#define SQL_ATTR_AUTO_IPD 10001
#define SQL_ATTR_METADATA_ID 10014
#endif /* ODBCVER >= 0x0300 */
/* statement attributes */
#if (ODBCVER >= 0x0300)
#define SQL_ATTR_APP_ROW_DESC 10010
#define SQL_ATTR_APP_PARAM_DESC 10011
#define SQL_ATTR_IMP_ROW_DESC 10012
#define SQL_ATTR_IMP_PARAM_DESC 10013
#define SQL_ATTR_CURSOR_SCROLLABLE (-1)
#define SQL_ATTR_CURSOR_SENSITIVITY (-2)
#endif
/* SQL_ATTR_CURSOR_SCROLLABLE values */
#if (ODBCVER >= 0x0300)
#define SQL_NONSCROLLABLE 0
#define SQL_SCROLLABLE 1
#endif /* ODBCVER >= 0x0300 */
/* identifiers of fields in the SQL descriptor */
#if (ODBCVER >= 0x0300)
#define SQL_DESC_COUNT 1001
#define SQL_DESC_TYPE 1002
#define SQL_DESC_LENGTH 1003
#define SQL_DESC_OCTET_LENGTH_PTR 1004
#define SQL_DESC_PRECISION 1005
#define SQL_DESC_SCALE 1006
#define SQL_DESC_DATETIME_INTERVAL_CODE 1007
#define SQL_DESC_NULLABLE 1008
#define SQL_DESC_INDICATOR_PTR 1009
#define SQL_DESC_DATA_PTR 1010
#define SQL_DESC_NAME 1011
#define SQL_DESC_UNNAMED 1012
#define SQL_DESC_OCTET_LENGTH 1013
#define SQL_DESC_ALLOC_TYPE 1099
#endif
/* identifiers of fields in the diagnostics area */
#if (ODBCVER >= 0x0300)
#define SQL_DIAG_RETURNCODE 1
#define SQL_DIAG_NUMBER 2
#define SQL_DIAG_ROW_COUNT 3
#define SQL_DIAG_SQLSTATE 4
#define SQL_DIAG_NATIVE 5
#define SQL_DIAG_MESSAGE_TEXT 6
#define SQL_DIAG_DYNAMIC_FUNCTION 7
#define SQL_DIAG_CLASS_ORIGIN 8
#define SQL_DIAG_SUBCLASS_ORIGIN 9
#define SQL_DIAG_CONNECTION_NAME 10
#define SQL_DIAG_SERVER_NAME 11
#define SQL_DIAG_DYNAMIC_FUNCTION_CODE 12
#endif
/* dynamic function codes */
#if (ODBCVER >= 0x0300)
#define SQL_DIAG_ALTER_DOMAIN 3
#define SQL_DIAG_ALTER_TABLE 4
#define SQL_DIAG_CALL 7
#define SQL_DIAG_CREATE_ASSERTION 6
#define SQL_DIAG_CREATE_CHARACTER_SET 8
#define SQL_DIAG_CREATE_COLLATION 10
#define SQL_DIAG_CREATE_DOMAIN 23
#define SQL_DIAG_CREATE_INDEX (-1)
#define SQL_DIAG_CREATE_SCHEMA 64
#define SQL_DIAG_CREATE_TABLE 77
#define SQL_DIAG_CREATE_TRANSLATION 79
#define SQL_DIAG_CREATE_VIEW 84
#define SQL_DIAG_DELETE_WHERE 19
#define SQL_DIAG_DROP_ASSERTION 24
#define SQL_DIAG_DROP_CHARACTER_SET 25
#define SQL_DIAG_DROP_COLLATION 26
#define SQL_DIAG_DROP_DOMAIN 27
#define SQL_DIAG_DROP_INDEX (-2)
#define SQL_DIAG_DROP_SCHEMA 31
#define SQL_DIAG_DROP_TABLE 32
#define SQL_DIAG_DROP_TRANSLATION 33
#define SQL_DIAG_DROP_VIEW 36
#define SQL_DIAG_DYNAMIC_DELETE_CURSOR 38
#define SQL_DIAG_DYNAMIC_UPDATE_CURSOR 81
#define SQL_DIAG_GRANT 48
#define SQL_DIAG_INSERT 50
#define SQL_DIAG_REVOKE 59
#define SQL_DIAG_SELECT_CURSOR 85
#define SQL_DIAG_UNKNOWN_STATEMENT 0
#define SQL_DIAG_UPDATE_WHERE 82
#endif /* ODBCVER >= 0x0300 */
/* SQL data type codes */
#define SQL_UNKNOWN_TYPE 0
#define SQL_CHAR 1
#define SQL_NUMERIC 2
#define SQL_DECIMAL 3
#define SQL_INTEGER 4
#define SQL_SMALLINT 5
#define SQL_FLOAT 6
#define SQL_REAL 7
#define SQL_DOUBLE 8
#if (ODBCVER >= 0x0300)
#define SQL_DATETIME 9
#endif
#define SQL_VARCHAR 12
/* One-parameter shortcuts for date/time data types */
#if (ODBCVER >= 0x0300)
#define SQL_TYPE_DATE 91
#define SQL_TYPE_TIME 92
#define SQL_TYPE_TIMESTAMP 93
#endif
/* Statement attribute values for cursor sensitivity */
#if (ODBCVER >= 0x0300)
#define SQL_UNSPECIFIED 0
#define SQL_INSENSITIVE 1
#define SQL_SENSITIVE 2
#endif
/* GetTypeInfo() request for all data types */
#define SQL_ALL_TYPES 0
/* Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() */
#if (ODBCVER >= 0x0300)
#define SQL_DEFAULT 99
#endif
/* SQLSQLLEN GetData() code indicating that the application row descriptor
* specifies the data type
*/
#if (ODBCVER >= 0x0300)
#define SQL_ARD_TYPE (-99)
#endif
/* SQL date/time type subcodes */
#if (ODBCVER >= 0x0300)
#define SQL_CODE_DATE 1
#define SQL_CODE_TIME 2
#define SQL_CODE_TIMESTAMP 3
#endif
/* CLI option values */
#if (ODBCVER >= 0x0300)
#define SQL_FALSE 0
#define SQL_TRUE 1
#endif
/* values of NULLABLE field in descriptor */
#define SQL_NO_NULLS 0
#define SQL_NULLABLE 1
/* Value returned by SQLGetTypeInfo() to denote that it is
* not known whether or not a data type supports null values.
*/
#define SQL_NULLABLE_UNKNOWN 2
/* Values returned by SQLGetTypeInfo() to show WHERE clause
* supported
*/
#if (ODBCVER >= 0x0300)
#define SQL_PRED_NONE 0
#define SQL_PRED_CHAR 1
#define SQL_PRED_BASIC 2
#endif
/* values of UNNAMED field in descriptor */
#if (ODBCVER >= 0x0300)
#define SQL_NAMED 0
#define SQL_UNNAMED 1
#endif
/* values of ALLOC_TYPE field in descriptor */
#if (ODBCVER >= 0x0300)
#define SQL_DESC_ALLOC_AUTO 1
#define SQL_DESC_ALLOC_USER 2
#endif
/* FreeStmt() options */
#define SQL_CLOSE 0
#define SQL_DROP 1
#define SQL_UNBIND 2
#define SQL_RESET_PARAMS 3
/* Codes used for FetchOrientation in SQLFetchScroll(),
and in SQLDataSources()
*/
#define SQL_FETCH_NEXT 1
#define SQL_FETCH_FIRST 2
/* Other codes used for FetchOrientation in SQLFetchScroll() */
#define SQL_FETCH_LAST 3
#define SQL_FETCH_PRIOR 4
#define SQL_FETCH_ABSOLUTE 5
#define SQL_FETCH_RELATIVE 6
/* SQLEndTran() options */
#define SQL_COMMIT 0
#define SQL_ROLLBACK 1
/* null handles returned by SQLAllocHandle() */
#define SQL_NULL_HENV 0
#define SQL_NULL_HDBC 0
#define SQL_NULL_HSTMT 0
#if (ODBCVER >= 0x0300)
#define SQL_NULL_HDESC 0
#endif
/* null handle used in place of parent handle when allocating HENV */
#if (ODBCVER >= 0x0300)
#define SQL_NULL_HANDLE 0L
#endif
/* Values that may appear in the result set of SQLSpecialColumns() */
#define SQL_SCOPE_CURROW 0
#define SQL_SCOPE_TRANSACTION 1
#define SQL_SCOPE_SESSION 2
#define SQL_PC_UNKNOWN 0
#if (ODBCVER >= 0x0300)
#define SQL_PC_NON_PSEUDO 1
#endif
#define SQL_PC_PSEUDO 2
/* Reserved value for the IdentifierType argument of SQLSpecialColumns() */
#if (ODBCVER >= 0x0300)
#define SQL_ROW_IDENTIFIER 1
#endif
/* Reserved values for UNIQUE argument of SQLStatistics() */
#define SQL_INDEX_UNIQUE 0
#define SQL_INDEX_ALL 1
/* Values that may appear in the result set of SQLStatistics() */
#define SQL_INDEX_CLUSTERED 1
#define SQL_INDEX_HASHED 2
#define SQL_INDEX_OTHER 3
/* SQLGetFunctions() values to identify ODBC APIs */
#define SQL_API_SQLALLOCCONNECT 1
#define SQL_API_SQLALLOCENV 2
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLALLOCHANDLE 1001
#endif
#define SQL_API_SQLALLOCSTMT 3
#define SQL_API_SQLBINDCOL 4
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLBINDPARAM 1002
#endif
#define SQL_API_SQLCANCEL 5
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLCLOSECURSOR 1003
#define SQL_API_SQLCOLATTRIBUTE 6
#endif
#define SQL_API_SQLCOLUMNS 40
#define SQL_API_SQLCONNECT 7
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLCOPYDESC 1004
#endif
#define SQL_API_SQLDATASOURCES 57
#define SQL_API_SQLDESCRIBECOL 8
#define SQL_API_SQLDISCONNECT 9
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLENDTRAN 1005
#endif
#define SQL_API_SQLERROR 10
#define SQL_API_SQLEXECDIRECT 11
#define SQL_API_SQLEXECUTE 12
#define SQL_API_SQLFETCH 13
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLFETCHSCROLL 1021
#endif
#define SQL_API_SQLFREECONNECT 14
#define SQL_API_SQLFREEENV 15
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLFREEHANDLE 1006
#endif
#define SQL_API_SQLFREESTMT 16
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLGETCONNECTATTR 1007
#endif
#define SQL_API_SQLGETCONNECTOPTION 42
#define SQL_API_SQLGETCURSORNAME 17
#define SQL_API_SQLGETDATA 43
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLGETDESCFIELD 1008
#define SQL_API_SQLGETDESCREC 1009
#define SQL_API_SQLGETDIAGFIELD 1010
#define SQL_API_SQLGETDIAGREC 1011
#define SQL_API_SQLGETENVATTR 1012
#endif
#define SQL_API_SQLGETFUNCTIONS 44
#define SQL_API_SQLGETINFO 45
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLGETSTMTATTR 1014
#endif
#define SQL_API_SQLGETSTMTOPTION 46
#define SQL_API_SQLGETTYPEINFO 47
#define SQL_API_SQLNUMRESULTCOLS 18
#define SQL_API_SQLPARAMDATA 48
#define SQL_API_SQLPREPARE 19
#define SQL_API_SQLPUTDATA 49
#define SQL_API_SQLROWCOUNT 20
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLSETCONNECTATTR 1016
#endif
#define SQL_API_SQLSETCONNECTOPTION 50
#define SQL_API_SQLSETCURSORNAME 21
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLSETDESCFIELD 1017
#define SQL_API_SQLSETDESCREC 1018
#define SQL_API_SQLSETENVATTR 1019
#endif
#define SQL_API_SQLSETPARAM 22
#if (ODBCVER >= 0x0300)
#define SQL_API_SQLSETSTMTATTR 1020
#endif
#define SQL_API_SQLSETSTMTOPTION 51
#define SQL_API_SQLSPECIALCOLUMNS 52
#define SQL_API_SQLSTATISTICS 53
#define SQL_API_SQLTABLES 54
#define SQL_API_SQLTRANSACT 23
/* Information requested by SQLGetInfo() */
#if (ODBCVER >= 0x0300)
#define SQL_MAX_DRIVER_CONNECTIONS 0
#define SQL_MAXIMUM_DRIVER_CONNECTIONS SQL_MAX_DRIVER_CONNECTIONS
#define SQL_MAX_CONCURRENT_ACTIVITIES 1
#define SQL_MAXIMUM_CONCURRENT_ACTIVITIES SQL_MAX_CONCURRENT_ACTIVITIES
#endif
#define SQL_DATA_SOURCE_NAME 2
#define SQL_FETCH_DIRECTION 8
#define SQL_SERVER_NAME 13
#define SQL_SEARCH_PATTERN_ESCAPE 14
#define SQL_DBMS_NAME 17
#define SQL_DBMS_VER 18
#define SQL_ACCESSIBLE_TABLES 19
#define SQL_ACCESSIBLE_PROCEDURES 20
#define SQL_CURSOR_COMMIT_BEHAVIOR 23
#define SQL_DATA_SOURCE_READ_ONLY 25
#define SQL_DEFAULT_TXN_ISOLATION 26
#define SQL_IDENTIFIER_CASE 28
#define SQL_IDENTIFIER_QUOTE_CHAR 29
#define SQL_MAX_COLUMN_NAME_LEN 30
#define SQL_MAXIMUM_COLUMN_NAME_LENGTH SQL_MAX_COLUMN_NAME_LEN
#define SQL_MAX_CURSOR_NAME_LEN 31
#define SQL_MAXIMUM_CURSOR_NAME_LENGTH SQL_MAX_CURSOR_NAME_LEN
#define SQL_MAX_SCHEMA_NAME_LEN 32
#define SQL_MAXIMUM_SCHEMA_NAME_LENGTH SQL_MAX_SCHEMA_NAME_LEN
#define SQL_MAX_CATALOG_NAME_LEN 34
#define SQL_MAXIMUM_CATALOG_NAME_LENGTH SQL_MAX_CATALOG_NAME_LEN
#define SQL_MAX_TABLE_NAME_LEN 35
#define SQL_SCROLL_CONCURRENCY 43
#define SQL_TXN_CAPABLE 46
#define SQL_TRANSACTION_CAPABLE SQL_TXN_CAPABLE
#define SQL_USER_NAME 47
#define SQL_TXN_ISOLATION_OPTION 72
#define SQL_TRANSACTION_ISOLATION_OPTION SQL_TXN_ISOLATION_OPTION
#define SQL_INTEGRITY 73
#define SQL_GETDATA_EXTENSIONS 81
#define SQL_NULL_COLLATION 85
#define SQL_ALTER_TABLE 86
#define SQL_ORDER_BY_COLUMNS_IN_SELECT 90
#define SQL_SPECIAL_CHARACTERS 94
#define SQL_MAX_COLUMNS_IN_GROUP_BY 97
#define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY SQL_MAX_COLUMNS_IN_GROUP_BY
#define SQL_MAX_COLUMNS_IN_INDEX 98
#define SQL_MAXIMUM_COLUMNS_IN_INDEX SQL_MAX_COLUMNS_IN_INDEX
#define SQL_MAX_COLUMNS_IN_ORDER_BY 99
#define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY SQL_MAX_COLUMNS_IN_ORDER_BY
#define SQL_MAX_COLUMNS_IN_SELECT 100
#define SQL_MAXIMUM_COLUMNS_IN_SELECT SQL_MAX_COLUMNS_IN_SELECT
#define SQL_MAX_COLUMNS_IN_TABLE 101
#define SQL_MAX_INDEX_SIZE 102
#define SQL_MAXIMUM_INDEX_SIZE SQL_MAX_INDEX_SIZE
#define SQL_MAX_ROW_SIZE 104
#define SQL_MAXIMUM_ROW_SIZE SQL_MAX_ROW_SIZE
#define SQL_MAX_STATEMENT_LEN 105
#define SQL_MAXIMUM_STATEMENT_LENGTH SQL_MAX_STATEMENT_LEN
#define SQL_MAX_TABLES_IN_SELECT 106
#define SQL_MAXIMUM_TABLES_IN_SELECT SQL_MAX_TABLES_IN_SELECT
#define SQL_MAX_USER_NAME_LEN 107
#define SQL_MAXIMUM_USER_NAME_LENGTH SQL_MAX_USER_NAME_LEN
#if (ODBCVER >= 0x0300)
#define SQL_OJ_CAPABILITIES 115
#define SQL_OUTER_JOIN_CAPABILITIES SQL_OJ_CAPABILITIES
#endif /* ODBCVER >= 0x0300 */
#if (ODBCVER >= 0x0300)
#define SQL_XOPEN_CLI_YEAR 10000
#define SQL_CURSOR_SENSITIVITY 10001
#define SQL_DESCRIBE_PARAMETER 10002
#define SQL_CATALOG_NAME 10003
#define SQL_COLLATION_SEQ 10004
#define SQL_MAX_IDENTIFIER_LEN 10005
#define SQL_MAXIMUM_IDENTIFIER_LENGTH SQL_MAX_IDENTIFIER_LEN
#endif /* ODBCVER >= 0x0300 */
/* SQL_ALTER_TABLE bitmasks */
#if (ODBCVER >= 0x0200)
#define SQL_AT_ADD_COLUMN 0x00000001L
#define SQL_AT_DROP_COLUMN 0x00000002L
#endif /* ODBCVER >= 0x0200 */
#if (ODBCVER >= 0x0300)
#define SQL_AT_ADD_CONSTRAINT 0x00000008L
/* The following bitmasks are ODBC extensions and defined in sqlext.h
*#define SQL_AT_COLUMN_SINGLE 0x00000020L
*#define SQL_AT_ADD_COLUMN_DEFAULT 0x00000040L
*#define SQL_AT_ADD_COLUMN_COLLATION 0x00000080L
*#define SQL_AT_SET_COLUMN_DEFAULT 0x00000100L
*#define SQL_AT_DROP_COLUMN_DEFAULT 0x00000200L
*#define SQL_AT_DROP_COLUMN_CASCADE 0x00000400L
*#define SQL_AT_DROP_COLUMN_RESTRICT 0x00000800L
*#define SQL_AT_ADD_TABLE_CONSTRAINT 0x00001000L
*#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE 0x00002000L
*#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT 0x00004000L
*#define SQL_AT_CONSTRAINT_NAME_DEFINITION 0x00008000L
*#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED 0x00010000L
*#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE 0x00020000L
*#define SQL_AT_CONSTRAINT_DEFERRABLE 0x00040000L
*#define SQL_AT_CONSTRAINT_NON_DEFERRABLE 0x00080000L
*/
#endif /* ODBCVER >= 0x0300 */
/* SQL_ASYNC_MODE values */
#if (ODBCVER >= 0x0300)
#define SQL_AM_NONE 0
#define SQL_AM_CONNECTION 1
#define SQL_AM_STATEMENT 2
#endif
/* SQL_CURSOR_COMMIT_BEHAVIOR values */
#define SQL_CB_DELETE 0
#define SQL_CB_CLOSE 1
#define SQL_CB_PRESERVE 2
/* SQL_FETCH_DIRECTION bitmasks */
#define SQL_FD_FETCH_NEXT 0x00000001L
#define SQL_FD_FETCH_FIRST 0x00000002L
#define SQL_FD_FETCH_LAST 0x00000004L
#define SQL_FD_FETCH_PRIOR 0x00000008L
#define SQL_FD_FETCH_ABSOLUTE 0x00000010L
#define SQL_FD_FETCH_RELATIVE 0x00000020L
/* SQL_GETDATA_EXTENSIONS bitmasks */
#define SQL_GD_ANY_COLUMN 0x00000001L
#define SQL_GD_ANY_ORDER 0x00000002L
/* SQL_IDENTIFIER_CASE values */
#define SQL_IC_UPPER 1
#define SQL_IC_LOWER 2
#define SQL_IC_SENSITIVE 3
#define SQL_IC_MIXED 4
/* SQL_OJ_CAPABILITIES bitmasks */
/* NB: this means 'outer join', not what you may be thinking */
#if (ODBCVER >= 0x0201)
#define SQL_OJ_LEFT 0x00000001L
#define SQL_OJ_RIGHT 0x00000002L
#define SQL_OJ_FULL 0x00000004L
#define SQL_OJ_NESTED 0x00000008L
#define SQL_OJ_NOT_ORDERED 0x00000010L
#define SQL_OJ_INNER 0x00000020L
#define SQL_OJ_ALL_COMPARISON_OPS 0x00000040L
#endif
/* SQL_SCROLL_CONCURRENCY bitmasks */
#define SQL_SCCO_READ_ONLY 0x00000001L
#define SQL_SCCO_LOCK 0x00000002L
#define SQL_SCCO_OPT_ROWVER 0x00000004L
#define SQL_SCCO_OPT_VALUES 0x00000008L
/* SQL_TXN_CAPABLE values */
#define SQL_TC_NONE 0
#define SQL_TC_DML 1
#define SQL_TC_ALL 2
#define SQL_TC_DDL_COMMIT 3
#define SQL_TC_DDL_IGNORE 4
/* SQL_TXN_ISOLATION_OPTION bitmasks */
#define SQL_TXN_READ_UNCOMMITTED 0x00000001L
#define SQL_TRANSACTION_READ_UNCOMMITTED SQL_TXN_READ_UNCOMMITTED
#define SQL_TXN_READ_COMMITTED 0x00000002L
#define SQL_TRANSACTION_READ_COMMITTED SQL_TXN_READ_COMMITTED
#define SQL_TXN_REPEATABLE_READ 0x00000004L
#define SQL_TRANSACTION_REPEATABLE_READ SQL_TXN_REPEATABLE_READ
#define SQL_TXN_SERIALIZABLE 0x00000008L
#define SQL_TRANSACTION_SERIALIZABLE SQL_TXN_SERIALIZABLE
/* SQL_NULL_COLLATION values */
#define SQL_NC_HIGH 0
#define SQL_NC_LOW 1
#ifndef RC_INVOKED
SQLRETURN SQL_API SQLAllocConnect(SQLHENV EnvironmentHandle,
SQLHDBC *ConnectionHandle);
SQLRETURN SQL_API SQLAllocEnv(SQLHENV *EnvironmentHandle);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLAllocHandle(SQLSMALLINT HandleType,
SQLHANDLE InputHandle, SQLHANDLE *OutputHandle);
#endif
SQLRETURN SQL_API SQLAllocStmt(SQLHDBC ConnectionHandle,
SQLHSTMT *StatementHandle);
SQLRETURN SQL_API SQLBindCol(SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
SQLPOINTER TargetValue, SQLLEN BufferLength,
SQLLEN *StrLen_or_Ind);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLBindParam(SQLHSTMT StatementHandle,
SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
SQLSMALLINT ParameterType, SQLULEN LengthPrecision,
SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
SQLLEN *StrLen_or_Ind);
#endif
SQLRETURN SQL_API SQLCancel(SQLHSTMT StatementHandle);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLCloseCursor(SQLHSTMT StatementHandle);
#ifdef _WIN64
SQLRETURN SQL_API SQLColAttribute (SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
SQLSMALLINT *StringLength, SQLLEN *NumericAttribute);
#else
SQLRETURN SQL_API SQLColAttribute (SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
SQLSMALLINT *StringLength, SQLPOINTER NumericAttribute);
#endif
#endif
SQLRETURN SQL_API SQLColumns(SQLHSTMT StatementHandle,
SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
SQLCHAR *TableName, SQLSMALLINT NameLength3,
SQLCHAR *ColumnName, SQLSMALLINT NameLength4);
SQLRETURN SQL_API SQLConnect(SQLHDBC ConnectionHandle,
SQLCHAR *ServerName, SQLSMALLINT NameLength1,
SQLCHAR *UserName, SQLSMALLINT NameLength2,
SQLCHAR *Authentication, SQLSMALLINT NameLength3);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLCopyDesc(SQLHDESC SourceDescHandle,
SQLHDESC TargetDescHandle);
#endif
SQLRETURN SQL_API SQLDataSources(SQLHENV EnvironmentHandle,
SQLUSMALLINT Direction, SQLCHAR *ServerName,
SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
SQLCHAR *Description, SQLSMALLINT BufferLength2,
SQLSMALLINT *NameLength2);
SQLRETURN SQL_API SQLDescribeCol(SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
SQLSMALLINT *DataType, SQLULEN *ColumnSize,
SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable);
SQLRETURN SQL_API SQLDisconnect(SQLHDBC ConnectionHandle);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT CompletionType);
#endif
SQLRETURN SQL_API SQLError(SQLHENV EnvironmentHandle,
SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
SQLCHAR *MessageText, SQLSMALLINT BufferLength,
SQLSMALLINT *TextLength);
SQLRETURN SQL_API SQLExecDirect(SQLHSTMT StatementHandle,
SQLCHAR *StatementText, SQLINTEGER TextLength);
SQLRETURN SQL_API SQLExecute(SQLHSTMT StatementHandle);
SQLRETURN SQL_API SQLFetch(SQLHSTMT StatementHandle);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLFetchScroll(SQLHSTMT StatementHandle,
SQLSMALLINT FetchOrientation, SQLLEN FetchOffset);
#endif
SQLRETURN SQL_API SQLFreeConnect(SQLHDBC ConnectionHandle);
SQLRETURN SQL_API SQLFreeEnv(SQLHENV EnvironmentHandle);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle);
#endif
SQLRETURN SQL_API SQLFreeStmt(SQLHSTMT StatementHandle,
SQLUSMALLINT Option);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLGetConnectAttr(SQLHDBC ConnectionHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER BufferLength, SQLINTEGER *StringLength);
#endif
SQLRETURN SQL_API SQLGetConnectOption(SQLHDBC ConnectionHandle,
SQLUSMALLINT Option, SQLPOINTER Value);
SQLRETURN SQL_API SQLGetCursorName(SQLHSTMT StatementHandle,
SQLCHAR *CursorName, SQLSMALLINT BufferLength,
SQLSMALLINT *NameLength);
SQLRETURN SQL_API SQLGetData(SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
SQLPOINTER TargetValue, SQLLEN BufferLength,
SQLLEN *StrLen_or_Ind);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLGetDescField(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
SQLPOINTER Value, SQLINTEGER BufferLength,
SQLINTEGER *StringLength);
SQLRETURN SQL_API SQLGetDescRec(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLCHAR *Name,
SQLSMALLINT BufferLength, SQLSMALLINT *StringLength,
SQLSMALLINT *Type, SQLSMALLINT *SubType,
SQLLEN *Length, SQLSMALLINT *Precision,
SQLSMALLINT *Scale, SQLSMALLINT *Nullable);
SQLRETURN SQL_API SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
SQLPOINTER DiagInfo, SQLSMALLINT BufferLength,
SQLSMALLINT *StringLength);
SQLRETURN SQL_API SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT RecNumber, SQLCHAR *Sqlstate,
SQLINTEGER *NativeError, SQLCHAR *MessageText,
SQLSMALLINT BufferLength, SQLSMALLINT *TextLength);
SQLRETURN SQL_API SQLGetEnvAttr(SQLHENV EnvironmentHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER BufferLength, SQLINTEGER *StringLength);
#endif /* ODBCVER >= 0x0300 */
SQLRETURN SQL_API SQLGetFunctions(SQLHDBC ConnectionHandle,
SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
SQLRETURN SQL_API SQLGetInfo(SQLHDBC ConnectionHandle,
SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLGetStmtAttr(SQLHSTMT StatementHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER BufferLength, SQLINTEGER *StringLength);
#endif /* ODBCVER >= 0x0300 */
SQLRETURN SQL_API SQLGetStmtOption(SQLHSTMT StatementHandle,
SQLUSMALLINT Option, SQLPOINTER Value);
SQLRETURN SQL_API SQLGetTypeInfo(SQLHSTMT StatementHandle,
SQLSMALLINT DataType);
SQLRETURN SQL_API SQLNumResultCols(SQLHSTMT StatementHandle,
SQLSMALLINT *ColumnCount);
SQLRETURN SQL_API SQLParamData(SQLHSTMT StatementHandle,
SQLPOINTER *Value);
SQLRETURN SQL_API SQLPrepare(SQLHSTMT StatementHandle,
SQLCHAR *StatementText, SQLINTEGER TextLength);
SQLRETURN SQL_API SQLPutData(SQLHSTMT StatementHandle,
SQLPOINTER Data, SQLLEN StrLen_or_Ind);
SQLRETURN SQL_API SQLRowCount(SQLHSTMT StatementHandle,
SQLLEN* RowCount);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLSetConnectAttr(SQLHDBC ConnectionHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER StringLength);
#endif /* ODBCVER >= 0x0300 */
SQLRETURN SQL_API SQLSetConnectOption(SQLHDBC ConnectionHandle,
SQLUSMALLINT Option, SQLULEN Value);
SQLRETURN SQL_API SQLSetCursorName(SQLHSTMT StatementHandle,
SQLCHAR *CursorName, SQLSMALLINT NameLength);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLSetDescField(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
SQLPOINTER Value, SQLINTEGER BufferLength);
SQLRETURN SQL_API SQLSetDescRec(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT Type,
SQLSMALLINT SubType, SQLLEN Length,
SQLSMALLINT Precision, SQLSMALLINT Scale,
SQLPOINTER Data, SQLLEN *StringLength,
SQLLEN *Indicator);
SQLRETURN SQL_API SQLSetEnvAttr(SQLHENV EnvironmentHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER StringLength);
#endif /* ODBCVER >= 0x0300 */
SQLRETURN SQL_API SQLSetParam(SQLHSTMT StatementHandle,
SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
SQLSMALLINT ParameterType, SQLULEN LengthPrecision,
SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
SQLLEN *StrLen_or_Ind);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLSetStmtAttr(SQLHSTMT StatementHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER StringLength);
#endif
SQLRETURN SQL_API SQLSetStmtOption(SQLHSTMT StatementHandle,
SQLUSMALLINT Option, SQLULEN Value);
SQLRETURN SQL_API SQLSpecialColumns(SQLHSTMT StatementHandle,
SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
SQLSMALLINT NameLength2, SQLCHAR *TableName,
SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
SQLUSMALLINT Nullable);
SQLRETURN SQL_API SQLStatistics(SQLHSTMT StatementHandle,
SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
SQLCHAR *TableName, SQLSMALLINT NameLength3,
SQLUSMALLINT Unique, SQLUSMALLINT Reserved);
SQLRETURN SQL_API SQLTables(SQLHSTMT StatementHandle,
SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
SQLCHAR *TableName, SQLSMALLINT NameLength3,
SQLCHAR *TableType, SQLSMALLINT NameLength4);
SQLRETURN SQL_API SQLTransact(SQLHENV EnvironmentHandle,
SQLHDBC ConnectionHandle, SQLUSMALLINT CompletionType);
#endif /* RC_INVOKED */
#ifdef __cplusplus
} /* End of extern "C" { */
#endif /* __cplusplus */
#endif /* #ifndef __SQL */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,305 @@
//-----------------------------------------------------------------------------
// File: sqltypes.h
//
// Copyright: Copyright (c) Microsoft Corporation
//
// Contents: This file defines the types used in ODBC
//
// Comments:
//
//-----------------------------------------------------------------------------
#ifndef __SQLTYPES
#define __SQLTYPES
/* if ODBCVER is not defined, assume version 3.51 */
#ifndef ODBCVER
#define ODBCVER 0x0351
#endif /* ODBCVER */
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
/* environment specific definitions */
#ifndef EXPORT
#define EXPORT
#endif
#ifdef WIN32
#define SQL_API __stdcall
#else
#define SQL_API
#endif
#ifndef RC_INVOKED
/* API declaration data types */
typedef unsigned char SQLCHAR;
#if (ODBCVER >= 0x0300)
typedef signed char SQLSCHAR;
typedef unsigned char SQLDATE;
typedef unsigned char SQLDECIMAL;
typedef double SQLDOUBLE;
typedef double SQLFLOAT;
#endif
typedef long SQLINTEGER;
typedef unsigned long SQLUINTEGER;
#ifdef _WIN64
typedef INT64 SQLLEN;
typedef UINT64 SQLULEN;
typedef UINT64 SQLSETPOSIROW;
#else
#define SQLLEN SQLINTEGER
#define SQLULEN SQLUINTEGER
#define SQLSETPOSIROW SQLUSMALLINT
#endif
//For Backward compatibility
#ifdef WIN32
typedef SQLULEN SQLROWCOUNT;
typedef SQLULEN SQLROWSETSIZE;
typedef SQLULEN SQLTRANSID;
typedef SQLLEN SQLROWOFFSET;
#endif
#if (ODBCVER >= 0x0300)
typedef unsigned char SQLNUMERIC;
#endif
typedef void * SQLPOINTER;
#if (ODBCVER >= 0x0300)
typedef float SQLREAL;
#endif
typedef short SQLSMALLINT;
typedef unsigned short SQLUSMALLINT;
#if (ODBCVER >= 0x0300)
typedef unsigned char SQLTIME;
typedef unsigned char SQLTIMESTAMP;
typedef unsigned char SQLVARCHAR;
#endif
/* function return type */
typedef SQLSMALLINT SQLRETURN;
/* generic data structures */
#if (ODBCVER >= 0x0300)
#if defined(WIN32) || defined(_WIN64)
typedef void* SQLHANDLE;
#else
typedef SQLINTEGER SQLHANDLE;
#endif /* defined(WIN32) || defined(_WIN64) */
typedef SQLHANDLE SQLHENV;
typedef SQLHANDLE SQLHDBC;
typedef SQLHANDLE SQLHSTMT;
typedef SQLHANDLE SQLHDESC;
#else //ODBCVER < 0x0300
#if defined(WIN32) || defined(_WIN64)
typedef void* SQLHENV;
typedef void* SQLHDBC;
typedef void* SQLHSTMT;
#else
typedef SQLINTEGER SQLHENV;
typedef SQLINTEGER SQLHDBC;
typedef SQLINTEGER SQLHSTMT;
#endif /* defined(WIN32) || defined(_WIN64) */
#endif /* ODBCVER >= 0x0300 */
/* SQL portable types for C */
typedef unsigned char UCHAR;
typedef signed char SCHAR;
typedef SCHAR SQLSCHAR;
typedef long int SDWORD;
typedef short int SWORD;
typedef unsigned long int UDWORD;
typedef unsigned short int UWORD;
#ifndef _WIN64
typedef UDWORD SQLUINTEGER;
#endif
typedef signed long SLONG;
typedef signed short SSHORT;
typedef unsigned long ULONG;
typedef unsigned short USHORT;
typedef double SDOUBLE;
typedef double LDOUBLE;
typedef float SFLOAT;
typedef void* PTR;
typedef void* HENV;
typedef void* HDBC;
typedef void* HSTMT;
typedef signed short RETCODE;
#if defined(WIN32) || defined(OS2)
typedef HWND SQLHWND;
#elif defined (UNIX)
typedef Widget SQLHWND;
#else
/* placehold for future O/S GUI window handle definition */
typedef SQLPOINTER SQLHWND;
#endif
#ifndef __SQLDATE
#define __SQLDATE
/* transfer types for DATE, TIME, TIMESTAMP */
typedef struct tagDATE_STRUCT
{
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
} DATE_STRUCT;
#if (ODBCVER >= 0x0300)
typedef DATE_STRUCT SQL_DATE_STRUCT;
#endif /* ODBCVER >= 0x0300 */
typedef struct tagTIME_STRUCT
{
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
} TIME_STRUCT;
#if (ODBCVER >= 0x0300)
typedef TIME_STRUCT SQL_TIME_STRUCT;
#endif /* ODBCVER >= 0x0300 */
typedef struct tagTIMESTAMP_STRUCT
{
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
SQLUINTEGER fraction;
} TIMESTAMP_STRUCT;
#if (ODBCVER >= 0x0300)
typedef TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT;
#endif /* ODBCVER >= 0x0300 */
/*
* enumerations for DATETIME_INTERVAL_SUBCODE values for interval data types
* these values are from SQL-92
*/
#if (ODBCVER >= 0x0300)
typedef enum
{
SQL_IS_YEAR = 1,
SQL_IS_MONTH = 2,
SQL_IS_DAY = 3,
SQL_IS_HOUR = 4,
SQL_IS_MINUTE = 5,
SQL_IS_SECOND = 6,
SQL_IS_YEAR_TO_MONTH = 7,
SQL_IS_DAY_TO_HOUR = 8,
SQL_IS_DAY_TO_MINUTE = 9,
SQL_IS_DAY_TO_SECOND = 10,
SQL_IS_HOUR_TO_MINUTE = 11,
SQL_IS_HOUR_TO_SECOND = 12,
SQL_IS_MINUTE_TO_SECOND = 13
} SQLINTERVAL;
#endif /* ODBCVER >= 0x0300 */
#if (ODBCVER >= 0x0300)
typedef struct tagSQL_YEAR_MONTH
{
SQLUINTEGER year;
SQLUINTEGER month;
} SQL_YEAR_MONTH_STRUCT;
typedef struct tagSQL_DAY_SECOND
{
SQLUINTEGER day;
SQLUINTEGER hour;
SQLUINTEGER minute;
SQLUINTEGER second;
SQLUINTEGER fraction;
} SQL_DAY_SECOND_STRUCT;
typedef struct tagSQL_INTERVAL_STRUCT
{
SQLINTERVAL interval_type;
SQLSMALLINT interval_sign;
union {
SQL_YEAR_MONTH_STRUCT year_month;
SQL_DAY_SECOND_STRUCT day_second;
} intval;
} SQL_INTERVAL_STRUCT;
#endif /* ODBCVER >= 0x0300 */
#endif /* __SQLDATE */
/* the ODBC C types for SQL_C_SBIGINT and SQL_C_UBIGINT */
#if (ODBCVER >= 0x0300)
#if (_MSC_VER >= 900)
#define ODBCINT64 __int64
#endif
/* If using other compilers, define ODBCINT64 to the
approriate 64 bit integer type */
#ifdef ODBCINT64
typedef ODBCINT64 SQLBIGINT;
typedef unsigned ODBCINT64 SQLUBIGINT;
#endif
#endif /* ODBCVER >= 0x0300 */
/* internal representation of numeric data type */
#if (ODBCVER >= 0x0300)
#define SQL_MAX_NUMERIC_LEN 16
typedef struct tagSQL_NUMERIC_STRUCT
{
SQLCHAR precision;
SQLSCHAR scale;
SQLCHAR sign; /* 1 if positive, 0 if negative */
SQLCHAR val[SQL_MAX_NUMERIC_LEN];
} SQL_NUMERIC_STRUCT;
#endif /* ODBCVER >= 0x0300 */
#if (ODBCVER >= 0x0350)
#ifdef GUID_DEFINED
typedef GUID SQLGUID;
#else
/* size is 16 */
typedef struct tagSQLGUID
{
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[ 8 ];
} SQLGUID;
#endif /* GUID_DEFINED */
#endif /* ODBCVER >= 0x0350 */
typedef SQLULEN BOOKMARK;
#ifdef _WCHAR_T_DEFINED
typedef wchar_t SQLWCHAR;
#else
typedef unsigned short SQLWCHAR;
#endif
#ifdef UNICODE
typedef SQLWCHAR SQLTCHAR;
#else
typedef SQLCHAR SQLTCHAR;
#endif /* UNICODE */
#endif /* RC_INVOKED */
#ifdef __cplusplus
} /* End of extern "C" { */
#endif /* __cplusplus */
#endif /* #ifndef __SQLTYPES */

View File

@ -0,0 +1,817 @@
//-----------------------------------------------------------------------------
// File: sqlucode.h
//
// Copyright: Copyright (c) Microsoft Corporation
//
// Contents: This is the the unicode include for ODBC Core functions
//
// Comments:
//
//-----------------------------------------------------------------------------
#ifndef __SQLUCODE
#define __SQLUCODE
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
#include <sqlext.h>
#define SQL_WCHAR (-8)
#define SQL_WVARCHAR (-9)
#define SQL_WLONGVARCHAR (-10)
#define SQL_C_WCHAR SQL_WCHAR
#ifdef UNICODE
#define SQL_C_TCHAR SQL_C_WCHAR
#else
#define SQL_C_TCHAR SQL_C_CHAR
#endif
#define SQL_SQLSTATE_SIZEW 10 /* size of SQLSTATE for unicode */
#ifndef RC_INVOKED
// UNICODE versions
#ifdef _WIN64
SQLRETURN SQL_API SQLColAttributeW(
SQLHSTMT hstmt,
SQLUSMALLINT iCol,
SQLUSMALLINT iField,
SQLPOINTER pCharAttr,
SQLSMALLINT cbCharAttrMax,
SQLSMALLINT *pcbCharAttr,
SQLLEN *pNumAttr);
#else
SQLRETURN SQL_API SQLColAttributeW(
SQLHSTMT hstmt,
SQLUSMALLINT iCol,
SQLUSMALLINT iField,
SQLPOINTER pCharAttr,
SQLSMALLINT cbCharAttrMax,
SQLSMALLINT *pcbCharAttr,
SQLPOINTER pNumAttr);
#endif
SQLRETURN SQL_API SQLColAttributesW(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLUSMALLINT fDescType,
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT *pcbDesc,
SQLLEN *pfDesc);
SQLRETURN SQL_API SQLConnectW(
SQLHDBC hdbc,
SQLWCHAR *szDSN,
SQLSMALLINT cbDSN,
SQLWCHAR *szUID,
SQLSMALLINT cbUID,
SQLWCHAR *szAuthStr,
SQLSMALLINT cbAuthStr);
SQLRETURN SQL_API SQLDescribeColW(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLWCHAR *szColName,
SQLSMALLINT cbColNameMax,
SQLSMALLINT *pcbColName,
SQLSMALLINT *pfSqlType,
SQLULEN *pcbColDef,
SQLSMALLINT *pibScale,
SQLSMALLINT *pfNullable);
SQLRETURN SQL_API SQLErrorW(
SQLHENV henv,
SQLHDBC hdbc,
SQLHSTMT hstmt,
SQLWCHAR *szSqlState,
SQLINTEGER *pfNativeError,
SQLWCHAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT *pcbErrorMsg);
SQLRETURN SQL_API SQLExecDirectW(
SQLHSTMT hstmt,
SQLWCHAR *szSqlStr,
SQLINTEGER cbSqlStr);
SQLRETURN SQL_API SQLGetConnectAttrW(
SQLHDBC hdbc,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue);
SQLRETURN SQL_API SQLGetCursorNameW(
SQLHSTMT hstmt,
SQLWCHAR *szCursor,
SQLSMALLINT cbCursorMax,
SQLSMALLINT *pcbCursor);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLSetDescFieldW(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT FieldIdentifier,
SQLPOINTER Value,
SQLINTEGER BufferLength);
SQLRETURN SQL_API SQLGetDescFieldW(
SQLHDESC hdesc,
SQLSMALLINT iRecord,
SQLSMALLINT iField,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue);
SQLRETURN SQL_API SQLGetDescRecW(
SQLHDESC hdesc,
SQLSMALLINT iRecord,
SQLWCHAR *szName,
SQLSMALLINT cbNameMax,
SQLSMALLINT *pcbName,
SQLSMALLINT *pfType,
SQLSMALLINT *pfSubType,
SQLLEN *pLength,
SQLSMALLINT *pPrecision,
SQLSMALLINT *pScale,
SQLSMALLINT *pNullable);
SQLRETURN SQL_API SQLGetDiagFieldW(
SQLSMALLINT fHandleType,
SQLHANDLE handle,
SQLSMALLINT iRecord,
SQLSMALLINT fDiagField,
SQLPOINTER rgbDiagInfo,
SQLSMALLINT cbDiagInfoMax,
SQLSMALLINT *pcbDiagInfo);
SQLRETURN SQL_API SQLGetDiagRecW(
SQLSMALLINT fHandleType,
SQLHANDLE handle,
SQLSMALLINT iRecord,
SQLWCHAR *szSqlState,
SQLINTEGER *pfNativeError,
SQLWCHAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT *pcbErrorMsg);
#endif
SQLRETURN SQL_API SQLPrepareW(
SQLHSTMT hstmt,
SQLWCHAR *szSqlStr,
SQLINTEGER cbSqlStr);
SQLRETURN SQL_API SQLSetConnectAttrW(
SQLHDBC hdbc,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValue);
SQLRETURN SQL_API SQLSetCursorNameW(
SQLHSTMT hstmt,
SQLWCHAR *szCursor,
SQLSMALLINT cbCursor);
SQLRETURN SQL_API SQLColumnsW(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLWCHAR *szColumnName,
SQLSMALLINT cbColumnName);
SQLRETURN SQL_API SQLGetConnectOptionW(
SQLHDBC hdbc,
SQLUSMALLINT fOption,
SQLPOINTER pvParam);
SQLRETURN SQL_API SQLGetInfoW(
SQLHDBC hdbc,
SQLUSMALLINT fInfoType,
SQLPOINTER rgbInfoValue,
SQLSMALLINT cbInfoValueMax,
SQLSMALLINT *pcbInfoValue);
SQLRETURN SQL_API SQLGetTypeInfoW(
SQLHSTMT StatementHandle,
SQLSMALLINT DataType);
SQLRETURN SQL_API SQLSetConnectOptionW(
SQLHDBC hdbc,
SQLUSMALLINT fOption,
SQLULEN vParam);
SQLRETURN SQL_API SQLSpecialColumnsW(
SQLHSTMT hstmt,
SQLUSMALLINT fColType,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT fScope,
SQLUSMALLINT fNullable);
SQLRETURN SQL_API SQLStatisticsW(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT fUnique,
SQLUSMALLINT fAccuracy);
SQLRETURN SQL_API SQLTablesW(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLWCHAR *szTableType,
SQLSMALLINT cbTableType);
SQLRETURN SQL_API SQLDataSourcesW(
SQLHENV henv,
SQLUSMALLINT fDirection,
SQLWCHAR *szDSN,
SQLSMALLINT cbDSNMax,
SQLSMALLINT *pcbDSN,
SQLWCHAR *szDescription,
SQLSMALLINT cbDescriptionMax,
SQLSMALLINT *pcbDescription);
SQLRETURN SQL_API SQLDriverConnectW(
SQLHDBC hdbc,
SQLHWND hwnd,
SQLWCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLWCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut,
SQLUSMALLINT fDriverCompletion);
SQLRETURN SQL_API SQLBrowseConnectW(
SQLHDBC hdbc,
SQLWCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLWCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut);
SQLRETURN SQL_API SQLColumnPrivilegesW(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLWCHAR *szColumnName,
SQLSMALLINT cbColumnName);
SQLRETURN SQL_API SQLGetStmtAttrW(
SQLHSTMT hstmt,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue);
SQLRETURN SQL_API SQLSetStmtAttrW(
SQLHSTMT hstmt,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax);
SQLRETURN SQL_API SQLForeignKeysW(
SQLHSTMT hstmt,
SQLWCHAR *szPkCatalogName,
SQLSMALLINT cbPkCatalogName,
SQLWCHAR *szPkSchemaName,
SQLSMALLINT cbPkSchemaName,
SQLWCHAR *szPkTableName,
SQLSMALLINT cbPkTableName,
SQLWCHAR *szFkCatalogName,
SQLSMALLINT cbFkCatalogName,
SQLWCHAR *szFkSchemaName,
SQLSMALLINT cbFkSchemaName,
SQLWCHAR *szFkTableName,
SQLSMALLINT cbFkTableName);
SQLRETURN SQL_API SQLNativeSqlW(
SQLHDBC hdbc,
SQLWCHAR *szSqlStrIn,
SQLINTEGER cbSqlStrIn,
SQLWCHAR *szSqlStr,
SQLINTEGER cbSqlStrMax,
SQLINTEGER *pcbSqlStr);
SQLRETURN SQL_API SQLPrimaryKeysW(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName);
SQLRETURN SQL_API SQLProcedureColumnsW(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szProcName,
SQLSMALLINT cbProcName,
SQLWCHAR *szColumnName,
SQLSMALLINT cbColumnName);
SQLRETURN SQL_API SQLProceduresW(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szProcName,
SQLSMALLINT cbProcName);
SQLRETURN SQL_API SQLTablePrivilegesW(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName);
SQLRETURN SQL_API SQLDriversW(
SQLHENV henv,
SQLUSMALLINT fDirection,
SQLWCHAR *szDriverDesc,
SQLSMALLINT cbDriverDescMax,
SQLSMALLINT *pcbDriverDesc,
SQLWCHAR *szDriverAttributes,
SQLSMALLINT cbDrvrAttrMax,
SQLSMALLINT *pcbDrvrAttr);
// ANSI versions
#ifdef _WIN64
SQLRETURN SQL_API SQLColAttributeA(
SQLHSTMT hstmt,
SQLSMALLINT iCol,
SQLSMALLINT iField,
SQLPOINTER pCharAttr,
SQLSMALLINT cbCharAttrMax,
SQLSMALLINT *pcbCharAttr,
SQLLEN *pNumAttr);
#else
SQLRETURN SQL_API SQLColAttributeA(
SQLHSTMT hstmt,
SQLSMALLINT iCol,
SQLSMALLINT iField,
SQLPOINTER pCharAttr,
SQLSMALLINT cbCharAttrMax,
SQLSMALLINT *pcbCharAttr,
SQLPOINTER pNumAttr);
#endif
SQLRETURN SQL_API SQLColAttributesA(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLUSMALLINT fDescType,
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT *pcbDesc,
SQLLEN *pfDesc);
SQLRETURN SQL_API SQLConnectA(
SQLHDBC hdbc,
SQLCHAR *szDSN,
SQLSMALLINT cbDSN,
SQLCHAR *szUID,
SQLSMALLINT cbUID,
SQLCHAR *szAuthStr,
SQLSMALLINT cbAuthStr);
SQLRETURN SQL_API SQLDescribeColA(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLCHAR *szColName,
SQLSMALLINT cbColNameMax,
SQLSMALLINT *pcbColName,
SQLSMALLINT *pfSqlType,
SQLUINTEGER *pcbColDef,
SQLSMALLINT *pibScale,
SQLSMALLINT *pfNullable);
SQLRETURN SQL_API SQLErrorA(
SQLHENV henv,
SQLHDBC hdbc,
SQLHSTMT hstmt,
SQLCHAR *szSqlState,
SQLINTEGER *pfNativeError,
SQLCHAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT *pcbErrorMsg);
SQLRETURN SQL_API SQLExecDirectA(
SQLHSTMT hstmt,
SQLCHAR *szSqlStr,
SQLINTEGER cbSqlStr);
SQLRETURN SQL_API SQLGetConnectAttrA(
SQLHDBC hdbc,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue);
SQLRETURN SQL_API SQLGetCursorNameA(
SQLHSTMT hstmt,
SQLCHAR *szCursor,
SQLSMALLINT cbCursorMax,
SQLSMALLINT *pcbCursor);
#if (ODBCVER >= 0x0300)
SQLRETURN SQL_API SQLGetDescFieldA(
SQLHDESC hdesc,
SQLSMALLINT iRecord,
SQLSMALLINT iField,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue);
SQLRETURN SQL_API SQLGetDescRecA(
SQLHDESC hdesc,
SQLSMALLINT iRecord,
SQLCHAR *szName,
SQLSMALLINT cbNameMax,
SQLSMALLINT *pcbName,
SQLSMALLINT *pfType,
SQLSMALLINT *pfSubType,
SQLINTEGER *pLength,
SQLSMALLINT *pPrecision,
SQLSMALLINT *pScale,
SQLSMALLINT *pNullable);
SQLRETURN SQL_API SQLGetDiagFieldA(
SQLSMALLINT fHandleType,
SQLHANDLE handle,
SQLSMALLINT iRecord,
SQLSMALLINT fDiagField,
SQLPOINTER rgbDiagInfo,
SQLSMALLINT cbDiagInfoMax,
SQLSMALLINT *pcbDiagInfo);
SQLRETURN SQL_API SQLGetDiagRecA(
SQLSMALLINT fHandleType,
SQLHANDLE handle,
SQLSMALLINT iRecord,
SQLCHAR *szSqlState,
SQLINTEGER *pfNativeError,
SQLCHAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT *pcbErrorMsg);
SQLRETURN SQL_API SQLGetStmtAttrA(
SQLHSTMT hstmt,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue);
#endif
SQLRETURN SQL_API SQLGetTypeInfoA(
SQLHSTMT StatementHandle,
SQLSMALLINT DataTyoe);
SQLRETURN SQL_API SQLPrepareA(
SQLHSTMT hstmt,
SQLCHAR *szSqlStr,
SQLINTEGER cbSqlStr);
SQLRETURN SQL_API SQLSetConnectAttrA(
SQLHDBC hdbc,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValue);
SQLRETURN SQL_API SQLSetCursorNameA(
SQLHSTMT hstmt,
SQLCHAR *szCursor,
SQLSMALLINT cbCursor);
SQLRETURN SQL_API SQLColumnsA(
SQLHSTMT hstmt,
SQLCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLCHAR *szColumnName,
SQLSMALLINT cbColumnName);
SQLRETURN SQL_API SQLGetConnectOptionA(
SQLHDBC hdbc,
SQLUSMALLINT fOption,
SQLPOINTER pvParam);
SQLRETURN SQL_API SQLGetInfoA(
SQLHDBC hdbc,
SQLUSMALLINT fInfoType,
SQLPOINTER rgbInfoValue,
SQLSMALLINT cbInfoValueMax,
SQLSMALLINT* pcbInfoValue);
SQLRETURN SQL_API SQLGetStmtOptionA(
SQLHSTMT hstmt,
SQLUSMALLINT fOption,
SQLPOINTER pvParam);
SQLRETURN SQL_API SQLSetConnectOptionA(
SQLHDBC hdbc,
SQLUSMALLINT fOption,
SQLULEN vParam);
SQLRETURN SQL_API SQLSetStmtOptionA(
SQLHSTMT hstmt,
SQLUSMALLINT fOption,
SQLULEN vParam);
SQLRETURN SQL_API SQLSpecialColumnsA(
SQLHSTMT hstmt,
SQLUSMALLINT fColType,
SQLCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT fScope,
SQLUSMALLINT fNullable);
SQLRETURN SQL_API SQLStatisticsA(
SQLHSTMT hstmt,
SQLCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT fUnique,
SQLUSMALLINT fAccuracy);
SQLRETURN SQL_API SQLTablesA(
SQLHSTMT hstmt,
SQLCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLCHAR *szTableType,
SQLSMALLINT cbTableType);
SQLRETURN SQL_API SQLDataSourcesA(
SQLHENV henv,
SQLUSMALLINT fDirection,
SQLCHAR *szDSN,
SQLSMALLINT cbDSNMax,
SQLSMALLINT *pcbDSN,
SQLCHAR *szDescription,
SQLSMALLINT cbDescriptionMax,
SQLSMALLINT *pcbDescription);
SQLRETURN SQL_API SQLDriverConnectA(
SQLHDBC hdbc,
SQLHWND hwnd,
SQLCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut,
SQLUSMALLINT fDriverCompletion);
SQLRETURN SQL_API SQLBrowseConnectA(
SQLHDBC hdbc,
SQLCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut);
SQLRETURN SQL_API SQLColumnPrivilegesA(
SQLHSTMT hstmt,
SQLCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLCHAR *szColumnName,
SQLSMALLINT cbColumnName);
SQLRETURN SQL_API SQLDescribeParamA(
SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT *pfSqlType,
SQLUINTEGER *pcbParamDef,
SQLSMALLINT *pibScale,
SQLSMALLINT *pfNullable);
SQLRETURN SQL_API SQLForeignKeysA(
SQLHSTMT hstmt,
SQLCHAR *szPkCatalogName,
SQLSMALLINT cbPkCatalogName,
SQLCHAR *szPkSchemaName,
SQLSMALLINT cbPkSchemaName,
SQLCHAR *szPkTableName,
SQLSMALLINT cbPkTableName,
SQLCHAR *szFkCatalogName,
SQLSMALLINT cbFkCatalogName,
SQLCHAR *szFkSchemaName,
SQLSMALLINT cbFkSchemaName,
SQLCHAR *szFkTableName,
SQLSMALLINT cbFkTableName);
SQLRETURN SQL_API SQLNativeSqlA(
SQLHDBC hdbc,
SQLCHAR *szSqlStrIn,
SQLINTEGER cbSqlStrIn,
SQLCHAR *szSqlStr,
SQLINTEGER cbSqlStrMax,
SQLINTEGER *pcbSqlStr);
SQLRETURN SQL_API SQLPrimaryKeysA(
SQLHSTMT hstmt,
SQLCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *szTableName,
SQLSMALLINT cbTableName);
SQLRETURN SQL_API SQLProcedureColumnsA(
SQLHSTMT hstmt,
SQLCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *szProcName,
SQLSMALLINT cbProcName,
SQLCHAR *szColumnName,
SQLSMALLINT cbColumnName);
SQLRETURN SQL_API SQLProceduresA(
SQLHSTMT hstmt,
SQLCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *szProcName,
SQLSMALLINT cbProcName);
SQLRETURN SQL_API SQLTablePrivilegesA(
SQLHSTMT hstmt,
SQLCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *szTableName,
SQLSMALLINT cbTableName);
SQLRETURN SQL_API SQLDriversA(
SQLHENV henv,
SQLUSMALLINT fDirection,
SQLCHAR *szDriverDesc,
SQLSMALLINT cbDriverDescMax,
SQLSMALLINT *pcbDriverDesc,
SQLCHAR *szDriverAttributes,
SQLSMALLINT cbDrvrAttrMax,
SQLSMALLINT *pcbDrvrAttr);
//---------------------------------------------
// Mapping macros for Unicode
//---------------------------------------------
#ifndef SQL_NOUNICODEMAP // define this to disable the mapping
#ifdef UNICODE
#define SQLColAttribute SQLColAttributeW
#define SQLColAttributes SQLColAttributesW
#define SQLConnect SQLConnectW
#define SQLDescribeCol SQLDescribeColW
#define SQLError SQLErrorW
#define SQLExecDirect SQLExecDirectW
#define SQLGetConnectAttr SQLGetConnectAttrW
#define SQLGetCursorName SQLGetCursorNameW
#define SQLGetDescField SQLGetDescFieldW
#define SQLGetDescRec SQLGetDescRecW
#define SQLGetDiagField SQLGetDiagFieldW
#define SQLGetDiagRec SQLGetDiagRecW
#define SQLPrepare SQLPrepareW
#define SQLSetConnectAttr SQLSetConnectAttrW
#define SQLSetCursorName SQLSetCursorNameW
#define SQLSetDescField SQLSetDescFieldW
#define SQLSetStmtAttr SQLSetStmtAttrW
#define SQLGetStmtAttr SQLGetStmtAttrW
#define SQLColumns SQLColumnsW
#define SQLGetConnectOption SQLGetConnectOptionW
#define SQLGetInfo SQLGetInfoW
#define SQLGetTypeInfo SQLGetTypeInfoW
#define SQLSetConnectOption SQLSetConnectOptionW
#define SQLSpecialColumns SQLSpecialColumnsW
#define SQLStatistics SQLStatisticsW
#define SQLTables SQLTablesW
#define SQLDataSources SQLDataSourcesW
#define SQLDriverConnect SQLDriverConnectW
#define SQLBrowseConnect SQLBrowseConnectW
#define SQLColumnPrivileges SQLColumnPrivilegesW
#define SQLForeignKeys SQLForeignKeysW
#define SQLNativeSql SQLNativeSqlW
#define SQLPrimaryKeys SQLPrimaryKeysW
#define SQLProcedureColumns SQLProcedureColumnsW
#define SQLProcedures SQLProceduresW
#define SQLTablePrivileges SQLTablePrivilegesW
#define SQLDrivers SQLDriversW
#endif /* UNICODE */
#endif /* SQL_NOUNICODEMAP */
#endif /* RC_INVOKED */
#ifdef __cplusplus
} /* End of extern "C" { */
#endif /* __cplusplus */
#endif /* #ifndef __SQLUCODE */

View File

@ -0,0 +1,201 @@
// ora7API.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__ORA7API_H__)
#define __ORA7API_H__
#include "SQLAPI.h"
// API header(s)
#include <ociapr.h>
#include <ocidfn.h>
extern long g_nORA7DLLVersionLoaded;
extern void AddORA7Support();
extern void ReleaseORA7Support();
/*
* Oci BIND (Piecewise or with Skips)
*/
typedef sword (*obindps_t)(struct cda_def *cursor, ub1 opcode, text *sqlvar,
sb4 sqlvl, ub1 *pvctx, sb4 progvl,
sword ftype, sword scale,
sb2 *indp, ub2 *alen, ub2 *arcode,
sb4 pv_skip, sb4 ind_skip, sb4 alen_skip, sb4 rc_skip,
ub4 maxsiz, ub4 *cursiz,
text *fmt, sb4 fmtl, sword fmtt);
typedef sword (*obreak_t)(struct cda_def *lda);
typedef sword (*ocan_t)(struct cda_def *cursor);
typedef sword (*oclose_t)(struct cda_def *cursor);
typedef sword (*ocof_t)(struct cda_def *lda);
typedef sword (*ocom_t)(struct cda_def *lda);
typedef sword (*ocon_t)(struct cda_def *lda);
/*
* Oci DEFINe (Piecewise or with Skips)
*/
typedef sword (*odefinps_t)(struct cda_def *cursor, ub1 opcode, sword pos,ub1 *bufctx,
sb4 bufl, sword ftype, sword scale,
sb2 *indp, text *fmt, sb4 fmtl, sword fmtt,
ub2 *rlen, ub2 *rcode,
sb4 pv_skip, sb4 ind_skip, sb4 alen_skip, sb4 rc_skip);
typedef sword (*odessp_t)(struct cda_def *cursor, text *objnam, size_t onlen,
ub1 *rsv1, size_t rsv1ln, ub1 *rsv2, size_t rsv2ln,
ub2 *ovrld, ub2 *pos, ub2 *level, text **argnam,
ub2 *arnlen, ub2 *dtype, ub1 *defsup, ub1* mode,
ub4 *dtsiz, sb2 *prec, sb2 *scale, ub1 *radix,
ub4 *spare, ub4 *arrsiz);
typedef sword (*odescr_t)(struct cda_def *cursor, sword pos, sb4 *dbsize,
sb2 *dbtype, sb1 *cbuf, sb4 *cbufl, sb4 *dsize,
sb2 *prec, sb2 *scale, sb2 *nullok);
typedef sword (*oerhms_t)(struct cda_def *lda, sb2 rcode, text *buf,
sword bufsiz);
typedef sword (*oermsg_t)(sb2 rcode, text *buf);
typedef sword (*oexec_t)(struct cda_def *cursor);
typedef sword (*oexfet_t)(struct cda_def *cursor, ub4 nrows,
sword cancel, sword exact);
typedef sword (*oexn_t)(struct cda_def *cursor, sword iters, sword rowoff);
typedef sword (*ofen_t)(struct cda_def *cursor, sword nrows);
typedef sword (*ofetch_t)(struct cda_def *cursor);
typedef sword (*oflng_t)(struct cda_def *cursor, sword pos, ub1 *buf,
sb4 bufl, sword dtype, ub4 *retl, sb4 offset);
typedef sword (*ogetpi_t) (struct cda_def *cursor, ub1 *piecep, dvoid **ctxpp,
ub4 *iterp, ub4 *indexp);
typedef sword (*oopt_t) (struct cda_def *cursor, sword rbopt, sword waitopt);
typedef sword (*opinit_t) (ub4 mode);
typedef sword (*olog_t) (struct cda_def *lda, ub1* hda,
text *uid, sword uidl,
text *pswd, sword pswdl,
text *conn, sword connl,
ub4 mode);
typedef sword (*ologof_t) (struct cda_def *lda);
typedef sword (*oopen_t) (struct cda_def *cursor, struct cda_def *lda,
text *dbn, sword dbnl, sword arsize,
text *uid, sword uidl);
typedef sword (*oparse_t) (struct cda_def *cursor, text *sqlstm, sb4 sqllen,
sword defflg, ub4 lngflg);
typedef sword (*orol_t) (struct cda_def *lda);
typedef sword (*osetpi_t) (struct cda_def *cursor, ub1 piece, dvoid *bufp, ub4 *lenp);
typedef void (*sqlld2_t) (struct cda_def *lda, text *cname, sb4 *cnlen);
typedef void (*sqllda_t) (struct cda_def *lda);
/* non-blocking functions */
typedef sword (*onbset_t) (struct cda_def *lda );
typedef sword (*onbtst_t) (struct cda_def *lda );
typedef sword (*onbclr_t) (struct cda_def *lda );
typedef sword (*ognfd_t) (struct cda_def *lda, dvoid *fdp);
/*
* OBSOLETE CALLS
*/
/*
* OBSOLETE BIND CALLS
*/
typedef sword (*obndra_t)(struct cda_def *cursor, text *sqlvar, sword sqlvl,
ub1 *progv, sword progvl, sword ftype, sword scale,
sb2 *indp, ub2 *alen, ub2 *arcode, ub4 maxsiz,
ub4 *cursiz, text *fmt, sword fmtl, sword fmtt);
typedef sword (*obndrn_t)(struct cda_def *cursor, sword sqlvn, ub1 *progv,
sword progvl, sword ftype, sword scale, sb2 *indp,
text *fmt, sword fmtl, sword fmtt);
typedef sword (*obndrv_t)(struct cda_def *cursor, text *sqlvar, sword sqlvl,
ub1 *progv, sword progvl, sword ftype, sword scale,
sb2 *indp, text *fmt, sword fmtl, sword fmtt);
/*
* OBSOLETE DEFINE CALLS
*/
typedef sword (*odefin_t)(struct cda_def *cursor, sword pos, ub1 *buf,
sword bufl, sword ftype, sword scale, sb2 *indp,
text *fmt, sword fmtl, sword fmtt, ub2 *rlen, ub2 *rcode);
/* older calls ; preferred equivalent calls above */
typedef sword (*oname_t) (struct cda_def *cursor, sword pos, sb1 *tbuf,
sb2 *tbufl, sb1 *buf, sb2 *bufl);
typedef sword (*orlon_t) (struct cda_def *lda, ub1 *hda,
text *uid, sword uidl,
text *pswd, sword pswdl,
sword audit);
typedef sword (*olon_t) (struct cda_def *lda, text *uid, sword uidl,
text *pswd, sword pswdl, sword audit);
typedef sword (*osql3_t) (struct cda_def *cda, text *sqlstm, sword sqllen);
typedef sword (*odsc_t) (struct cda_def *cursor, sword pos, sb2 *dbsize,
sb2 *fsize, sb2 *rcode, sb2 *dtype, sb1 *buf,
sb2 *bufl, sb2 *dsize);
// API declarations
class SQLAPI_API ora7API : public saAPI
{
public:
ora7API();
obindps_t obindps;
obreak_t obreak;
ocan_t ocan;
oclose_t oclose;
ocof_t ocof;
ocom_t ocom;
ocon_t ocon;
odefinps_t odefinps;
odessp_t odessp;
odescr_t odescr;
oerhms_t oerhms;
oermsg_t oermsg;
oexec_t oexec;
oexfet_t oexfet;
oexn_t oexn;
ofen_t ofen;
ofetch_t ofetch;
oflng_t oflng;
ogetpi_t ogetpi;
oopt_t oopt;
opinit_t opinit;
olog_t olog;
ologof_t ologof;
oopen_t oopen;
oparse_t oparse;
orol_t orol;
osetpi_t osetpi;
sqlld2_t sqlld2;
sqllda_t sqllda;
onbset_t onbset;
onbtst_t onbtst;
onbclr_t onbclr;
ognfd_t ognfd;
obndra_t obndra;
obndrn_t obndrn;
obndrv_t obndrv;
odefin_t odefin;
oname_t oname;
orlon_t orlon;
olon_t olon;
osql3_t osql3;
odsc_t odsc;
};
class SQLAPI_API ora7ConnectionHandles : public saConnectionHandles
{
public:
ora7ConnectionHandles();
Lda_Def m_lda;
ub1 m_hda[512];
};
class SQLAPI_API ora7CommandHandles : public saCommandHandles
{
public:
ora7CommandHandles();
Cda_Def m_cda;
};
extern ora7API g_ora7API;
#endif // !defined(__ORA7API_H__)

View File

@ -0,0 +1,532 @@
// ora8API.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__ORA8API_H__)
#define __ORA8API_H__
#include "SQLAPI.h"
// API header(s)
#include <oci.h>
extern long g_nORA8DLLVersionLoaded;
extern void AddORA8Support(const SAConnection * pCon);
extern void ReleaseORA8Support();
// 8.0.x calls
typedef sword (*OCIInitialize_t)(ub4 mode, dvoid *ctxp,
dvoid *(*malocfp)(dvoid *ctxp, size_t size),
dvoid *(*ralocfp)(dvoid *ctxp, dvoid *memptr, size_t newsize),
void (*mfreefp)(dvoid *ctxp, dvoid *memptr) );
typedef sword (*OCIHandleAlloc_t)(CONST dvoid *parenth, dvoid **hndlpp, CONST ub4 type,
CONST size_t xtramem_sz, dvoid **usrmempp);
typedef sword (*OCIHandleFree_t)(dvoid *hndlp, CONST ub4 type);
typedef sword (*OCIDescriptorAlloc_t)(CONST dvoid *parenth, dvoid **descpp, CONST ub4 type,
CONST size_t xtramem_sz, dvoid **usrmempp);
typedef sword (*OCIDescriptorFree_t)(dvoid *descp, CONST ub4 type);
typedef sword (*OCIEnvInit_t)(OCIEnv **envp, ub4 mode,
size_t xtramem_sz, dvoid **usrmempp);
typedef sword (*OCIServerAttach_t)(OCIServer *srvhp, OCIError *errhp,
CONST text *dblink, sb4 dblink_len, ub4 mode);
typedef sword (*OCIServerDetach_t)(OCIServer *srvhp, OCIError *errhp, ub4 mode);
typedef sword (*OCISessionBegin_t)(OCISvcCtx *svchp, OCIError *errhp, OCISession *usrhp,
ub4 credt, ub4 mode);
typedef sword (*OCISessionEnd_t)(OCISvcCtx *svchp, OCIError *errhp, OCISession *usrhp,
ub4 mode);
typedef sword (*OCILogon_t)(OCIEnv *envhp, OCIError *errhp, OCISvcCtx **svchp,
CONST text *username, ub4 uname_len,
CONST text *password, ub4 passwd_len,
CONST text *dbname, ub4 dbname_len);
typedef sword (*OCILogoff_t)(OCISvcCtx *svchp, OCIError *errhp);
typedef sword (*OCIPasswordChange_t)(OCISvcCtx *svchp, OCIError *errhp,
CONST text *user_name, ub4 usernm_len,
CONST text *opasswd, ub4 opasswd_len,
CONST text *npasswd, ub4 npasswd_len, ub4 mode);
typedef sword (*OCIStmtPrepare_t)(OCIStmt *stmtp, OCIError *errhp, CONST text *stmt,
ub4 stmt_len, ub4 language, ub4 mode);
typedef sword (*OCIBindByPos_t)(OCIStmt *stmtp, OCIBind **bindp, OCIError *errhp,
ub4 position, dvoid *valuep, sb4 value_sz,
ub2 dty, dvoid *indp, ub2 *alenp, ub2 *rcodep,
ub4 maxarr_len, ub4 *curelep, ub4 mode);
typedef sword (*OCIBindByName_t)(OCIStmt *stmtp, OCIBind **bindp, OCIError *errhp,
CONST text *placeholder, sb4 placeh_len,
dvoid *valuep, sb4 value_sz, ub2 dty,
dvoid *indp, ub2 *alenp, ub2 *rcodep,
ub4 maxarr_len, ub4 *curelep, ub4 mode);
typedef sword (*OCIBindObject_t)(OCIBind *bindp, OCIError *errhp, CONST OCIType *type,
dvoid **pgvpp, ub4 *pvszsp, dvoid **indpp,
ub4 *indszp);
typedef sword (*OCIBindDynamic_t)(OCIBind *bindp, OCIError *errhp, dvoid *ictxp,
OCICallbackInBind icbfp, dvoid *octxp,
OCICallbackOutBind ocbfp);
typedef sword (*OCIBindArrayOfStruct_t)(OCIBind *bindp, OCIError *errhp,
ub4 pvskip, ub4 indskip,
ub4 alskip, ub4 rcskip);
typedef sword (*OCIStmtGetPieceInfo_t)(OCIStmt *stmtp, OCIError *errhp,
dvoid **hndlpp, ub4 *typep,
ub1 *in_outp, ub4 *iterp, ub4 *idxp,
ub1 *piecep);
typedef sword (*OCIStmtSetPieceInfo_t)(dvoid *hndlp, ub4 type, OCIError *errhp,
CONST dvoid *bufp, ub4 *alenp, ub1 piece,
CONST dvoid *indp, ub2 *rcodep);
typedef sword (*OCIStmtExecute_t)(OCISvcCtx *svchp, OCIStmt *stmtp, OCIError *errhp,
ub4 iters, ub4 rowoff, CONST OCISnapshot *snap_in,
OCISnapshot *snap_out, ub4 mode);
typedef sword (*OCIDefineByPos_t)(OCIStmt *stmtp, OCIDefine **defnp, OCIError *errhp,
ub4 position, dvoid *valuep, sb4 value_sz, ub2 dty,
dvoid *indp, ub2 *rlenp, ub2 *rcodep, ub4 mode);
typedef sword (*OCIDefineObject_t)(OCIDefine *defnp, OCIError *errhp,
CONST OCIType *type, dvoid **pgvpp,
ub4 *pvszsp, dvoid **indpp, ub4 *indszp);
typedef sword (*OCIDefineDynamic_t)(OCIDefine *defnp, OCIError *errhp, dvoid *octxp,
OCICallbackDefine ocbfp);
typedef sword (*OCIDefineArrayOfStruct_t)(OCIDefine *defnp, OCIError *errhp, ub4 pvskip,
ub4 indskip, ub4 rlskip, ub4 rcskip);
typedef sword (*OCIStmtFetch_t)(OCIStmt *stmtp, OCIError *errhp, ub4 nrows,
ub2 orientation, ub4 mode);
typedef sword (*OCIStmtGetBindInfo_t)(OCIStmt *stmtp, OCIError *errhp, ub4 size,
ub4 startloc,
sb4 *found, text *bvnp[], ub1 bvnl[],
text *invp[], ub1 inpl[], ub1 dupl[],
OCIBind *hndl[]);
typedef sword (*OCIDescribeAny_t)(OCISvcCtx *svchp, OCIError *errhp,
dvoid *objptr,
ub4 objnm_len, ub1 objptr_typ, ub1 info_level,
ub1 objtyp, OCIDescribe *dschp);
typedef sword (*OCIParamGet_t)(CONST dvoid *hndlp, ub4 htype, OCIError *errhp,
dvoid **parmdpp, ub4 pos);
typedef sword (*OCIParamSet_t)(dvoid *hdlp, ub4 htyp, OCIError *errhp, CONST dvoid *dscp,
ub4 dtyp, ub4 pos);
typedef sword (*OCITransStart_t)(OCISvcCtx *svchp, OCIError *errhp,
uword timeout, ub4 flags );
typedef sword (*OCITransDetach_t)(OCISvcCtx *svchp, OCIError *errhp, ub4 flags );
typedef sword (*OCITransCommit_t)(OCISvcCtx *svchp, OCIError *errhp, ub4 flags);
typedef sword (*OCITransRollback_t)(OCISvcCtx *svchp, OCIError *errhp, ub4 flags);
typedef sword (*OCITransPrepare_t)(OCISvcCtx *svchp, OCIError *errhp, ub4 flags);
typedef sword (*OCITransForget_t)(OCISvcCtx *svchp, OCIError *errhp, ub4 flags);
typedef sword (*OCIErrorGet_t)(dvoid *hndlp, ub4 recordno, text *sqlstate,
sb4 *errcodep, text *bufp, ub4 bufsiz, ub4 type);
typedef sword (*OCILobAppend_t)(OCISvcCtx *svchp, OCIError *errhp,
OCILobLocator *dst_locp,
OCILobLocator *src_locp);
typedef sword (*OCILobAssign_t)(OCIEnv *envhp, OCIError *errhp,
CONST OCILobLocator *src_locp,
OCILobLocator **dst_locpp);
typedef sword (*OCILobCharSetForm_t)(OCIEnv *envhp, OCIError *errhp,
CONST OCILobLocator *locp, ub1 *csfrm);
typedef sword (*OCILobCharSetId_t)(OCIEnv *envhp, OCIError *errhp,
CONST OCILobLocator *locp, ub2 *csid);
typedef sword (*OCILobCopy_t)(OCISvcCtx *svchp, OCIError *errhp, OCILobLocator *dst_locp,
OCILobLocator *src_locp, ub4 amount, ub4 dst_offset,
ub4 src_offset);
typedef sword (*OCILobDisableBuffering_t)(OCISvcCtx *svchp,
OCIError *errhp,
OCILobLocator *locp);
typedef sword (*OCILobEnableBuffering_t)(OCISvcCtx *svchp,
OCIError *errhp,
OCILobLocator *locp);
typedef sword (*OCILobErase_t)(OCISvcCtx *svchp, OCIError *errhp, OCILobLocator *locp,
ub4 *amount, ub4 offset);
typedef sword (*OCILobFileClose_t)(OCISvcCtx *svchp, OCIError *errhp,
OCILobLocator *filep);
typedef sword (*OCILobFileCloseAll_t)(OCISvcCtx *svchp, OCIError *errhp);
typedef sword (*OCILobFileExists_t)(OCISvcCtx *svchp, OCIError *errhp,
OCILobLocator *filep,
boolean *flag);
typedef sword (*OCILobFileGetName_t)(OCIEnv *envhp, OCIError *errhp,
CONST OCILobLocator *filep,
text *dir_alias, ub2 *d_length,
text *filename, ub2 *f_length);
typedef sword (*OCILobFileIsOpen_t)(OCISvcCtx *svchp, OCIError *errhp,
OCILobLocator *filep,
boolean *flag);
typedef sword (*OCILobFileOpen_t)(OCISvcCtx *svchp, OCIError *errhp,
OCILobLocator *filep,
ub1 mode);
typedef sword (*OCILobFileSetName_t)(OCIEnv *envhp, OCIError *errhp,
OCILobLocator **filepp,
CONST text *dir_alias, ub2 d_length,
CONST text *filename, ub2 f_length);
typedef sword (*OCILobFlushBuffer_t)(OCISvcCtx *svchp,
OCIError *errhp,
OCILobLocator *locp,
ub4 flag);
typedef sword (*OCILobGetLength_t)(OCISvcCtx *svchp, OCIError *errhp,
OCILobLocator *locp,
ub4 *lenp);
typedef sword (*OCILobIsEqual_t)(OCIEnv *envhp, CONST OCILobLocator *x,
CONST OCILobLocator *y,
boolean *is_equal);
typedef sword (*OCILobLoadFromFile_t)(OCISvcCtx *svchp, OCIError *errhp,
OCILobLocator *dst_locp,
OCILobLocator *src_filep,
ub4 amount, ub4 dst_offset,
ub4 src_offset);
typedef sword (*OCILobLocatorIsInit_t)(OCIEnv *envhp, OCIError *errhp,
CONST OCILobLocator *locp,
boolean *is_initialized);
typedef sword (*OCILobRead_t)(OCISvcCtx *svchp, OCIError *errhp, OCILobLocator *locp,
ub4 *amtp, ub4 offset, dvoid *bufp, ub4 bufl,
dvoid *ctxp, sb4 (*cbfp)(dvoid *ctxp,
CONST dvoid *bufp,
ub4 len,
ub1 piece),
ub2 csid, ub1 csfrm);
typedef sword (*OCILobRead2_t)(OCISvcCtx *svchp, OCIError *errhp, OCILobLocator *locp,
oraub8 *byte_amtp, oraub8 *char_amtp, oraub8 offset, dvoid *bufp, oraub8 bufl,
ub1 piece, dvoid *ctxp, sb4 (*cbfp)(dvoid *ctxp,
CONST dvoid *bufp,
oraub8 len, ub1 piecep,
dvoid **changed_bufpp,oraub8 *changed_lenp),
ub2 csid, ub1 csfrm);
typedef sword (*OCILobTrim_t)(OCISvcCtx *svchp, OCIError *errhp, OCILobLocator *locp,
ub4 newlen);
typedef sword (*OCILobWrite_t)(OCISvcCtx *svchp, OCIError *errhp, OCILobLocator *locp,
ub4 *amtp, ub4 offset, dvoid *bufp, ub4 buflen,
ub1 piece, dvoid *ctxp,
sb4 (*cbfp)(dvoid *ctxp,
dvoid *bufp,
ub4 *len,
ub1 *piece),
ub2 csid, ub1 csfrm);
typedef sword (*OCILobWrite2_t)(OCISvcCtx *svchp, OCIError *errhp, OCILobLocator *locp,
oraub8 *byte_amtp, oraub8 *char_amtp, oraub8 offset,
void *bufp, oraub8 buflen, ub1 piece, void *ctxp,
OCICallbackLobWrite2 cbfp, ub2 csid, ub1 csfrm);
typedef sword (*OCIBreak_t)(dvoid *hndlp, OCIError *errhp);
typedef sword (*OCIReset_t)(dvoid *hndlp, OCIError *errhp);
typedef sword (*OCIServerVersion_t)(dvoid *hndlp, OCIError *errhp, text *bufp,
ub4 bufsz,
ub1 hndltype);
typedef sword (*OCIAttrGet_t)(CONST dvoid *trgthndlp, ub4 trghndltyp,
dvoid *attributep, ub4 *sizep, ub4 attrtype,
OCIError *errhp);
typedef sword (*OCIAttrSet_t)(dvoid *trgthndlp, ub4 trghndltyp, dvoid *attributep,
ub4 size, ub4 attrtype, OCIError *errhp);
typedef sword (*OCISvcCtxToLda_t)(OCISvcCtx *svchp, OCIError *errhp, Lda_Def *ldap);
typedef sword (*OCILdaToSvcCtx_t)(OCISvcCtx **svchpp, OCIError *errhp, Lda_Def *ldap);
typedef sword (*OCIResultSetToStmt_t)(OCIResult *rsetdp, OCIError *errhp);
// 8.1.x (8i) calls
typedef sword (*OCIEnvCreate_t)(OCIEnv **envp, ub4 mode, dvoid *ctxp,
dvoid *(*malocfp)(dvoid *ctxp, size_t size),
dvoid *(*ralocfp)(dvoid *ctxp, dvoid *memptr, size_t newsize),
void (*mfreefp)(dvoid *ctxp, dvoid *memptr),
size_t xtramem_sz, dvoid **usrmempp);
typedef sword (*OCIEnvNlsCreate_t)(OCIEnv **envhpp, ub4 mode, dvoid *ctxp,
dvoid *(*malocfp)(dvoid *ctxp, size_t size),
dvoid *(*ralocfp)(dvoid *ctxp, dvoid *memptr, size_t newsize),
void (*mfreefp)(dvoid *ctxp, dvoid *memptr),
size_t xtramemsz, dvoid **usrmempp,
ub2 charset, ub2 ncharset);
typedef sword (*OCIDurationBegin_t)( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
OCIDuration parent, OCIDuration *dur );
typedef sword (*OCIDurationEnd_t)( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
OCIDuration duration );
typedef sword (*OCILobCreateTemporary_t)(OCISvcCtx *svchp,
OCIError *errhp,
OCILobLocator *locp,
ub2 csid,
ub1 csfrm,
ub1 lobtype,
boolean cache,
OCIDuration duration);
typedef sword (*OCILobFreeTemporary_t)(OCISvcCtx *svchp,
OCIError *errhp,
OCILobLocator *locp);
typedef sword (*OCILobIsTemporary_t)(OCIEnv *envp,
OCIError *errhp,
OCILobLocator *locp,
boolean *is_temporary);
typedef sword (*OCIAQEnq_t)(OCISvcCtx *svchp, OCIError *errhp, OraText *queue_name,
OCIAQEnqOptions *enqopt, OCIAQMsgProperties *msgprop,
OCIType *payload_tdo, dvoid **payload, dvoid **payload_ind,
OCIRaw **msgid, ub4 flags);
typedef sword (*OCIAQDeq_t)(OCISvcCtx *svchp, OCIError *errhp, OraText *queue_name,
OCIAQDeqOptions *deqopt, OCIAQMsgProperties *msgprop,
OCIType *payload_tdo, dvoid **payload, dvoid **payload_ind,
OCIRaw **msgid, ub4 flags);
typedef sword (*OCIAQListen_t)(OCISvcCtx *svchp, OCIError *errhp,
OCIAQAgent **agent_list, ub4 num_agents,
sb4 wait, OCIAQAgent **agent,
ub4 flags);
typedef sword (*OCIStmtFetch2_t)(OCIStmt *stmtp, OCIError *errhp, ub4 nrows,
ub2 orientation, sb4 scrollOffset, ub4 mode );
//--------------- Begin OCI Client Notification Interfaces ------------------
typedef sword (*OCISubscriptionRegister_t)(OCISvcCtx *svchp, OCISubscription **subscrhpp,
ub2 count, OCIError *errhp, ub4 mode);
typedef sword (*OCISubscriptionPost_t)(OCISvcCtx *svchp, OCISubscription **subscrhpp,
ub2 count, OCIError *errhp, ub4 mode);
typedef sword (*OCISubscriptionUnRegister_t)(OCISvcCtx *svchp, OCISubscription *subscrhp,
OCIError *errhp, ub4 mode);
typedef sword (*OCISubscriptionDisable_t)(OCISubscription *subscrhp,
OCIError *errhp, ub4 mode);
typedef sword (*OCISubscriptionEnable_t)(OCISubscription *subscrhp,
OCIError *errhp, ub4 mode);
//------------------- End OCI Publish/Subscribe Interfaces ------------------
typedef sword (*OCIDateTimeConstruct_t)( dvoid *hndl,
OCIError *err, OCIDateTime *datetime,
sb2 year, ub1 month, ub1 day,
ub1 hour, ub1 min, ub1 sec, ub4 fsec,
OraText *timezone, size_t timezone_length);
typedef sword (*OCIDateTimeGetDate_t)(dvoid *hndl,
OCIError *err, CONST OCIDateTime *datetime,
sb2 *year, ub1 *month, ub1 *day);
typedef sword (*OCIDateTimeGetTime_t)(dvoid *hndl,
OCIError *err, OCIDateTime *datetime,
ub1 *hour, ub1 *min, ub1 *sec, ub4 *fsec);
typedef sword (*OCIDateTimeGetTimeZoneOffset_t)(void *hndl, OCIError *err,
const OCIDateTime *datetime,
sb1 *hr, sb1 *mm);
typedef sword (*OCINlsNumericInfoGet_t)(dvoid *envhp, OCIError *errhp, sb4 *val, ub2 item);
// API declarations
class SQLAPI_API ora8API : public saAPI
{
public:
ora8API();
// 8.0.x calls
OCIInitialize_t OCIInitialize;
OCIHandleAlloc_t OCIHandleAlloc;
OCIHandleFree_t OCIHandleFree;
OCIDescriptorAlloc_t OCIDescriptorAlloc;
OCIDescriptorFree_t OCIDescriptorFree;
OCIEnvInit_t OCIEnvInit;
OCIServerAttach_t OCIServerAttach;
OCIServerDetach_t OCIServerDetach;
OCISessionBegin_t OCISessionBegin;
OCISessionEnd_t OCISessionEnd;
OCILogon_t OCILogon;
OCILogoff_t OCILogoff;
OCIPasswordChange_t OCIPasswordChange;
OCIStmtPrepare_t OCIStmtPrepare;
OCIBindByPos_t OCIBindByPos;
OCIBindByName_t OCIBindByName;
OCIBindObject_t OCIBindObject;
OCIBindDynamic_t OCIBindDynamic;
OCIBindArrayOfStruct_t OCIBindArrayOfStruct;
OCIStmtGetPieceInfo_t OCIStmtGetPieceInfo;
OCIStmtSetPieceInfo_t OCIStmtSetPieceInfo;
OCIStmtExecute_t OCIStmtExecute;
OCIDefineByPos_t OCIDefineByPos;
OCIDefineObject_t OCIDefineObject;
OCIDefineDynamic_t OCIDefineDynamic;
OCIDefineArrayOfStruct_t OCIDefineArrayOfStruct;
OCIStmtFetch_t OCIStmtFetch;
OCIStmtGetBindInfo_t OCIStmtGetBindInfo;
OCIDescribeAny_t OCIDescribeAny;
OCIParamGet_t OCIParamGet;
OCIParamSet_t OCIParamSet;
OCITransStart_t OCITransStart;
OCITransDetach_t OCITransDetach;
OCITransCommit_t OCITransCommit;
OCITransRollback_t OCITransRollback;
OCITransPrepare_t OCITransPrepare;
OCITransForget_t OCITransForget;
OCIErrorGet_t OCIErrorGet;
OCILobAppend_t OCILobAppend;
OCILobAssign_t OCILobAssign;
OCILobCharSetForm_t OCILobCharSetForm;
OCILobCharSetId_t OCILobCharSetId;
OCILobCopy_t OCILobCopy;
OCILobDisableBuffering_t OCILobDisableBuffering;
OCILobEnableBuffering_t OCILobEnableBuffering;
OCILobErase_t OCILobErase;
OCILobFileClose_t OCILobFileClose;
OCILobFileCloseAll_t OCILobFileCloseAll;
OCILobFileExists_t OCILobFileExists;
OCILobFileGetName_t OCILobFileGetName;
OCILobFileIsOpen_t OCILobFileIsOpen;
OCILobFileOpen_t OCILobFileOpen;
OCILobFileSetName_t OCILobFileSetName;
OCILobFlushBuffer_t OCILobFlushBuffer;
OCILobGetLength_t OCILobGetLength;
OCILobIsEqual_t OCILobIsEqual;
OCILobLoadFromFile_t OCILobLoadFromFile;
OCILobLocatorIsInit_t OCILobLocatorIsInit;
OCILobRead_t OCILobRead;
OCILobRead2_t OCILobRead2;
OCILobTrim_t OCILobTrim;
OCILobWrite_t OCILobWrite;
OCILobWrite2_t OCILobWrite2;
OCIBreak_t OCIBreak;
OCIReset_t OCIReset;
OCIServerVersion_t OCIServerVersion;
OCIAttrGet_t OCIAttrGet;
OCIAttrSet_t OCIAttrSet;
OCISvcCtxToLda_t OCISvcCtxToLda;
OCILdaToSvcCtx_t OCILdaToSvcCtx;
OCIResultSetToStmt_t OCIResultSetToStmt;
// 8.1.x (8i) calls
OCIEnvCreate_t OCIEnvCreate;
OCIEnvNlsCreate_t OCIEnvNlsCreate;
OCIDurationBegin_t OCIDurationBegin;
OCIDurationEnd_t OCIDurationEnd;
OCILobCreateTemporary_t OCILobCreateTemporary;
OCILobFreeTemporary_t OCILobFreeTemporary;
OCILobIsTemporary_t OCILobIsTemporary;
OCIAQEnq_t OCIAQEnq;
OCIAQDeq_t OCIAQDeq;
OCIAQListen_t OCIAQListen;
OCISubscriptionRegister_t OCISubscriptionRegister;
OCISubscriptionPost_t OCISubscriptionPost;
OCISubscriptionUnRegister_t OCISubscriptionUnRegister;
OCISubscriptionDisable_t OCISubscriptionDisable;
OCISubscriptionEnable_t OCISubscriptionEnable;
OCIDateTimeConstruct_t OCIDateTimeConstruct;
OCIDateTimeGetDate_t OCIDateTimeGetDate;
OCIDateTimeGetTime_t OCIDateTimeGetTime;
OCIDateTimeGetTimeZoneOffset_t OCIDateTimeGetTimeZoneOffset;
OCINlsNumericInfoGet_t OCINlsNumericInfoGet;
OCIStmtFetch2_t OCIStmtFetch2;
};
class SQLAPI_API ora8ConnectionHandles : public saConnectionHandles
{
public:
ora8ConnectionHandles();
OCIEnv *m_pOCIEnv;
OCIError *m_pOCIError;
OCISvcCtx *m_pOCISvcCtx;
OCIServer *m_pOCIServer;
OCISession *m_pOCISession;
};
class SQLAPI_API ora8CommandHandles : public saCommandHandles
{
public:
ora8CommandHandles();
OCIStmt *m_pOCIStmt;
OCIError *m_pOCIError; // cursor owned error handle
};
class SQLAPI_API ora8ExternalConnection
{
bool m_bAttached;
SAConnection *m_pCon;
public:
OCIEnv *m_pOCIEnv;
OCISvcCtx *m_pOCISvcCtx;
public:
ora8ExternalConnection(
SAConnection *pCon,
OCIEnv *pOCIEnv,
OCISvcCtx *pOCISvcCtx);
void Attach();
void Detach();
~ora8ExternalConnection();
};
extern ora8API g_ora8API;
#endif // !defined(__ORA8API_H__)

View File

@ -0,0 +1,674 @@
/* DISABLE check_long_lines */
/*
* $Header: security_src/public/nzerror.h /st_ldap_db11.2/1 2009/07/15 13:57:04 rchahal Exp $
*
* Copyright (c) 1995, 2009, Oracle and/or its affiliates.
* All rights reserved.
*/
/* ENABLE check_long_lines */
/*
NAME
nzerror.h - error numbers for the Oracle Security Server
DESCRIPTION
None.
PUBLIC FUNCTION(S)
None.
PRIVATE FUNCTION(S)
None.
NOTES
A pragma is used to silence olint about the enum value names not being
unique within 7 characters. This limit is being changed to 30.
MODIFIED
rchahal 06/12/06 -
skalyana 01/30/05 -
rchahal 07/16/04 - add cert label
rchahal 07/06/04 -
rchahal 10/15/03 - bug 2513821
rchahal 08/14/03 - new error range (43000 - 43499)
skalyana 08/25/03 - Error changes
rchahal 06/27/03 - RSA errors
rchahal 05/27/03 - convert wallet
skalyana 03/07/03 - Move FIPS errors
rchahal 02/28/03 - bug 2648177
rchahal 01/20/03 - use sltsky
rchahal 11/11/02 - pkcs11 support
skalyana 11/29/02 - Add mutex errors
akoyfman 11/01/02 - adding crl cache
rchahal 10/23/02 - crldp error
rchahal 10/15/02 - fetch crl from ldap
rchahal 10/07/02 - crl support
akoyfman 10/16/02 - Update with SSL PLus 4.2 errors
skalyana 10/04/02 - Certicom SSL Plus 4.2 Upgrade changes
akoyfman 08/06/02 - adding sso wallet errors
akoyfman 07/12/02 - adding secret store errors
skalyana 07/07/02 - Add more errors for FIPS self tests
skalyana 07/01/02 - Add more errors
skalyana 06/03/02 - Add NZ error for self test failure.
ajacobs 02/22/01 - Add some entrust errors
vle 02/09/01 - add error mesg
lkethana 08/11/00 - Extension Errors
lkethana 07/30/00 - add pkcs12 errors
lkethana 06/17/00 - mult cert errors
lkethana 06/11/00 - multiple cert support
rturlapa 03/29/00 - Add error meesage for Entrust Login failure.
rwessman 07/07/99 - Deleted include of sslerrs.h. It caused the RDBMS bu
rwessman 07/02/99 - fixed merge errors
rwessman 07/01/99 - moved NZOS errors to nzerror to make them visible
supriya 12/16/98 - add new error for cert chain.
arswamin 12/04/98 - add NZERROR_NO_MATCHING_PRIVATE_KEY
qdinh 11/12/98 - add NZERROR_VALIDITY_EXPIRED.
arswamin 06/17/98 - add INIT_FAILED
sdange 06/10/98 - change wrong password to bad password
amthakur 06/09/98 - adding error messages
wliau 03/10/97 - Add new error message for snzdfo.c.
rwessman 03/14/97 - Consolidated PL/SQL toolkit errors into generic erro
rwessman 02/26/97 - Added NZERROR_UNSUPPORTED. Corrected values of
errors outside the valid range.
asriniva 03/02/97 - Fix olint warning
rwessman 02/26/97 - Added NZERROR_UNSUPPORTED
rwessman 01/02/97 - Changed PLSQL package errors to be TK_PLSQL to
separate them from the errors generated by the
Oracle interface.
rwessman 12/30/96 - Merged in PL/SQL toolkit errors
sdange 11/14/96 - (Added NZERROR_DECRYPT_FAILED to the enum list)
rwessman 12/02/96 -
rwessman 11/25/96 - Added error messages for PL/SQL functions.
asriniva 10/31/96 - Include oratypes.h
asriniva 10/29/96 - Fix numbering.
asriniva 10/29/96 - Fix error numbers
asriniva 10/29/96 - Correct type-o
asriniva 10/28/96 - Add more TK errors
asriniva 10/28/96 - Convert OKAPI errors to TK errors.
rwessman 10/17/96 - still more OSS TK errors
asriniva 10/16/96 - OKAPI errors
asriniva 10/15/96 - OSSTK errors
rwessman 10/15/96 - Added more OSS TK errors
asriniva 10/09/96 - Add OSSTK errors.
rwessman 09/05/96 - Added errors for PL/SQL functions.
wliau 09/05/96 - correct error numbers.
$Log: $
* Revision 1.26 1996/07/15 23:07:23 wliau
* Added NZERROR_AUTH_SHARED_MEMORY
*
* Revision 1.25 1996/07/01 20:40:15 asriniva
* Finished RSA verify/sign.
*
* Revision 1.24 1996/06/27 20:39:41 rwessman
* Added more errors.
*
* Revision 1.23 1996/05/31 17:33:40 rwessman
* Updated nzerror.h to contain bug # for olint enum bug.
*
* Revision 1.22 1996/05/31 17:12:30 rwessman
* Assigned values to the various errors.
*
* Revision 1.21 1996/05/13 20:46:58 ggilchri
* Added more attribute related error conditions
*
*/
#ifndef NZERROR_ORACLE
# define NZERROR_ORACLE
#ifndef ORATYPES
# include <oratypes.h>
#endif /* ORATYPES */
/*
** Errors - when an error is added here, a message corresponding to the
** error number must be added to the message file.
** New errors must be assigned numbers, otherwise the compiler can assign any
** value that it wants, which may lead to invalid error numbers being
** generated.
** The number range currently assigned to the OSS is 28750 - 29249
** New number range 43000 - 43499
*/
typedef enum nzerror
{
NZERROR_OK = 0,
NZERROR_GENERIC = 28750, /* A catchall for errors */
NZERROR_NO_MEMORY = 28751, /* No more memory */
NZERROR_DATA_SOURCE_INIT_FAILED = 28752, /* Failed to init data source */
NZERROR_DATA_SOURCE_TERM_FAILED = 28753,/* Failed to terminate data source */
NZERROR_OBJECT_STORE_FAILED = 28754, /* Store object in data source failed */
NZERROR_OBJECT_GET_FAILED = 28755,
/* Failed to obtain object from data source */
NZERROR_MEMORY_ALLOC_FAILED = 28756,
/* Callback failed to allocate memory */
NZERROR_MEMORY_ALLOC_0_BYTES = 28757,
/* Attempted to ask for 0 bytes of memory */
NZERROR_MEMORY_FREE_FAILED = 28758,
/* Callback failed to free memory */
NZERROR_FILE_OPEN_FAILED = 28759,
/* Open of file failed */
NZERROR_LIST_CREATION_FAILED = 28760,
/* Creation of list failed */
NZERROR_NO_ELEMENT = 28761,
/* No list element found */
NZERROR_ELEMENT_ADD_FAILED = 28762,
/* Addition of list element failed */
NZERROR_PARAMETER_BAD_TYPE = 28763,
/* Retrieval of an unknown parameter type */
NZERROR_PARAMETER_RETRIEVAL = 28764, /* Retrieval of parameter failed */
NZERROR_NO_LIST = 28765, /* Data method list does not exist */
NZERROR_TERMINATE_FAIL = 28766, /* Failed to terminate */
NZERROR_BAD_VERSION_NUMBER = 28767, /* Bad version number */
NZERROR_BAD_MAGIC_NUMBER = 28768, /* Bad magic number */
NZERROR_METHOD_NOT_FOUND = 28769,
/* Data retrieval method specified does not exist */
NZERROR_ALREADY_INITIALIZED = 28770,
/*The data source is already initialized */
NZERROR_NOT_INITIALIZED = 28771, /* The data source is not initialized */
NZERROR_BAD_FILE_ID = 28772, /* File ID is bad */
NZERROR_WRITE_MAGIC_VERSION = 28773, /* Failed to write magic and version */
NZERROR_FILE_WRITE_FAILED = 28774, /* Failed to write to file */
NZERROR_FILE_CLOSE_FAILED = 28775, /* Failed to close file */
NZERROR_OUTPUT_BUFFER_TOO_SMALL = 28776,
/* The buffer supplied by the caller is too small */
NZERROR_BINDING_CREATION_FAILED = 28777,/* NL failed in creating a binding */
NZERROR_PARAMETER_MALFORMED = 28778, /* A parameter was in a bad format */
NZERROR_PARAMETER_NO_METHOD = 28779,
/* No method was specified for a data type */
NZERROR_BAD_PARAMETER_METHOD = 28780, /* Illegal method for data type */
NZERROR_PARAMETER_NO_DATA = 28781, /* No method specified when required */
NZERROR_NOT_ALLOCATED = 28782, /* Data source is not allocated */
NZERROR_INVALID_PARAMETER = 28783, /* Invalid parameter name */
NZERROR_FILE_NAME_TRANSLATION = 28784,/* Could not translate OSD file name */
NZERROR_NO_SUCH_PARAMETER = 28785, /* Selected parameter is non-existent */
NZERROR_DECRYPT_FAILED = 28786,
/* Encrypted private key decryption failure */
NZERROR_ENCRYPT_FAILED = 28787, /* Private key encryption failed */
NZERROR_INVALID_INPUT = 28788, /* Incorrect input or unknown error */
NZERROR_NAME_TYPE_NOT_FOUND = 28789,
/* Type of name requested is not available */
NZERROR_NLS_STRING_OPEN_FAILED = 28790,
/* Failure to generate an NLS string */
NZERROR_CERTIFICATE_VERIFY = 28791, /* Failed to verify a certificate */
NZERROR_OCI_PLSQL_FAILED = 28792,
/* an OCI call to process some plsql failed */
NZERROR_OCI_BIND_FAILED = 28793,
/* an OCI call to bind an internal var. failed */
NZERROR_ATTRIBUTE_INIT = 28794, /* failed to init role retrieval */
NZERROR_ATTRIBUTE_FINISH_FAILED = 28795,/* Did not complete role retrieval */
NZERROR_UNSUPPORTED_METHOD = 28796, /* Data method specified not supported */
NZERROR_INVALID_KEY_DATA_TYPE = 28797,
/* Invalid data type specified for key */
NZEROR_BIND_SUBKEY_COUNT = 28798,
/* Number of sub-keys to bind does not match count in initialized key */
NZERROR_AUTH_SHARED_MEMORY = 28799,
/* Failed to retreieve authentication information from the shared memory */
NZERROR_RIO_OPEN = 28800, /* RIO Open Failed */
NZERROR_RIO_OBJECT_TYPE = 28801, /* RIO object type invalid */
NZERROR_RIO_MODE = 28802, /* RIO mode invalid */
NZERROR_RIO_IO = 28803, /* RIO io set or numberinvalid */
NZERROR_RIO_CLOSE = 28804, /* RIO close failed */
NZERROR_RIO_RETRIEVE = 28805, /* RIO retrieve failed */
NZERROR_RIO_STORE = 28806, /* RIO store failed */
NZERROR_RIO_UPDATE = 28807, /* RIO update failed */
NZERROR_RIO_INFO = 28808, /* RIO info failed */
NZERROR_RIO_DELETE = 28809, /* RIO delete failed */
NZERROR_KD_CREATE = 28810, /* Key descriptor create failed */
NZERROR_RIO_ACCESS_DESCRIPTOR = 28811, /* access descriptor invalid */
NZERROR_RIO_RECORD = 28812, /* record invalid */
NZERROR_RIO_RECORD_TYPE = 28813, /* record type and AD type not matched */
NZERROR_PLSQL_ORACLE_TO_REAL = 28814,
/* A number passed to PL/SQL could not be converted to real format */
NZERROR_PLSQL_REAL_TO_ORACLE = 28815,
/* A number in machine format could not be converted to Oracle format */
NZERROR_TK_PLSQL_NO_PASSWORD = 28816,
/* A password was not provided to a PL/SQL function */
NZERROR_TK_PLSQL_GENERIC = 28817,
/* A PL/SQL function returned an error */
NZERROR_TK_PLSQL_NO_CONTEXT = 28818,
/* The package context was not specified to a PL/SQL function */
NZERROR_TK_PLSQL_NO_DIST_NAME = 28819,
/* The user's distinguished name was not provided to a PL/SQL function */
NZERROR_TK_PLSQL_NO_STATE = 28820,
/* The state of either a signature or decryption/encryption was not provided */
NZERROR_TK_PLSQL_NO_INPUT = 28821,
/* An input buffer was specified to a PL/SQL function */
NZERROR_TK_PLSQL_NO_SEED = 28822,
/* No seed was specified to the PL/SQL seed initialization function */
NZERROR_TK_PLSQL_NO_BYTES = 28823,
/* Number of bytes was not specified to the PL/SQL random number generator */
NZERROR_TK_INVALID_STATE = 28824,
/* Invalid encryption/decryption/signature state passed */
NZERROR_TK_PLSQL_NO_ENG_FUNC = 28825,
/* No crypto engine function was passed in */
NZERROR_TK_INV_ENG_FUNC = 28826,
/* An invalid crypto engine function was passed in */
NZERROR_TK_INV_CIPHR_TYPE = 28827,
/* An invalid cipher type was passed in */
NZERROR_TK_INV_IDENT_TYPE = 28828,
/* An invalid identity type was specified */
NZERROR_TK_PLSQL_NO_CIPHER_TYPE = 28829,
/* No cipher type was specified */
NZERROR_TK_PLSQL_NO_IDENT_TYPE = 28830,
/* No identity type was specified */
NZERROR_TK_PLSQL_NO_DATA_FMT = 28831,
/* No data unit format was specified */
NZERROR_TK_INV_DATA_FMT = 28832,
/* Invalid data unit format was provided to function */
NZERROR_TK_PLSQL_INSUFF_INFO = 28833,
/* Not enough info (usually parameters) provided to a PL/SQL function */
NZERROR_TK_PLSQL_BUF_TOO_SMALL = 28834,
/* Buffer provided by PL/SQL is too small for data to be returned */
NZERROR_TK_PLSQL_INV_IDENT_DESC = 28835,
/* Identity descriptor not present or too small */
NZERROR_TK_PLSQL_WALLET_NOTOPEN = 28836,
/* Wallet has not been opened yet */
NZERROR_TK_PLSQL_NO_WALLET = 28837,
/* No wallet descriptor specified to PL/SQL function */
NZERROR_TK_PLSQL_NO_IDENTITY = 28838,
/* No identity descriptor specified to PL/SQL function */
NZERROR_TK_PLSQL_NO_PERSONA = 28839,
/* No persona descriptor was specified to PL/SQL function */
NZERROR_TK_PLSQL_WALLET_OPEN = 28840,
/* Wallet was already opened */
NZERROR_UNSUPPORTED = 28841, /* Operation is not supported */
NZERROR_FILE_BAD_PERMISSION = 28842, /* Bad file permission specified */
NZERROR_FILE_OSD_ERROR = 28843, /* OSD error when opening file */
NZERROR_NO_WALLET = 28844, /* cert + privkey + tp files do not exist */
NZERROR_NO_CERTIFICATE_ALERT = 28845, /* no certificate */
NZERROR_NO_PRIVATE_KEY = 28846, /* no private-key */
NZERROR_NO_CLEAR_PRIVATE_KEY_FILE = 28847, /* no clear key-file */
NZERROR_NO_ENCRYPTED_PRIVATE_KEY_FILE = 28848, /* no encrypted priv key */
NZERROR_NO_TRUSTPOINTS = 28849, /* no trustpoints */
NZERROR_NO_CLEAR_TRUSTPOINT_FILE = 28850, /* no clear trustpoints */
NZERROR_NO_ENCRYPTED_TRUSTPOINT_FILE = 28851, /* no encrypted trustpoints */
NZERROR_BAD_PASSWORD = 28852, /* bad password */
NZERROR_INITIALIZATION_FAILED = 28853, /* init failed or
module loading failed */
/******************************* SSL ERRORS ********************************/
/*
* In order to allow SSL errors to be mapped to Oracle errors, space is
* provided here. One Oracle error is provided for each SSL error to make
* error handling easier. A macro is provided to do the conversion.
* NOTE: ANY CHANGE IN SSL ERRORS MUST BE REFLECTED HERE.
* To add an SSL error, use the following formula to calculate the Oracle
* error:
* new_oracle_error = (new_ssl_error - SSLMemoryError) + NZERROR_SSLMemoryErr
* or numerically:
* new_oracle_error = (new_ssl_error - -7000) + 28854
*/
NZERROR_SSLMemoryErr = 28854,
NZERROR_SSLUnsupportedErr = 28855,
NZERROR_SSLOverflowErr = 28856,
NZERROR_SSLUnknownErr = 28857,
NZERROR_SSLProtocolErr = 28858,
NZERROR_SSLNegotiationErr = 28859,
NZERROR_SSLFatalAlert = 28860,
NZERROR_SSLWouldBlockErr = 28861,
NZERROR_SSLIOErr = 28862,
NZERROR_SSLSessionNotFoundErr = 28863,
NZERROR_SSLConnectionClosedGraceful = 28864,
NZERROR_SSLConnectionClosedError = 28865,
NZERROR_ASNBadEncodingErr = 28866,
NZERROR_ASNIntegerTooBigErr = 28867,
NZERROR_X509CertChainInvalidErr = 28868,
NZERROR_X509CertExpiredErr = 28869,
NZERROR_X509NamesNotEqualErr = 28870,
NZERROR_X509CertChainIncompleteErr = 28871,
NZERROR_X509DataNotFoundErr = 28872,
NZERROR_SSLBadParameterErr = 28873,
NZERROR_SSLIOClosedOverrideGoodbyeKiss = 28874,
NZERROR_X509MozillaSGCErr = 28875,
NZERROR_X509IESGCErr = 28876,
NZERROR_ImproperServerCredentials = 28877,
NZERROR_ImproperClientCredentials = 28878,
NZERROR_NoProtocolSideSet = 28879,
NZERROR_setPersonaFailed = 28880,
NZERROR_setCertFailed = 28881,
NZERROR_setVKeyFailed = 28882,
NZERROR_setTPFailed = 28883,
NZERROR_BadCipherSuite = 28884,
NZERROR_NoKeyPairForKeyUsage = 28885,
/* ============>>> ENTRUST ERRORS */
NZERROR_EntrustLoginFailed = 28890,
NZERROR_EntrustGetInfoFailed = 28891,
NZERROR_EntrustLoadCertificateFailed = 28892,
NZERROR_EntrustGetNameFailed = 28893,
/* ============>>> NZERRORS CONTINUED */
NZERROR_CertNotInstalled = 29000,
NZERROR_ServerDNMisMatched = 29002,
NZERROR_ServerDNMisConfigured = 29003,
/* ============>>> PKI VENDORS ERRORS 29050 - 29099 */
/* ============>>> SSL Errors CONTINUED */
NZERROR_CIC_ERR_SSL_ALERT_CB_FAILURE = 29004,
NZERROR_CIC_ERR_SSL_BAD_CERTIFICATE = 29005,
NZERROR_CIC_ERR_SSL_BAD_CERTIFICATE_REQUEST = 29006,
NZERROR_CIC_ERR_SSL_BAD_CLEAR_KEY_LEN = 29007,
NZERROR_CIC_ERR_SSL_BAD_DHPARAM_KEY_LENGTH = 29008,
NZERROR_CIC_ERR_SSL_BAD_ENCRYPTED_KEY_LEN = 29009,
NZERROR_CIC_ERR_SSL_BAD_EXPORT_KEY_LENGTH = 29010,
NZERROR_CIC_ERR_SSL_BAD_FINISHED_MESSAGE = 29011,
NZERROR_CIC_ERR_SSL_BAD_KEY_ARG_LEN = 29012,
NZERROR_CIC_ERR_SSL_BAD_MAC = 29013,
NZERROR_CIC_ERR_SSL_BAD_MAX_FRAGMENT_LENGTH_EXTENSION = 29014,
NZERROR_CIC_ERR_SSL_BAD_MESSAGE_LENGTH = 29015,
NZERROR_CIC_ERR_SSL_BAD_PKCS1_PADDING = 29016,
NZERROR_CIC_ERR_SSL_BAD_PREMASTER_SECRET_LENGTH = 29017,
NZERROR_CIC_ERR_SSL_BAD_PREMASTER_SECRET_VERSION = 29018,
NZERROR_CIC_ERR_SSL_BAD_PROTOCOL_VERSION = 29019,
NZERROR_CIC_ERR_SSL_BAD_RECORD_LENGTH = 29020,
NZERROR_CIC_ERR_SSL_BAD_SECRET_KEY_LEN = 29021,
NZERROR_CIC_ERR_SSL_BAD_SIDE = 29022,
NZERROR_CIC_ERR_SSL_BUFFERS_NOT_EMPTY = 29023,
NZERROR_CIC_ERR_SSL_CERTIFICATE_VALIDATE_FAILED = 29024,
NZERROR_CIC_ERR_SSL_CERT_CHECK_CALLBACK = 29025,
NZERROR_CIC_ERR_SSL_DECRYPT_FAILED = 29026,
NZERROR_CIC_ERR_SSL_ENTROPY_COLLECTION = 29027,
NZERROR_CIC_ERR_SSL_FAIL_SERVER_VERIFY = 29028,
NZERROR_CIC_ERR_SSL_HANDSHAKE_ALREADY_COMPLETED = 29029,
NZERROR_CIC_ERR_SSL_HANDSHAKE_REQUESTED = 29030,
NZERROR_CIC_ERR_SSL_HANDSHAKE_REQUIRED = 29031,
NZERROR_CIC_ERR_SSL_INCOMPLETE_IDENTITY = 29032,
NZERROR_CIC_ERR_SSL_INVALID_PFX = 29033,
NZERROR_CIC_ERR_SSL_NEEDS_CIPHER_OR_CLIENTAUTH = 29034,
NZERROR_CIC_ERR_SSL_NEEDS_PRNG = 29035,
NZERROR_CIC_ERR_SSL_NOT_SUPPORTED = 29036,
NZERROR_CIC_ERR_SSL_NO_CERTIFICATE = 29037,
NZERROR_CIC_ERR_SSL_NO_MATCHING_CERTIFICATES = 29038,
NZERROR_CIC_ERR_SSL_NO_MATCHING_CIPHER_SUITES = 29039,
NZERROR_CIC_ERR_SSL_NO_SUPPORTED_CIPHER_SUITES = 29040,
NZERROR_CIC_ERR_SSL_NULL_CB = 29041,
NZERROR_CIC_ERR_SSL_READ_BUFFER_NOT_EMPTY = 29042,
NZERROR_CIC_ERR_SSL_READ_REQUIRED = 29043,
NZERROR_CIC_ERR_SSL_RENEGOTIATION_ALREADY_REQUESTED = 29044,
NZERROR_CIC_ERR_SSL_RENEGOTIATION_REFUSED = 29045,
NZERROR_CIC_ERR_SSL_RESUMABLE_SESSION = 29046,
NZERROR_CIC_ERR_SSL_TLS_EXTENSION_MISMATCH = 29047,
NZERROR_CIC_ERR_SSL_UNEXPECTED_MSG = 29048,
NZERROR_CIC_ERR_SSL_UNKNOWN_RECORD = 29049,
NZERROR_CIC_ERR_SSL_UNSUPPORTED_CLIENT_AUTH_MODE = 29050,
NZERROR_CIC_ERR_SSL_UNSUPPORTED_PUBKEY_TYPE = 29051,
NZERROR_CIC_ERR_SSL_WRITE_BUFFER_NOT_EMPTY = 29052,
NZERROR_CIC_ERR_PKCS12_MISSING_ALG = 29053,
NZERROR_CIC_ERR_PKCS_AUTH_FAILED = 29054,
NZERROR_CIC_ERR_PKCS_BAD_CONTENT_TYPE = 29055,
NZERROR_CIC_ERR_PKCS_BAD_INPUT = 29056,
NZERROR_CIC_ERR_PKCS_BAD_PADDING = 29057,
NZERROR_CIC_ERR_PKCS_BAD_SN = 29058,
NZERROR_CIC_ERR_PKCS_BAD_SN_LENGTH = 29059,
NZERROR_CIC_ERR_PKCS_BAD_VERSION = 29060,
NZERROR_CIC_ERR_PKCS_BASE = 29061,
NZERROR_CIC_ERR_PKCS_FIELD_NOT_PRESENT = 29062,
NZERROR_CIC_ERR_PKCS_NEED_CERTVAL = 29063,
NZERROR_CIC_ERR_PKCS_NEED_PASSWORD = 29064,
NZERROR_CIC_ERR_PKCS_NEED_PKC = 29065,
NZERROR_CIC_ERR_PKCS_NEED_PRV_KEY = 29066,
NZERROR_CIC_ERR_PKCS_NEED_TRUSTED = 29067,
NZERROR_CIC_ERR_PKCS_UNSUPPORTED_CERT_FORMAT = 29068,
NZERROR_CIC_ERR_PKCS_UNSUP_PRVKEY_TYPE = 29069,
NZERROR_CIC_ERR_CODING_BAD_PEM = 29070,
NZERROR_CIC_ERR_CODING_BASE = 29071,
NZERROR_CIC_ERR_DER_BAD_ENCODING = 29072,
NZERROR_CIC_ERR_DER_BAD_ENCODING_LENGTH = 29073,
NZERROR_CIC_ERR_DER_BASE = 29074,
NZERROR_CIC_ERR_DER_ELEMENT_TOO_LONG = 29075,
NZERROR_CIC_ERR_DER_INDEFINITE_LENGTH = 29076,
NZERROR_CIC_ERR_DER_NO_MORE_ELEMENTS = 29077,
NZERROR_CIC_ERR_DER_OBJECT_TOO_LONG = 29078,
NZERROR_CIC_ERR_DER_TAG_SIZE = 29079,
NZERROR_CIC_ERR_DER_TIME_OUT_OF_RANGE = 29080,
NZERROR_CIC_ERR_DER_UNUSED_BITS_IN_BIT_STR = 29081,
NZERROR_CIC_ERR_GENERAL_BASE = 29082,
NZERROR_CIC_ERR_HASH_BASE = 29083,
NZERROR_CIC_ERR_ILLEGAL_PARAM = 29084,
NZERROR_CIC_ERR_MEM_NOT_OURS = 29085,
NZERROR_CIC_ERR_MEM_OVERRUN = 29086,
NZERROR_CIC_ERR_MEM_UNDERRUN = 29087,
NZERROR_CIC_ERR_MEM_WAS_FREED = 29088,
NZERROR_CIC_ERR_NOT_FOUND = 29090,
NZERROR_CIC_ERR_NO_PTR = 29091,
NZERROR_CIC_ERR_TIMEOUT = 29092,
NZERROR_CIC_ERR_UNIT_MASK = 29093,
NZERROR_CIC_ERR_BAD_CTX = 29094,
NZERROR_CIC_ERR_BAD_INDEX = 29095,
NZERROR_CIC_ERR_BAD_LENGTH = 29096,
NZERROR_CIC_ERR_CODING_BAD_ENCODING = 29097,
NZERROR_CIC_ERR_SSL_NO_CLIENT_AUTH_MODES = 29098,
/* ============>>> PKCS12 error 29100 - 29149 */
NZERROR_LOCKEYID_CREATE_FAILED = 29100,
NZERROR_P12_ADD_PVTKEY_FAILED = 29101,
NZERROR_P12_ADD_CERT_FAILED = 29102,
NZERROR_P12_WLT_CREATE_FAILED = 29103,
NZERROR_P12_ADD_CERTREQ_FAILED = 29104,
NZERROR_P12_WLT_EXP_FAILED = 29105,
NZERROR_P12_WLT_IMP_FAILED = 29106,
NZERROR_P12_CREATE_FAILED = 29107,
NZERROR_P12_DEST_FAILED = 29107,
NZERROR_P12_RAND_ERROR = 29108,
NZERROR_P12_PVTKEY_CRT_FAILED = 29109,
NZERROR_P12_INVALID_BAG = 29110,
NZERROR_P12_INVALID_INDEX = 29111,
NZERROR_P12_GET_CERT_FAILED = 29112,
NZERROR_P12_GET_PVTKEY_FAILED = 29113,
NZERROR_P12_IMP_PVTKEY_FAILED = 29114,
NZERROR_P12_EXP_PVTKEY_FAILED = 29115,
NZERROR_P12_GET_ATTRIB_FAILED = 29116,
NZERROR_P12_ADD_ATTRIB_FAILED = 29117,
NZERROR_P12_CRT_ATTRIB_FAILED = 29118,
NZERROR_P12_IMP_CERT_FAILED = 29119,
NZERROR_P12_EXP_CERT_FAILED = 29120,
NZERROR_P12_ADD_SECRET_FAILED = 29121,
NZERROR_P12_ADD_PKCS11INFO_FAILED = 29122,
NZERROR_P12_GET_PKCS11INFO_FAILED = 29123,
NZERROR_P12_MULTIPLE_PKCS11_LIBNAME = 29124,
NZERROR_P12_MULTIPLE_PKCS11_TOKENLABEL = 29125,
NZERROR_P12_MULTIPLE_PKCS11_TOKENPASSPHRASE = 29126,
NZERROR_P12_UNKNOWN_PKCS11INFO = 29127,
NZERROR_P12_PKCS11_LIBNAME_NOT_SET = 29128,
NZERROR_P12_PKCS11_TOKENLABEL_NOT_SET = 29129,
NZERROR_P12_PKCS11_TOKENPASSPHRASE_NOT_SET = 29130,
NZERROR_P12_MULTIPLE_PKCS11_CERTLABEL = 29131,
/* ===========>>> SSL Errors CONTINUED 29135 - 29139 */
NZERROR_CIC_ERR_RANDOM = 29135,
NZERROR_CIC_ERR_SMALL_BUFFER = 29136,
NZERROR_CIC_ERR_SSL_BAD_CONTEXT = 29137,
/* ==========>>> Mutex Errors 29138 - 29139 */
NZERROR_MUTEX_INITIALIZE_FAILED = 29138,
NZERROR_MUTEX_DESTROY_FAILED = 29139,
/* ============>>> EXTENSIONS Errors 29140 - 29149 */
NZERROR_BS_CERTOBJ_CREAT_FAILED = 29140,
NZERROR_BS_DER_IMP_FAILED = 29141,
/* ============>>> FIPS ERRORS 29150 - 29175 */
NZERROR_DES_SELF_TEST_FAILED = 29150,
NZERROR_3DES_SELF_TEST_FAILED = 29151,
NZERROR_SHA_SELF_TEST_FAILED = 29152,
NZERROR_RSA_SELF_TEST_FAILED = 29153,
NZERROR_DRNG_SELF_TEST_FAILED = 29154,
NZERROR_CKEYPAIR_SELF_TEST_FAILED = 29155,
NZERROR_CRNG_SELF_TEST_FAILED = 29156,
NZERROR_FIPS_PATHNAME_ERROR = 29157,
NZERROR_FIPS_LIB_OPEN_FAILED = 29158,
NZERROR_FIPS_LIB_READ_ERROR = 29159,
NZERROR_FIPS_LIB_DIFFERS = 29160,
NZERROR_DAC_SELF_TEST_FAILED = 29161,
NZERROR_NONFIPS_CIPHERSUITE = 29162,
NZERROR_VENDOR_NOT_SUPPORTED_FIPS_MODE = 29163,
NZERROR_EXTERNAL_PKCS12_NOT_SUPPORTED_FIPS_MODE = 29164,
NZERROR_AES_SELF_TEST_FAILED = 29165,
/* ============>>> CRL ERRORS 29176 - 29200 */
NZERROR_CRL_SIG_VERIFY_FAILED = 29176, /*CRL signature verification failed*/
NZERROR_CERT_NOT_IN_CRL = 29177,
/*Cert is not in CRL - cert is not revoked*/
NZERROR_CERT_IN_CRL = 29178, /*Cert is in CRL - cert is revoked*/
NZERROR_CERT_IN_CRL_CHECK_FAILED = 29179, /*Cert revocation check failed */
NZERROR_INVALID_CERT_STATUS_PROTOCOL = 29180,
NZERROR_LDAP_OPEN_FAILED = 29181, /* ldap_open failed */
NZERROR_LDAP_BIND_FAILED = 29182, /* ldap_bind failed */
NZERROR_LDAP_SEARCH_FAILED = 29183, /* ldap_search failed */
NZERROR_LDAP_RESULT_FAILED = 29184, /* ldap_result failed */
NZERROR_LDAP_FIRSTATTR_FAILED = 29185, /* ldap_first_attribute failed */
NZERROR_LDAP_GETVALUESLEN_FAILED = 29186, /* ldap_get_values_len failed */
NZERROR_LDAP_UNSUPPORTED_VALMEC = 29187,
/* unsupported validation mechanism */
NZERROR_LDAP_COUNT_ENTRIES_FAILED = 29188,/* ldap_count_entries failed */
NZERROR_LDAP_NO_ENTRY_FOUND = 29189, /* No entry found in OID */
NZERROR_LDAP_MULTIPLE_ENTRIES_FOUND = 29190, /* Multiple entries in OID*/
NZERROR_OID_INFO_NOT_SET = 29191,
NZERROR_LDAP_VALMEC_NOT_SET = 29192,
/* Validation mechanism not set in OID*/
NZERROR_CRLDP_NO_CRL_FOUND = 29193,
/* No CRL found using CRLDP mechanism */
NZERROR_CRL_NOT_IN_CACHE = 29194, /* No CRL found in the cache*/
NZERROR_CRL_EXPIRED = 29195, /* CRL nextUpdate time is in the past */
/* ============>>> ADD ERRORS HERE -- NOTE DECREASING numbers */
NZERROR_DN_MATCH = 29222, /* for nztCompareDN */
NZERROR_CERT_CHAIN_CREATION = 29223, /* unable to create a cert chain
* with the existing TPs for the
* cert to be installed.
*/
NZERROR_NO_MATCHING_CERT_REQ = 29224, /* No matching cert_req was
* found the corresponding to
* the privatekey which
* matches the cert to be
* installed */
NZERROR_CERT_ALREADY_INSTALLED = 29225, /* we are attempting to
* install a cert again into
* a persona which already
* has it installed.
*/
NZERROR_NO_MATCHING_PRIVATE_KEY = 29226, /* could not find a matching
* persona-private(privatekey) in
* the Persona, for the given
* cert(public key).
*/
NZERROR_VALIDITY_EXPIRED = 29227, /* certificate validity date expired */
NZERROR_TK_BYTES_NEEDED = 29228, /* Couldn't determine # of bytes needed */
NZERROR_TK_BAD_MAGIC_NUMBER = 29229,
/* Magic number found in header does not match expected */
NZERROR_TK_BAD_HEADER_LENGTH = 29230,
/* Header length passed in not sufficient for message header */
NZERROR_TK_CE_INIT = 29231, /* Crypto engine failed to initialize */
NZERROR_TK_CE_KEYINIT = 29232, /* Crypto engine key initialization failed */
NZERROR_TK_CE_ENCODE_KEY = 29233, /* Count not encode key object */
NZERROR_TK_CE_DECODE_KEY = 29234, /* Could not decode key into object */
NZERROR_TK_CE_GEYKEYINFO = 29235, /* Crypto engine failed to get key info */
NZERROR_TK_SEED_RANDOM = 29236, /* Couldn't seed random number generator */
NZERROR_TK_CE_ALGFINISH = 29237, /* Couldn't finish algorithm */
NZERROR_TK_CE_ALGAPPLY = 29238, /* Couldn't apply algorithm to data */
NZERROR_TK_CE_ALGINIT = 29239, /* Couldn't init CE for algorithm */
NZERROR_TK_ALGORITHM = 29240, /* Have no idea what algorithm you want */
NZERROR_TK_CANNOT_GROW = 29241, /* Cannot grow output buffer block */
NZERROR_TK_KEYSIZE = 29242, /* Key not large enough for data */
NZERROR_TK_KEYTYPE = 29243, /* Unknown key type. */
NZERROR_TK_PLSQL_NO_WRL = 29244,
/* Wallet resource locator not specified to PL/SQL function */
NZERROR_TK_CE_FUNC = 29245, /* Unknown crypto engine function */
NZERROR_TK_TDU_FORMAT = 29246, /* Unknown TDU format */
NZERROR_TK_NOTOPEN = 29247, /* Object must be open */
NZERROR_TK_WRLTYPE = 29248, /* Bad WRL type */
NZERROR_TK_CE_STATE = 29249, /* Bad state specified for the crypto engine */
/* After 29249, use error numbers in block 43000 - 43499 */
NZERROR_PKCS11_LIBRARY_NOT_FOUND = 43000, /* PKCS #11 library not found */
NZERROR_PKCS11_TOKEN_NOT_FOUND = 43001,
/* can't find token with given label*/
NZERROR_PKCS11_BAD_PASSPHRASE = 43002, /* passphrase is incorrect/expired */
NZERROR_PKCS11_GET_FUNC_LIST = 43003, /* C_GetFunctionList returned error */
NZERROR_PKCS11_INITIALIZE = 43004, /* C_Initialize returned error */
NZERROR_PKCS11_NO_TOKENS_PRESENT = 43005, /* No tokens present */
NZERROR_PKCS11_GET_SLOT_LIST = 43006, /* C_GetSlotList returned error */
NZERROR_PKCS11_GET_TOKEN_INFO = 43008, /* C_GetTokenInfo returned error */
NZERROR_PKCS11_SYMBOL_NOT_FOUND = 43009, /* Symbol not found in PKCS11 lib */
NZERROR_PKCS11_TOKEN_LOGIN_FAILED = 43011, /* Token login failed */
NZERROR_PKCS11_CHANGE_PROVIDERS_ERROR = 43013, /* Change providers error */
NZERROR_PKCS11_GET_PRIVATE_KEY_ERROR = 43014,
/* Error trying to find private key on token */
NZERROR_PKCS11_CREATE_KEYPAIR_ERROR = 43015, /* Key pair gen error */
NZERROR_PKCS11_WALLET_CONTAINS_P11_INFO = 43016, /* Wallet already contains
pkcs11 info */
NZERROR_PKCS11_NO_CERT_ON_TOKEN = 43017, /* No cert found on token */
NZERROR_PKCS11_NO_USER_CERT_ON_TOKEN = 43018, /*No user cert found on token*/
NZERROR_PKCS11_NO_CERT_ON_TOKEN_WITH_GIVEN_LABEL = 43019, /*No cert found on token with given certificate label.*/
NZERROR_PKCS11_MULTIPLE_CERTS_ON_TOKEN_WITH_GIVEN_LABEL = 43020, /*Multiple certs found on token with given certificate label.*/
NZERROR_PKCS11_CERT_WITH_LABEL_NOT_USER_CERT = 43021, /*Cert with given cert is not a user cert because no corresponding pvt key found on token */
/* RSA ERRORS 43050 - 43059 */
NZERROR_BIND_SERVICE_ERROR = 43050, /* C_BindService returned error */
NZERROR_CREATE_KEY_OBJ_ERROR = 43051, /* B_CreateKeyObject returned error */
NZERROR_GET_CERT_FIELDS = 43052, /* C_GetCertFields returned error */
NZERROR_CREATE_PKCS10_OBJECT = 43053,
/* C_CreatePKCS10Object returned error */
NZERROR_SET_PKCS10_FIELDS = 43054, /* C_SetPKCS10Fields returned error */
NZERROR_SIGN_CERT_REQUEST = 43055, /* C_SignCertRequest returned error */
NZERROR_GET_PKCS10_DER = 43056, /* C_GetPKCS10DER returned error */
NZERROR_INITIALIZE_CERTC = 43057, /* C_InitializeCertC returned error */
NZERROR_INSERT_PRIVATE_KEY = 43058, /* C_InsertPrivateKey returned error */
NZERROR_RSA_ERROR = 43059, /* RSA error. See trace output */
/* slts ERRORS 43060 - 43069 */
NZERROR_SLTSCTX_INIT_FAILED = 43060, /* sltsini() returned error */
NZERROR_SLTSKYC_FAILED = 43061, /* sltskyc() returned error */
NZERROR_SLTSCTX_TERM_FAILED = 43062, /* sltster() returned error */
NZERROR_SLTSKYS_FAILED = 43063, /* sltskys() returned error */
NZERROR_INVALID_HEADER_LENGTH = 43070, /* bad sso header length */
NZERROR_WALLET_CONTAINS_USER_CREDENTIALS = 43071, /* wallet not empty */
NZERROR_CANNOT_MODIFY_AL = 43072, /* Cannot modify AL wallet */
NZERROR_FILE_LOCK_FAILED = 43073, /* Cannot lock wallet file */
NZERROR_CSF_ALIAS_INVALID = 43100, /* alias is invalid */
NZERROR_CSF_KEY_INVALID = 43101, /* key invalid */
NZERROR_CSF_CRED_NOT_SUPPORTED = 43102, /* only pwd cred supported */
NZERROR_CSF_HOSTNAME = 43103, /* hostname error */
NZERROR_CSF_XML = 43104, /* XmlCreate error. See trace */
NZERROR_CSF_WALLET_NOT_SPECIFIED = 43105, /* no wallet specified */
NZERROR_CSF_MAP_NOT_IN_STORE = 43106, /* map does not exist in store */
NZERROR_CSF_KEY_NOT_IN_STORE = 43107, /* key does not exist in store */
NZERROR_CSF_ENTRY_EXISTS = 43108, /* entry with map/key exists */
NZERROR_LX_ERROR = 43120, /* lx api returned error */
NZERROR_LAST_ERROR = 43499, /* Last available error */
/* MAXIMUM ERROR NUMBER IS 43499 */
/*
* DO NOT JUST INSERT NEW ERRORS IN ANY OLD PLACE. New errors should be
* added such the current error retains their integer values. Duplicate
* values will cause compiler errors.
*/
NZERROR_THIS_MUST_BE_LAST
} nzerror;
/*
* Macro to convert SSL errors to Oracle errors. As SSL errors are negative
* and Oracle numbers are positive, the following needs to be done.
* 1. The base error number, which is the highest, is added to the
* SSL error to get the index into the number range.
* 2. The result is added to the base Oracle number to get the Oracle error.
*/
#define NZERROR_SSL_TO_ORACLE(ssl_error_) \
((ssl_error_ == SSLNoErr) \
? NZERROR_OK \
: (nzerror) ((ssl_error_ - SSLMemoryErr) + (uword) NZERROR_SSLMemoryErr))
#endif /* NZERROR_ORACLE */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,182 @@
/* Copyright (c) 1997, 2005, Oracle. All rights reserved. */
/* NOTE: See 'header_template.doc' in the 'doc' dve under the 'forms'
directory for the header file template that includes instructions.
*/
/*
NAME
oci1.h - Cartridge Service definitions
DESCRIPTION
<short description of component this file declares/defines>
RELATED DOCUMENTS
INSPECTION STATUS
Inspection date:
Inspection status:
Estimated increasing cost defects per page:
Rule sets:
ACCEPTANCE REVIEW STATUS
Review date:
Review status:
Reviewers:
PUBLIC FUNCTION(S)
<list of external functions declared/defined - with one-line descriptions>
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)
mbastawa 09/16/05 - dbhygiene
dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
nramakri 01/16/98 - remove #ifdef NEVER clause
ewaugh 12/18/97 - Turn type wrappers into functions.
skabraha 12/02/97 - Adding data structures & constants for OCIFile
rhwu 12/02/97 - OCI Thread
nramakri 12/15/97 - move to core4
ewaugh 12/11/97 - add OCIFormat package constants
ssamu 12/10/97 - do not include s.h
nramakri 11/19/97 - add OCIExtract definitions
ssamu 11/14/97 - creation
*/
#ifndef OCI1_ORACLE
# define OCI1_ORACLE
# ifndef ORATYPES
# include <oratypes.h>
# endif
/*---------------------------------------------------------------------------
PUBLIC TYPES AND CONSTANTS
---------------------------------------------------------------------------*/
/* Constants required by the OCIFormat package. */
#define OCIFormatUb1(variable) OCIFormatTUb1(), &(variable)
#define OCIFormatUb2(variable) OCIFormatTUb2(), &(variable)
#define OCIFormatUb4(variable) OCIFormatTUb4(), &(variable)
#define OCIFormatUword(variable) OCIFormatTUword(), &(variable)
#define OCIFormatUbig_ora(variable) OCIFormatTUbig_ora(), &(variable)
#define OCIFormatSb1(variable) OCIFormatTSb1(), &(variable)
#define OCIFormatSb2(variable) OCIFormatTSb2(), &(variable)
#define OCIFormatSb4(variable) OCIFormatTSb4(), &(variable)
#define OCIFormatSword(variable) OCIFormatTSword(), &(variable)
#define OCIFormatSbig_ora(variable) OCIFormatTSbig_ora(), &(variable)
#define OCIFormatEb1(variable) OCIFormatTEb1(), &(variable)
#define OCIFormatEb2(variable) OCIFormatTEb2(), &(variable)
#define OCIFormatEb4(variable) OCIFormatTEb4(), &(variable)
#define OCIFormatEword(variable) OCIFormatTEword(), &(variable)
#define OCIFormatChar(variable) OCIFormatTChar(), &(variable)
#define OCIFormatText(variable) OCIFormatTText(), (variable)
#define OCIFormatDouble(variable) OCIFormatTDouble(), &(variable)
#define OCIFormatDvoid(variable) OCIFormatTDvoid(), (variable)
#define OCIFormatEnd OCIFormatTEnd()
#define OCIFormatDP 6
/*----------------- Public Constants for OCIFile -------------------------*/
/* flags for open.*/
/* flags for mode */
#define OCI_FILE_READ_ONLY 1 /* open for read only */
#define OCI_FILE_WRITE_ONLY 2 /* open for write only */
#define OCI_FILE_READ_WRITE 3 /* open for read & write */
/* flags for create */
#define OCI_FILE_EXIST 0 /* the file should exist */
#define OCI_FILE_CREATE 1 /* create if the file doesn't exist */
#define OCI_FILE_EXCL 2 /* the file should not exist */
#define OCI_FILE_TRUNCATE 4 /* create if the file doesn't exist,
else truncate file the file to 0 */
#define OCI_FILE_APPEND 8 /* open the file in append mode */
/* flags for seek */
#define OCI_FILE_SEEK_BEGINNING 1 /* seek from the beginning of the file */
#define OCI_FILE_SEEK_CURRENT 2 /* seek from the current position */
#define OCI_FILE_SEEK_END 3 /* seek from the end of the file */
#define OCI_FILE_FORWARD 1 /* seek forward */
#define OCI_FILE_BACKWARD 2 /* seek backward */
/* file type */
#define OCI_FILE_BIN 0 /* binary file */
#define OCI_FILE_TEXT 1 /* text file */
#define OCI_FILE_STDIN 2 /* standard i/p */
#define OCI_FILE_STDOUT 3 /* standard o/p */
#define OCI_FILE_STDERR 4 /* standard error */
/* Represents an open file */
typedef struct OCIFileObject OCIFileObject;
/*--------------------- OCI Thread Object Definitions------------------------*/
/* OCIThread Context */
typedef struct OCIThreadContext OCIThreadContext;
/* OCIThread Mutual Exclusion Lock */
typedef struct OCIThreadMutex OCIThreadMutex;
/* OCIThread Key for Thread-Specific Data */
typedef struct OCIThreadKey OCIThreadKey;
/* OCIThread Thread ID */
typedef struct OCIThreadId OCIThreadId;
/* OCIThread Thread Handle */
typedef struct OCIThreadHandle OCIThreadHandle;
/*-------------------- OCI Thread Callback Function Pointers ----------------*/
/* OCIThread Key Destructor Function Type */
typedef void (*OCIThreadKeyDestFunc)( void * );
/* Flags passed into OCIExtractFromXXX routines to direct processing */
#define OCI_EXTRACT_CASE_SENSITIVE 0x1 /* matching is case sensitive */
#define OCI_EXTRACT_UNIQUE_ABBREVS 0x2 /* unique abbreviations for keys
are allowed */
#define OCI_EXTRACT_APPEND_VALUES 0x4 /* if multiple values for a key
exist, this determines if the
new value should be appended
to (or replace) the current
list of values */
/* Constants passed into OCIExtractSetKey routine */
#define OCI_EXTRACT_MULTIPLE 0x8 /* key can accept multiple values */
#define OCI_EXTRACT_TYPE_BOOLEAN 1 /* key type is boolean */
#define OCI_EXTRACT_TYPE_STRING 2 /* key type is string */
#define OCI_EXTRACT_TYPE_INTEGER 3 /* key type is integer */
#define OCI_EXTRACT_TYPE_OCINUM 4 /* key type is ocinum */
/*---------------------------------------------------------------------------
PRIVATE TYPES AND CONSTANTS
---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
PUBLIC FUNCTIONS
---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
PRIVATE FUNCTIONS
---------------------------------------------------------------------------*/
#endif /* OCI1_ORACLE */

View File

@ -0,0 +1,317 @@
/*
*
*/
/* Copyright (c) 1998, 2005, Oracle. All rights reserved. */
/*
NAME
oci8dp.h - OCI: Direct Path API interface prototypes.
DESCRIPTION
Public types, constants, and interfaces to the direct path API.
RELATED DOCUMENTS
NOTES
This file is not directly included by the application, this file
is included by "oci.h", which the application should include.
MODIFIED (MM/DD/YY)
dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
rphillip 02/27/04 - Add OCI_DIRPATH_COL_ERROR
srseshad 03/12/03 - convert oci public api to ansi
msakayed 10/28/02 - Bug #2643907: add OCI_ATTR_DIRPATH_SKIPINDEX_METHOD
cmlim 04/13/01 - remove OCIDirPathStreamToStream - not used by dpapi
cmlim 04/02/01 - OCI_DIRPATH_EXPR_OPQ_SQL_FN to OCI_DIRPATH_EXPR_SQL
ebatbout 01/22/01 - PARTIAL value for OCIDirPathDataSave action parameter
cmlim 07/20/00 - support opaques/sql strings in 8.2 dpapi
cmlim 08/14/00 - support refs in 8.2 dpapi
cmlim 04/17/00 - add defines for OCIDirPathFuncCtx handle & OCI_ATTR_D
whe 09/01/99 - 976457:check __cplusplus for C++ code
abrumm 04/16/99 - dpapi: more attributes
abrumm 02/26/99 - add defines for DataSave action
abrumm 10/04/98 - clen must be a ub4
abrumm 05/27/98 - add column array flag values
abrumm 05/12/98 - direct path api support
abrumm 03/31/98 - OCI direct path interface support
abrumm 03/18/98 - Creation
*/
#ifndef OCI8DP_ORACLE
# define OCI8DP_ORACLE
#ifndef ORATYPES
#include <oratypes.h>
#endif
#ifndef OCIDFN
#include <ocidfn.h>
#endif
#ifndef OCI_ORACLE
#include <oci.h>
#endif
/*---------------------------------------------------------------------------
PUBLIC TYPES AND CONSTANTS
---------------------------------------------------------------------------*/
/*----- Handles and descriptors for direct path operations (OCIDirPath*) ----*/
typedef struct OCIDirPathCtx OCIDirPathCtx; /* context */
typedef struct OCIDirPathFuncCtx OCIDirPathFuncCtx; /* function context */
typedef struct OCIDirPathColArray OCIDirPathColArray; /* column array */
typedef struct OCIDirPathStream OCIDirPathStream; /* stream */
typedef struct OCIDirPathDesc OCIDirPathDesc; /* direct path descriptor */
/*----- Defines for Direct Path Options -----*/
/* values for OCI_ATTR_DIRPATH_MODE attribute */
#define OCI_DIRPATH_LOAD 1 /* direct path load operation */
#define OCI_DIRPATH_UNLOAD 2 /* direct path unload operation */
#define OCI_DIRPATH_CONVERT 3 /* direct path convert only operation */
/*----- values for OCI_ATTR_DIRPATH_INDEX_MAINT_METHOD attribute -----*/
#define OCI_DIRPATH_INDEX_MAINT_SINGLE_ROW 1
/* Note that there are two attributes dealing with index maintenance -
* OCI_ATTR_DIRPATH_INDEX_MAINT_METHOD and OCI_ATTR_DIRPATH_SKIPINDEX_METHOD.
* OCI_ATTR_DIRPATH_SKIPINDEX_METHOD exists to isolate the behavior for
* skipping index maintenance since maintenance of unusable indexes is
* orthogonal to that of single row insertion.
* For backwards compatibility we still allow users to specify skip
* methods in OCI_ATTR_DIRPATH_INDEX_MAINT_METHOD so make sure the
* enumerations for the two attributes are distinct.
*/
/*----- values for OCI_ATTR_DIRPATH_SKIPINDEX_METHOD attribute -----*/
#define OCI_DIRPATH_INDEX_MAINT_SKIP_UNUSABLE 2
#define OCI_DIRPATH_INDEX_MAINT_DONT_SKIP_UNUSABLE 3
#define OCI_DIRPATH_INDEX_MAINT_SKIP_ALL 4
/* values for OCI_ATTR_STATE attribute of OCIDirPathCtx */
#define OCI_DIRPATH_NORMAL 1 /* can accept rows, last row complete */
#define OCI_DIRPATH_PARTIAL 2 /* last row was partial */
#define OCI_DIRPATH_NOT_PREPARED 3 /* direct path context is not prepared */
/*----- values for cflg argument to OCIDirpathColArrayEntrySet -----*/
#define OCI_DIRPATH_COL_COMPLETE 0 /* column data is complete */
#define OCI_DIRPATH_COL_NULL 1 /* column is null */
#define OCI_DIRPATH_COL_PARTIAL 2 /* column data is partial */
#define OCI_DIRPATH_COL_ERROR 3 /* column error, ignore row */
/*----- values for action parameter to OCIDirPathDataSave -----*/
#define OCI_DIRPATH_DATASAVE_SAVEONLY 0 /* data save point only */
#define OCI_DIRPATH_DATASAVE_FINISH 1 /* execute finishing logic */
/* save portion of input data (before space error occurred) and finish */
#define OCI_DIRPATH_DATASAVE_PARTIAL 2
/*- OCI_ATTR_DIRPATH_EXPR_TYPE values (describes OCI_ATTR_NAME expr type) -*/
#define OCI_DIRPATH_EXPR_OBJ_CONSTR 1 /* NAME is an object constructor */
#define OCI_DIRPATH_EXPR_SQL 2 /* NAME is an opaque or sql function */
#define OCI_DIRPATH_EXPR_REF_TBLNAME 3 /* NAME is table name if ref is scoped*/
/*---------------------------------------------------------------------------
PUBLIC FUNCTIONS
---------------------------------------------------------------------------*/
/*------------------------ OCIDirPathCtx Operations -------------------------*/
/*
NAME
OCIDirPathAbort - OCI: Abort a direct path operation.
DESCRIPTION
Aborts a direct path operation. Upon successful completion
the direct path context is no longer valid.
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathAbort( OCIDirPathCtx *dpctx, OCIError *errhp );
/*
NAME
OCIDirPathDataSave - OCI: Execute a data save point.
DESCRIPTION
Successful return of this function indicates that a data save
point has been executed.
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathDataSave( OCIDirPathCtx *dpctx, OCIError *errhp, ub4 action );
/*
NAME
OCIDirPathFinish - OCI: Finish a direct path operation.
DESCRIPTION
Finishes a direct path operation.
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathFinish( OCIDirPathCtx *dpctx, OCIError *errhp );
/*
NAME
OCIDirPathFlushRow - OCI: Flush a partial row from the server.
DESCRIPTION
Flushes a partially loaded row from the server.
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathFlushRow( OCIDirPathCtx *dpctx, OCIError *errhp );
/*
NAME
OCIDirPathPrepare - OCI: Prepare a direct path operation.
DESCRIPTION
Prepares a table/partition for a direct path operation.
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathPrepare( OCIDirPathCtx *dpctx, OCISvcCtx *svchp,
OCIError *errhp );
/*
NAME
OCIDirPathLoadStream - OCI: Load a direct path stream.
DESCRIPTION
Load a direct path stream to the object associated with
the direct path context.
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathLoadStream( OCIDirPathCtx *dpctx, OCIDirPathStream *dpstr,
OCIError *errhp );
/*---------------------- OCIDirPathColArray Operations ----------------------*/
/*
NAME
OCIDirPathColArrayEntryGet - OCI: Get column array entry.
DESCRIPTION
Column array function which is used to get a specified entry in
a column array.
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathColArrayEntryGet( OCIDirPathColArray *dpca, OCIError *errhp,
ub4 rownum, ub2 colIdx, ub1 **cvalpp, ub4 *clenp,
ub1 *cflgp );
/*
NAME
OCIDirPathColArrayEntrySet - OCI: Set column array entry.
DESCRIPTION
Column array function which is used to set a specified entry in
a column array.
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathColArrayEntrySet( OCIDirPathColArray *dpca, OCIError *errhp,
ub4 rownum, ub2 colIdx, ub1 *cvalp, ub4 clen,
ub1 cflg );
/*
NAME
OCIDirPathColArrayRowGet - OCI: Get column array row pointers.
DESCRIPTION
Column array function which is used to get the base row pointers
for a specified row in a column array.
To be used in lieu of OCIDirPathColArrayEntryGet() and
OCIDirPathColArrayEntrySet().
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathColArrayRowGet( OCIDirPathColArray *dpca, OCIError *errhp,
ub4 rownum, ub1 ***cvalppp, ub4 **clenpp,
ub1 **cflgpp );
/*
NAME
OCIDirPathColArrayReset - OCI: Reset Column Array State
DESCRIPTION
Function which resets the column array state.
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
Resetting the column array state is necessary when piecing in a large
column and an error occurs in the middle of loading the column.
*/
sword
OCIDirPathColArrayReset( OCIDirPathColArray *dpca, OCIError *errhp );
/*
NAME
OCIDirPathColArrayToStream - OCI: Convert Column Array to Stream Format.
DESCRIPTION
Convert from column array format to stream format which is suitable
for loading via OCIDirPathLoadStream().
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathColArrayToStream( OCIDirPathColArray *dpca, OCIDirPathCtx *dpctx,
OCIDirPathStream *dpstr, OCIError *errhp,
ub4 rowcnt, ub4 rowoff );
/*----------------------- OCIDirPathStream Operations -----------------------*/
/*
NAME
OCIDirPathStreamReset - OCI:
DESCRIPTION
RETURNS
An OCI error code, Oracle errors are returned via the error handle.
NOTES
*/
sword
OCIDirPathStreamReset( OCIDirPathStream *dpstr, OCIError *errhp );
#endif /* OCI8DP_ORACLE */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,155 @@
/* Copyright (c) 1991, 2005, Oracle. All rights reserved. */
/*
NAME
ociapr.h
MODIFIED (MM/DD/YY)
mbastawa 09/16/05 - dbhygiene
dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
dsaha 05/19/00 - Fix lint
sgollapu 05/19/98 - Change text to OraText
dchatter 11/10/95 - add ognfd() - get native fd
lchidamb 04/06/95 - drop maxdsz from obindps/odefinps
slari 04/07/95 - add opinit
dchatter 03/08/95 - osetpi and ogetpi
lchidamb 12/09/94 - add obindps() and odefinps()
dchatter 03/06/95 - merge changes from branch 1.1.720.2
dchatter 11/14/94 - merge changes from branch 1.1.720.1
dchatter 02/08/95 - olog call; drop onblon
dchatter 10/31/94 - new functions for non-blocking oci
rkooi2 11/27/92 - Changing datatypes to agree with ocidef.h
rkooi2 10/26/92 - More portability mods
rkooi2 10/18/92 - Changed to agree with oci.c
sjain 03/16/92 - Creation
*/
/*
* Declare the OCI functions.
* Prototype information is included.
* Use this header for ANSI C compilers.
*/
#ifndef OCIAPR
#define OCIAPR
#ifndef ORATYPES
#include <oratypes.h>
#endif
#ifndef OCIDFN
#include <ocidfn.h>
#endif
/*
* Oci BIND (Piecewise or with Skips)
*/
sword obindps(struct cda_def *cursor, ub1 opcode, OraText *sqlvar,
sb4 sqlvl, ub1 *pvctx, sb4 progvl,
sword ftype, sword scale,
sb2 *indp, ub2 *alen, ub2 *arcode,
sb4 pv_skip, sb4 ind_skip, sb4 alen_skip, sb4 rc_skip,
ub4 maxsiz, ub4 *cursiz,
OraText *fmt, sb4 fmtl, sword fmtt);
sword obreak(struct cda_def *lda);
sword ocan (struct cda_def *cursor);
sword oclose(struct cda_def *cursor);
sword ocof (struct cda_def *lda);
sword ocom (struct cda_def *lda);
sword ocon (struct cda_def *lda);
/*
* Oci DEFINe (Piecewise or with Skips)
*/
sword odefinps(struct cda_def *cursor, ub1 opcode, sword pos,ub1 *bufctx,
sb4 bufl, sword ftype, sword scale,
sb2 *indp, OraText *fmt, sb4 fmtl, sword fmtt,
ub2 *rlen, ub2 *rcode,
sb4 pv_skip, sb4 ind_skip, sb4 alen_skip, sb4 rc_skip);
sword odessp(struct cda_def *cursor, OraText *objnam, size_t onlen,
ub1 *rsv1, size_t rsv1ln, ub1 *rsv2, size_t rsv2ln,
ub2 *ovrld, ub2 *pos, ub2 *level, OraText **argnam,
ub2 *arnlen, ub2 *dtype, ub1 *defsup, ub1* mode,
ub4 *dtsiz, sb2 *prec, sb2 *scale, ub1 *radix,
ub4 *spare, ub4 *arrsiz);
sword odescr(struct cda_def *cursor, sword pos, sb4 *dbsize,
sb2 *dbtype, sb1 *cbuf, sb4 *cbufl, sb4 *dsize,
sb2 *prec, sb2 *scale, sb2 *nullok);
sword oerhms (struct cda_def *lda, sb2 rcode, OraText *buf,
sword bufsiz);
sword oermsg (sb2 rcode, OraText *buf);
sword oexec (struct cda_def *cursor);
sword oexfet (struct cda_def *cursor, ub4 nrows,
sword cancel, sword exact);
sword oexn (struct cda_def *cursor, sword iters, sword rowoff);
sword ofen (struct cda_def *cursor, sword nrows);
sword ofetch (struct cda_def *cursor);
sword oflng (struct cda_def *cursor, sword pos, ub1 *buf,
sb4 bufl, sword dtype, ub4 *retl, sb4 offset);
sword ogetpi (struct cda_def *cursor, ub1 *piecep, void **ctxpp,
ub4 *iterp, ub4 *indexp);
sword oopt (struct cda_def *cursor, sword rbopt, sword waitopt);
sword opinit (ub4 mode);
sword olog (struct cda_def *lda, ub1* hda,
OraText *uid, sword uidl,
OraText *pswd, sword pswdl,
OraText *conn, sword connl,
ub4 mode);
sword ologof (struct cda_def *lda);
sword oopen (struct cda_def *cursor, struct cda_def *lda,
OraText *dbn, sword dbnl, sword arsize,
OraText *uid, sword uidl);
sword oparse (struct cda_def *cursor, OraText *sqlstm, sb4 sqllen,
sword defflg, ub4 lngflg);
sword orol (struct cda_def *lda);
sword osetpi (struct cda_def *cursor, ub1 piece, void *bufp, ub4 *lenp);
void sqlld2 (struct cda_def *lda, OraText *cname, sb4 *cnlen);
void sqllda (struct cda_def *lda);
/* non-blocking functions */
sword onbset (struct cda_def *lda );
sword onbtst (struct cda_def *lda );
sword onbclr (struct cda_def *lda );
sword ognfd (struct cda_def *lda, void *fdp);
/*
* OBSOLETE CALLS
*/
/*
* OBSOLETE BIND CALLS
*/
sword obndra(struct cda_def *cursor, OraText *sqlvar, sword sqlvl,
ub1 *progv, sword progvl, sword ftype, sword scale,
sb2 *indp, ub2 *alen, ub2 *arcode, ub4 maxsiz,
ub4 *cursiz, OraText *fmt, sword fmtl, sword fmtt);
sword obndrn(struct cda_def *cursor, sword sqlvn, ub1 *progv,
sword progvl, sword ftype, sword scale, sb2 *indp,
OraText *fmt, sword fmtl, sword fmtt);
sword obndrv(struct cda_def *cursor, OraText *sqlvar, sword sqlvl,
ub1 *progv, sword progvl, sword ftype, sword scale,
sb2 *indp, OraText *fmt, sword fmtl, sword fmtt);
/*
* OBSOLETE DEFINE CALLS
*/
sword odefin(struct cda_def *cursor, sword pos, ub1 *buf,
sword bufl, sword ftype, sword scale, sb2 *indp,
OraText *fmt, sword fmtl, sword fmtt, ub2 *rlen, ub2 *rcode);
/* older calls ; preferred equivalent calls above */
sword oname (struct cda_def *cursor, sword pos, sb1 *tbuf,
sb2 *tbufl, sb1 *buf, sb2 *bufl);
sword orlon (struct cda_def *lda, ub1 *hda,
OraText *uid, sword uidl,
OraText *pswd, sword pswdl,
sword audit);
sword olon (struct cda_def *lda, OraText *uid, sword uidl,
OraText *pswd, sword pswdl, sword audit);
sword osql3 (struct cda_def *cda, OraText *sqlstm, sword sqllen);
sword odsc (struct cda_def *cursor, sword pos, sb2 *dbsize,
sb2 *fsize, sb2 *rcode, sb2 *dtype, sb1 *buf,
sb2 *bufl, sb2 *dsize);
#endif /* OCIAPR */

View File

@ -0,0 +1,886 @@
/* Copyright (c) 1981, 2005, Oracle. All rights reserved. */
/* Copyright (c) 1984, 2005, Oracle. All rights reserved. */
/*
NAME
ocidef
CONTENTS
Oracle Call Interface cursor area and LDA definitions
NOTES
none
OWNER
Oates
DATE
09/07/82
MODIFIED
mbastawa 09/16/05 - dbhygiene
dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
srseshad 03/25/03 - convert oci public api to ansi
csteinba 11/05/02 - bug 2521931: redefine OTYACL
aahluwal 06/03/02 - bug 2360115
bpalaval 02/08/01 - Change text to oratext.
chliang 02/01/01 - fix olint error.
bpalaval 11/16/00 - Bug 1244685 : Fix ALTER CLUSTER issue..
slari 11/08/00 - remove functions duplicated in ociapr.h
whe 09/01/99 - 976457:check __cplusplus for C++ code
skmishra 04/23/97 - Provide C++ compatibility
lchidamb 06/26/96 - put upidef.h, riddef.h within #ifndef
slari 06/12/96 - add ocigft_getFcnType
dchatter 11/10/95 - ocignfd - oci get native file descriptor
slari 05/11/95 - change OCIEVDEF/OCIEVTSF to UPIEVDEF/UPIEVTSF
dchatter 04/06/95 - add ifdef flags around OCI_flags
lchidamb 04/06/95 - drop maxdsz from ocibndps/ocidfnps
slari 04/07/95 - rename opinit to ocipin
slari 03/13/95 - thread safety changes
dchatter 03/08/95 - piece definitions OCI_*_PIECE
lchidamb 12/06/94 - add support for binding/defining with skips
dchatter 03/06/95 - merge changes from branch 1.12.720.1
dchatter 02/06/95 - add defines for login mode parameters
dchatter 07/06/94 - Deleting CRSCHK, with refcursor, no way to set this
dchatter 06/13/94 - add a new LDA flag LDANBL
rkooi 11/18/92 - update ocidpr interface
mmoore 10/31/92 - add ocidpr
gpongrac 11/17/92 - fix oexfet prototype
sjain 01/03/92 - Add ocibra
rjenkins 11/04/91 - adding prototypes for oparse and oexfet
sjain 04/15/91 - Change ocistf proto
sjain 04/01/91 - Rearrange oty codes. Add new ones
Jain 12/03/90 - Add #define for new describe call
Jain 11/29/90 - Add new function code for the new oci calls
Mendels 01/20/89 - fix 19170: make ocitbl CONST_DATA
Kabcene 01/27/88 - change interfaces to match V5
Navab 12/09/87 - add a parameter to ocierr call
Navab 11/30/87 - add ocierr, rename ocioer
Navab 10/08/87 - add prototypes for procedure declarations
Howard 09/07/87 - endif blah
Howard 05/11/87 - Add OTY types
Howard 04/27/87 - move ocldef defines here
Oates 10/15/85 - Add OCANCEL
Oates 09/30/85 - Implement ORA*Net
Oates 06/27/85 - Make datatype compatible with upidef.h
Andy 05/07/85 - delete CSRFBPIC
*/
#ifndef UPIDEF
#include <upidef.h>
#endif
#ifndef RIDDEF
#include <riddef.h>
#endif
#include <ociapr.h>
#ifndef OCIDEF
#define OCIDEF
#define CSRCHECK 172 /* csrdef is a cursor */
#define LDACHECK 202 /* csrdef is a login data area */
struct csrdef
{
sb2 csrrc; /* return code: v2 codes, v4 codes negative */
ub2 csrft; /* function type */
ub4 csrrpc; /* rows processed count */
ub2 csrpeo; /* parse error offset */
ub1 csrfc; /* function code */
ub1 csrlfl; /* lda flag to indicate type of login */
ub2 csrarc; /* actual untranslated return code */
ub1 csrwrn; /* warning flags */
ub1 csrflg; /* error action */
sword csrcn; /* cursor number */
riddef csrrid; /* rowid structure */
sword csrose; /* os dependent error code */
ub1 csrchk; /* check byte = CSRCHECK - in cursor */
/* check byte = LDACHECK - in LDA */
struct hstdef *csrhst; /* pointer to the hst */
};
typedef struct csrdef csrdef;
typedef struct csrdef ldadef; /* lda is the same as a csr */
/* values for csrlfl */
#define LDAFLG 1 /* ...via ologon */
#define LDAFLO 2 /* ...via olon or orlon */
#define LDANBL 3 /* ...nb logon in progress */
/* valuses for crsfc */
#define csrfpa 2 /* ...OSQL */
#define csrfex 4 /* ...OEXEC */
#define csrfbi 6 /* ...OBIND */
#define csrfdb 8 /* ...ODFINN */
#define csrfdi 10 /* ...ODSRBN */
#define csrffe 12 /* ...OFETCH */
#define csrfop 14 /* ...OOPEN */
#define csrfcl 16 /* ...OCLOSE */
#define csrfds 22 /* ...ODSC */
#define csrfnm 24 /* ...ONAME */
#define csrfp3 26 /* ...OSQL3 */
#define csrfbr 28 /* ...OBNDRV */
#define csrfbx 30 /* ...OBNDRN */
/*#defe csrfdf 32*/ /* ???? */
#define csrfso 34 /* ...OOPT */
#define csrfre 36 /* ...ORESUM */
#define csrfbn 50 /* ...OBINDN */
#define csrfca 52 /* ..OCANCEL */
#define csrfsd 54 /* ..OSQLD */
#define csrfef 56 /* ..OEXFEN */
#define csrfln 58 /* ..OFLNG */
#define csrfdp 60 /* ..ODSCSP */
#define csrfba 62 /* ..OBNDRA */
#define csrfbps 63 /*..OBINDPS */
#define csrfdps 64 /*..ODEFINPS */
#define csrfgpi 65 /* ...OGETPI */
#define csrfspi 66 /* ...OSETPI */
/* values for csrwrn */
#define CSRWANY 0x01 /* there is a warning flag set */
#define CSRWTRUN 0x02 /* a data item was truncated */
#define CSRWNVIC 0x04 /* NULL values were used in an aggregate function */
#define CSRWITCE 0x08 /* column count not equal to into list count */
#define CSRWUDNW 0x10 /* update or delete without where clause */
#define CSRWRSV0 0x20
#define CSRWROLL 0x40 /* rollback required */
#define CSRWRCHG 0x80 /* change after query start on select for update */
/* values fro csrflg */
#define CSRFSPND 0x01 /* current operation suspended */
#define CSRFATAL 0x02 /* fatal operation: transaction rolled back */
#define CSRFBROW 0x04 /* current row backed out */
#define CSRFREFC 0x08 /* ref cursor type CRSCHK disabled for this cursor */
#define CSRFNOAR 0x10 /* ref cursor type binds, so no array bind/execute */
/* define function codes; in order of octdef.h */
#define OTYCTB 1 /* CREATE TABLE */
#define OTYSER 2 /* set role */
#define OTYINS 3 /* INSERT */
#define OTYSEL 4 /* SELECT */
#define OTYUPD 5 /* UPDATE */
#define OTYDRO 6 /* drop role */
#define OTYDVW 7 /* DROP VIEW */
/* once was validate index */
/* once was create partition */
/* once was alter partition */
#define OTYDTB 8 /* DROP TABLE */
/* once was alter space */
/* once was drop space */
#define OTYDEL 9 /* DELETE */
#define OTYCVW 10 /* create view */
#define OTYDUS 11 /* drop user */
#define OTYCRO 12 /* create role */
#define OTYCSQ 13 /* create sequence */
#define OTYASQ 14 /* alter sequence */
#define OTYACL 15 /* alter cluster */
#define OTYDSQ 16 /* drop sequence */
#define OTYCSC 17 /* create schema */
#define OTYCCL 18 /* CREATE CLUSTER */
/* once was alter cluster */
#define OTYCUS 19 /* create user */
#define OTYCIX 20 /* CREATE INDEX */
#define OTYDIX 21 /* DROP INDEX */
#define OTYDCL 22 /* DROP CLUSTER */
#define OTYVIX 23 /* validate index */
#define OTYCPR 24 /* create procedure */
#define OTYAPR 25 /* alter procedure */
#define OTYATB 26 /* alter table */
/* once was evaluate */
#define OTYXPL 27 /* explain */
#define OTYGRA 28 /* grant */
#define OTYREV 29 /* revoke */
#define OTYCSY 30 /* create synonym */
#define OTYDSY 31 /* drop synonym */
#define OTYASY 32 /* alter system switch log */
#define OTYSET 33 /* set transaction */
#define OTYPLS 34 /* pl/sql execute */
#define OTYLTB 35 /* lock */
#define OTYNOP 36 /* noop */
#define OTYRNM 37 /* rename */
#define OTYCMT 38 /* comment */
#define OTYAUD 39 /* audit */
#define OTYNOA 40 /* no audit */
#define OTYAIX 41 /* ALTER INDEX */
#define OTYCED 42 /* create external database */
#define OTYDED 43 /* drop external database */
#define OTYCDB 44 /* create database */
#define OTYADB 45 /* alter database */
#define OTYCRS 46 /* create rollback segment */
#define OTYARS 47 /* alter rollback segment */
#define OTYDRS 48 /* drop rollback segment */
#define OTYCTS 49 /* create tablespace */
#define OTYATS 50 /* alter tablespace */
#define OTYDTS 51 /* drop tablespace */
#define OTYASE 52 /* alter session */
#define OTYAUR 53 /* alter user */
#define OTYCWK 54 /* commit (work) */
#define OTYROL 55 /* rollback */
#define OTYSPT 56 /* savepoint */
/* For number greater than 56 the the type is the same as defined in
** octdef.h for that number. So for completion look at octdef.h
*/
#define OTYDEV OTYCVW /* old DEFINE VIEW = create view */
/* FUNCTION CODES */
#define OCLFPA 2 /* parse - OSQL */
#define OCLFEX 4 /* execute - OEXEC */
#define OCLFBI 6 /* BIND by name - OBIND */
#define OCLFDB 8 /* define buffer - ODEFIN */
#define OCLFDI 10 /* describe item - ODSC */
#define OCLFFE 12 /* fetch - OFETCH */
#define OCLFOC 14 /* open cursor - OOPEN */
# define OCLFLI OCLFOC /* old name for open cursor - OOPEN */
#define OCLFCC 16 /* close cursor - OCLOSE */
# define OCLFLO OCLFCC /* old name for close cursor - OCLOSE */
#define OCLFDS 22 /* describe - ODSC */
#define OCLFON 24 /* get table and column names - ONAME */
#define OCLFP3 26 /* parse - OSQL3 */
#define OCLFBR 28 /* bind reference by name - OBNDRV */
#define OCLFBX 30 /* bind referecne numeric - OBNDRN */
#define OCLFSO 34 /* special function - OOPT */
#define OCLFRE 36 /* resume - ORESUM */
#define OCLFBN 50 /* bindn */
#define OCLFMX 52 /* maximum function number */
#ifdef NEVER /* unused codes */
# define OCLFLK 18 /* open for kernel operations */
# define OCLFEK 20 /* execute kernel operations */
# define OCLFOK 22 /* kernel close */
# define OCLFIN 28 /* logon to oracle */
# define OCLFOF 30 /* logoff from oracle */
# define OCLFAX 32 /* allocate a context area */
# define OCLFPI 34 /* page in context area */
# define OCLFIS 36 /* special system logon */
# define OCLFCO 38 /* cancel the current operation */
# define OCLFGI 40 /* get database id */
# define OCLFJN 42 /* journal operation */
# define OCLFCL 44 /* cleanup prior execute operation */
# define OCLFMC 46 /* map a cursor area */
# define OCLFUC 48 /* unmap cursor and restore user maping */
#endif /*NEVER *//* obsolete codes */
/* values for ocimode in ocipin call */
#define OCIEVDEF UPIEVDEF /* default : non-thread safe enivronment */
#define OCIEVTSF UPIEVTSF /* thread-safe environment */
/* OCIL* flags used to determine the mode of login, using ocilog().
** Currently defined only for non-blocking and thread-safe logins.
*/
#define OCILMDEF UPILMDEF /* default, regular login */
#define OCILMNBL UPILMNBL /* non-blocking logon */
#define OCILMESY UPILMESY /* thread safe but external sync */
#define OCILMISY UPILMISY /* internal sync, we do it */
#define OCILMTRY UPILMTRY /* try to, but do not block on mutex */
/*
* since sqllib uses both ocidef and ocidfn the following defines
* need to be guarded
*/
#ifndef OCI_FLAGS
#define OCI_FLAGS
/* OCI_*_PIECE defines the piece types that are returned or set
*/
#define OCI_ONE_PIECE UPI_ONE_PIECE /* there or this is the only piece */
#define OCI_FIRST_PIECE UPI_FIRST_PIECE /* the first of many pieces */
#define OCI_NEXT_PIECE UPI_NEXT_PIECE /* the next of many pieces */
#define OCI_LAST_PIECE UPI_LAST_PIECE /* the last piece of this column */
#endif
/*
** OCITAB: define return code pairs for version 2 to 3 conversions
*/
struct ocitab
{
sb2 ocitv3; /* Version 3/4 return code */
sb2 ocitv2; /* Version 2 equivalent return code */
};
typedef struct ocitab ocitab;
externref const ocitab ocitbl[];
/* macros to check cursors and LDA's. */
/* macros to set error codes */
# define CRSCHK(c) if ((c->csrchk != CSRCHECK)\
&& !bit(c->csrflg, CSRFREFC))\
return(ocir32(c, OER(1001)))
# define ldaerr(l, e) ( l->csrrc = (sb2)(-( l->csrarc = (ub2)(e)) ) )
# define LDACHK(l) if (l->csrchk != LDACHECK) \
return(ldaerr(l, OER(1001)))
/************************************************/
/* OCI PROCEDURE DECLARATIONS */
/************************************************/
/*****************************/
/* Database logon/logout */
/*****************************/
sword ocilog( ldadef *lda, struct hstdef *hst, oratext *uid, sword uidl,
oratext *psw, sword pswl, oratext* conn, sword connl,
ub4 mode );
sword ocilon( ldadef *lda, oratext *uid, sword uidl, oratext *psw,
sword pswl, sword audit );
sword ocilgi( ldadef *lda, sb2 areacount );
sword ocirlo( ldadef *lda, struct hstdef *hst, oratext *uid, sword uidl,
oratext *psw, sword pswl, sword audit );
/* ocilon - logon to oracle
** ocilgi - version 2 compatible ORACLE logon call.
** no login to ORACLE is performed: the LDA is initialized
** ocirlo - version 5 compatible ORACLE Remote Login call,
** oracle login is executed.
** lda - pointer to ldadef
** uid - user id [USER[/PASSWORD]]
** uidl - length of uid, if -1 strlen(uid) is used
** psw - password string; ignored if specified in uid
** pswl - length of psw, if -1 strlen(psw) is used
** audit - is not supported; the only permissible value is 0
** areacount - unused
*/
sword ocilof( ldadef *lda );
/*
** ocilof - disconnect from ORACLE
** lda - pointer to ldadef
*/
/*********************/
/* Error Messages */
/*********************/
sword ocierr( ldadef *lda, sb2 rcode, oratext *buffer, sword bufl );
sword ocidhe( sb2 rcode, oratext *buffer );
/*
** Move the text explanation for an ORACLE error to a user defined buffer
** ocierr - will return the message associated with the hstdef stored
** in the lda.
** ocidhe - will return the message associated with the default host.
** lda - lda associated with the login session
** rcode - error code as returned by V3 call interface
** buffer - address of a user buffer of at least 132 characters
*/
/***********************/
/* Cursor Open/Close */
/***********************/
sword ociope( struct csrdef *cursor, ldadef *lda, oratext *dbn, sword dbnl,
sword areasize, oratext *uid, sword uidl );
sword ociclo( struct csrdef *cursor );
/*
** open or close a cursor.
** cursor - pointer to csrdef
** ldadef - pointer to ldadef
** dbn - unused
** dbnl - unused
** areasize - if (areasize == -1) areasize <- system default initial size
** else if (areasize IN [1..256]) areasize <- areasize * 1024;
** most applications should use the default size since context
** areas are extended as needed until memory is exhausted.
** uid - user id
** uidl - userid length
*/
/***********************************/
/* CONTROL AND OPTIONS */
/***********************************/
sword ocibre( ldadef *lda );
/*
** ocibrk - Oracle Call Interface send BReaK Sends a break to
** oracle. If oracle is active, the current operation is
** cancelled. May be called asynchronously. DOES NOT SET
** OERRCD in the hst. This is because ocibrk may be called
** asynchronously. Callers must test the return code.
** lda - pointer to a ldadef
*/
sword ocican( struct csrdef *cursor );
/*
** cancel the operation on the cursor, no additional OFETCH calls
** will be issued for the existing cursor without an intervening
** OEXEC call.
** cursor - pointer to csrdef
*/
sword ocisfe( struct csrdef *cursor, sword erropt, sword waitopt );
/*
** ocisfe - user interface set error options
** set the error and cursor options.
** allows user to set the options for dealing with fatal dml errors
** and other cursor related options
** see oerdef for valid settings
** cursor - pointer to csrdef
** erropt - error optionsn
** waitopr - wait options
*/
/***************************************/
/* COMMIT/ROLLBACK/AUTOCOMMIT */
/***************************************/
sword ocicom( ldadef *lda );
sword ocirol( ldadef *lda );
/*
** ocicom - commit the current transaction
** ocirol - roll back the current transaction
*/
sword ocicon( ldadef *lda );
sword ocicof( ldadef *lda );
/*
** ocicon - auto Commit ON
** ocicof - auto Commit OFf
*/
/************************/
/* parsing */
/************************/
sword ocisq3(struct csrdef *cursor, oratext * /* sqlstm */, sword sqllen);
/*
** ocisq3 - user interface parse sql statement
** cursor - pointer to csrdef
** sqlstm - pointer to SQL statement
** sqllen - length of SQL statement. if -1, strlen(sqlstm) is used
*/
/***************************/
/* BINDING */
/***************************/
/* these are for the opcode in ocibndps, ocidfnps */
#define OCI_PCWS 0
#define OCI_SKIP 1
sword ocibin( struct csrdef *cursor, oratext *sqlvar, sword sqlvl,
ub1 *progv, sword progvl, sword ftype, sword scale,
oratext *fmt, sword fmtl, sword fmtt );
sword ocibrv( struct csrdef *cursor, oratext *sqlvar, sword sqlvl,
ub1 *progv, sword progvl, sword ftype, sword scale, sb2 *indp,
oratext *fmt, sword fmtl, sword fmtt );
sword ocibra( struct csrdef *cursor, oratext *sqlvar, sword sqlvl,
ub1 *progv, sword progvl, sword ftype, sword scale,
sb2 *indp, ub2 *aln, ub2 *rcp, ub4 mal, ub4 *cal,
oratext *fmt, sword fmtl, sword fmtt );
sword ocibndps( struct csrdef *cursor, ub1 opcode, oratext *sqlvar,
sb4 sqlvl, ub1 *progv, sb4 progvl, sword ftype,
sword scale, sb2 *indp, ub2 *aln, ub2 *rcp, sb4 pv_skip,
sb4 ind_skip, sb4 len_skip, sb4 rc_skip, ub4 mal,
ub4 *cal, oratext *fmt, sb4 fmtl, sword fmtt );
sword ocibnn ( struct csrdef *cursor, ub2 sqlvn, ub1 *progv, sword progvl,
sword ftype, sword scale, oratext *fmt, sword fmtl,
sword fmtt );
sword ocibrn( struct csrdef *cursor, sword sqlvn, ub1 *progv, sword progvl,
sword ftype, sword scale, sb2 *indp, oratext *fmt, sword fmtl,
sword fmtt );
/*
** ocibin - bind by value by name
** ocibrv - bind by reference by name
** ocibra - bind by reference by name (array)
** ocibndps - bind by reference by name (array) piecewise or with skips
** ocibnn - bind by value numeric
** ocibrn - bind by reference numeric
**
** the contents of storage specified in bind-by-value calls are
** evaluated immediately.
** the addresses of storage specified in bind-by-reference calls are
** remembered, and the contents are examined at every execute.
**
** cursor - pointer to csrdef
** sqlvn - the number represented by the name of the bind variables
** for variables of the form :n or &n for n in [1..256)
** (i.e. &1, :234). unnecessarily using larger numbers
** in the range wastes space.
** sqlvar - the name of the bind variable (:name or &name)
** sqlval - the length of the name;
** in bindif -1, strlen(bvname) is used
** progv - pointer to the object to bind.
** progvl - length of object to bind.
** in bind-by-value if specified as -1 then strlen(bfa) is
** used (really only makes sends with character types)
** in bind-by-value, if specified as -1 then UB2MAXVAL
** is used. Again this really makes sense only with
** SQLT_STR.
** ftype - datatype of object
** indp - pointer to indicator variable.
** -1 means to ignore bfa/bfl and bind NULL;
** not -1 means to bind the contents of bfa/bfl
** bind the contents pointed to by bfa
** aln - Alternate length pointer
** rcp - Return code pointer
** mal - Maximum array length
** cal - Current array length pointer
** fmt - format string
** fmtl - length of format string; if -1, strlen(fmt) is used
** fmtt - desired output type after applying forat mask. Not
** really yet implemented
** scale - number of decimal digits in a cobol packed decimal (type 7)
**
** Note that the length of bfa when bound as SQLT_STR is reduced
** to strlen(bfa).
** Note that trailing blanks are stripped of storage of SQLT_STR.
*/
/***************************/
/* DESCRIBING */
/***************************/
sword ocidsc ( struct csrdef *cursor, sword pos, sb2 *dbsize, sb2 *fsize,
sb2 *rcode, sb2 *dtype, sb1 *buf, sb2 *bufl, sb2 *dsize );
sword ocidsr( struct csrdef *cursor, sword pos, sb2 *dbsize, sb2 *dtype,
sb2 *fsize );
sword ocinam( struct csrdef *cursor, sword pos, sb1 *tbuf, sb2 *tbufl,
sb1 *buf, sb2 *bufl );
/*
** ocidsc, ocidsr: Obtain information about a column
** ocinam : get the name of a column
** cursor - pointer to csrdef
** pos - position in select list from [1..N]
** dbsize - place to store the database size
** fsize - place to store the fetched size
** rcode - place to store the fetched column returned code
** dtype - place to store the data type
** buf - array to store the column name
** bufl - place to store the column name length
** dsize - maximum display size
** tbuf - place to store the table name
** tbufl - place to store the table name length
*/
sword ocidsp ( struct csrdef *cursor, sword pos, sb4 *dbsize, sb2 *dbtype,
sb1 *cbuf, sb4 *cbufl, sb4 *dsize, sb2 *pre, sb2 *scl,
sb2 *nul );
sword ocidpr( ldadef *lda, oratext *object_name, size_t object_length,
void * reserved1, size_t reserved1_length, void * reserved2,
size_t reserved2_length, ub2 *overload, ub2 *position,
ub2 *level, oratext **argument_name, ub2 *argument_length,
ub2 *datatype, ub1 *default_supplied, ub1 *in_out,
ub4 *length, sb2 *precision, sb2 *scale, ub1 *radix,
ub4 *spare, ub4 *total_elements );
/*
** OCIDPR - User Program Interface: Describe Stored Procedure
**
** This routine is used to obtain information about the calling
** arguments of a stored procedure. The client provides the
** name of the procedure using "object_name" and "database_name"
** (database name is optional). The client also supplies the
** arrays for OCIDPR to return the values and indicates the
** length of array via the "total_elements" parameter. Upon return
** the number of elements used in the arrays is returned in the
** "total_elements" parameter. If the array is too small then
** an error will be returned and the contents of the return arrays
** are invalid.
**
**
** EXAMPLE :
**
** Client provides -
**
** object_name - SCOTT.ACCOUNT_UPDATE@BOSTON
** total_elements - 100
**
**
** ACCOUNT_UPDATE is an overloaded function with specification :
**
** type number_table is table of number index by binary_integer;
** table account (account_no number, person_id number,
** balance number(7,2))
** table person (person_id number(4), person_nm varchar2(10))
**
** function ACCOUNT_UPDATE (account number,
** person person%rowtype, amounts number_table,
** trans_date date) return accounts.balance%type;
**
** function ACCOUNT_UPDATE (account number,
** person person%rowtype, amounts number_table,
** trans_no number) return accounts.balance%type;
**
**
** Values returned -
**
** overload position argument level datatype length prec scale rad
** -------------------------------------------------------------------
** 0 0 0 NUMBER 22 7 2 10
** 0 1 ACCOUNT 0 NUMBER 22 0 0 0
** 0 2 PERSON 0 RECORD 0 0 0 0
** 0 2 PERSON_ID 1 NUMBER 22 4 0 10
** 0 2 PERSON_NM 1 VARCHAR2 10 0 0 0
** 0 3 AMOUNTS 0 TABLE 0 0 0 0
** 0 3 1 NUMBER 22 0 0 0
** 0 4 TRANS_NO 0 NUMBER 22 0 0 0
**
** 1 0 0 NUMBER 22 7 2 10
** 1 1 ACCOUNT 0 NUMBER 22 0 0 0
** 1 2 PERSON 0 RECORD 0 0 0 0
** 1 2 PERSON_ID 1 NUMBER 22 4 0 10
** 1 2 PERSON_NM 1 VARCHAR2 10 0 0 0
** 1 3 AMOUNTS 0 TABLE 0 0 0 0
** 1 3 1 NUMBER 22 0 0 0
** 1 4 TRANS_DATE 0 NUMBER 22 0 0 0
**
**
** OCIDPR Argument Descriptions -
**
** ldadef - pointer to ldadef
** object_name - object name, synonyms are also accepted and will
** be translate, currently only procedure and function
** names are accepted, also NLS names are accepted.
** Currently, the accepted format of a name is
** [[part1.]part2.]part3[@dblink] (required)
** object_length - object name length (required)
** reserved1 - reserved for future use
** reserved1_length - reserved for future use
** reserved2 - reserved for future use
** reserved2_length - reserved for future use
** overload - array indicating overloaded procedure # (returned)
** position - array of argument positions, position 0 is a
** function return argument (returned)
** level - array of argument type levels, used to describe
** sub-datatypes of data structures like records
** and arrays (returned)
** argument_name - array of argument names, only returns first
** 30 characters of argument names, note storage
** for 30 characters is allocated by client (returned)
** argument_length - array of argument name lengths (returned)
** datatype - array of oracle datatypes (returned)
** default_supplied - array indicating parameter has default (returned)
** 0 = no default, 1 = default supplied
** in_out - array indicating if argument is IN or OUT (returned
** 0 = IN param, 1 = OUT param, 2 = IN/OUT param
** length - array of argument lengths (returned)
** precision - array of precisions (if number type)(returned)
** scale - array of scales (if number type)(returned)
** radix - array of radix (if number type)(returned)
** spare - array of spares.
** total_elements - size of arrays supplied by client (required),
** total number of elements filled (returned)
*/
/*************************************/
/* DEFINING */
/*************************************/
sword ocidfi( struct csrdef *cursor, sword pos, ub1 *buf, sword bufl,
sword ftype, sb2 *rc, sword scale );
sword ocidfn( struct csrdef *cursor, sword pos, ub1 *buf, sword bufl,
sword ftype, sword scale, sb2 *indp, oratext *fmt, sword fmtl,
sword fmtt, ub2 *rl, ub2 *rc );
sword ocidfnps( struct csrdef *cursor, ub1 opcode, sword pos, ub1 *buf,
sb4 bufl, sword ftype, sword scale,
sb2 *indp, oratext *fmt, sb4 fmtl,
sword fmtt, ub2 *rl, ub2 *rc,
sb4 pv_skip, sb4 ind_skip, sb4 len_skip,
sb4 rc_skip );
/* Define a user data buffer using upidfn
** cursor - pointer to csrdef
** pos - position of a field or exp in the select list of a query
** bfa/bfl - address and length of client-supplied storage
to receive data
** ftype - user datatype
** scale - number of fractional digits for cobol packed decimals
** indp - place to store the length of the returned value. If returned
** value is:
** negative, the field fetched was NULL
** zero , the field fetched was same length or shorter than
** the buffer provided
** positive, the field fetched was truncated
** fmt - format string
** fmtl - length of format string, if -1 strlent(fmt) used
** rl - place to store column length after each fetch
** rc - place to store column error code after each fetch
** fmtt - fomat type
*/
/********************************/
/* PIECE INFORMATION GET/SET */
/********************************/
sword ocigetpi( struct csrdef *cursor, ub1 *piecep,
void **ctxpp, ub4 *iterp, ub4 *indexp );
sword ocisetpi( struct csrdef *cursor, ub1 piece,
void *bufp, ub4 *lenp );
/********************************/
/* EXECUTE */
/********************************/
sword ociexe( struct csrdef *cursor );
sword ociexn( struct csrdef *cursor, sword iters, sword roff );
sword ociefn( struct csrdef *cursor, ub4 nrows, sword can, sword exact );
/*
** ociexe - execute a cursor
** ociexn - execute a cursosr N times
** cursor - pointer to a csrdef
** iters - number of times to execute cursor
** roff - offset within the bind variable array at which to begin
** operations.
*/
/*********************************/
/* FETCHING */
/*********************************/
sword ocifet( struct csrdef *cursor );
sword ocifen( struct csrdef *cursor, sword nrows );
/* ocifet - fetch the next row
** ocifen - fetch n rows
** cursor - pointer to csrdef
** nrows - number of rows to be fetched
*/
sword ocilng( struct csrdef *cursor, sword posit, ub1 *bfa, sb4 bfl,
sword dty, ub4 *rln, sb4 off );
/*********************************/
/* CONVERSION */
/*********************************/
sword ocic32( struct csrdef *cursor );
/*
** Convert selected version 3 return codes to the equivalent
** version 2 code.
** csrdef->csrrc is set to the converted code
** csrdef->csrft is set to v2 oracle statment type
** csrdef->csrrpc is set to the rows processed count
** csrdef->csrpeo is set to error postion
**
** cursor - pointer to csrdef
*/
sword ocir32( struct csrdef *cursor, sword retcode );
/*
** Convert selected version 3 return codes to the equivalent version 2
** code.
**
** cursor - pointer to csrdef
** retcode - place to store the return code
*/
void ociscn( sword **arglst, char *mask_addr, sword **newlst );
/*
** Convert call-by-ref to call-by-value:
** takes an arg list and a mask address, determines which args need
** conversion to a value, and creates a new list begging at the address
** of newlst.
**
** arglst - list of arguments
** mast_addr _ mask address determines args needing conversion
** newlst - new list of args
*/
sword ocistf ( sword typ, sword bufl, sword rdig, oratext *fmt,
struct csrdef *cursor, sword *err );
/* Convert a packed decimal buffer length (bytes) and scale to a format
** string of the form mm.+/-nn, where mm is the number of packed
** decimal digits, and nn is the scaling factor. A positive scale name
** nn digits to the rights of the decimal; a negative scale means nn zeros
** should be supplied to the left of the decimal.
** bufl - length of the packed decimal buffer
** rdig - number of fractional digits
** fmt - pointer to a string holding the conversion format
** cursor - pointer to csrdef
** err - pointer to word storing error code
*/
/******************************************/
/* Non-blocking operations */
/******************************************/
sword ocinbs( ldadef *lda ); /* set a connection to non-blocking */
sword ocinbt( ldadef *lda ); /* test if connection is non-blocking */
sword ocinbc( ldadef *lda ); /* clear a connection to blocking */
sword ocinlo( ldadef *lda, struct hstdef *hst, oratext *conn,
sword connl, oratext *uid, sword uidl,
oratext *psw, sword pswl, sword audit );
/* logon in non-blocking fashion */
/* ocinlo allows an application to logon in non-blocking fashion.
** lda - pointer to ldadef
** hst - pointer to a 256 byte area, must be cleared to zero before call
** conn - the database link (if specified @LINK in uid will be ignored)
** connl - length of conn; if -1 strlen(conn) is used
** uid - user id [USER[/PASSWORD][@LINK]]
** uidl - length of uid, if -1 strlen(uid) is used
** psw - password string; ignored if specified in uid
** pswl - length of psw, if -1 strlen(psw) is used
** audit - is not supported; the only permissible value is 0
*/
/***************************************************/
/* Procedure Declaration for Pro*C */
/***************************************************/
/* Note: The following routines are used in Pro*C and have the
same interface as their couterpart in OCI.
Althought the interface follows for more details please refer
to the above routines */
/******************************************/
/* initialization/logon/logof */
/******************************************/
sword ocipin( ub4 mode );
sword ologin( ldadef *lda, sb2 areacount );
sword ologon( ldadef *lda, sb2 areacount );
/*****************************************/
/* Open/Close/Parse Cursor */
/*****************************************/
/*
** ocisqd - oci delayed parse (Should be used only with deferred upi/oci)
** FUNCTION: Call upidpr to delay the parse of the sql statement till the
** time that a call needs to be made to the kernel (execution or
** describe time )
** RETURNS: Oracle return code.
*/
sword ocisq7( struct csrdef *cursor, oratext * /* sqlstm */, sb4 sqllen,
sword defflg, ub4 sqlt );
/*****************************************/
/* Bind */
/*****************************************/
sword obind( struct csrdef *cursor, oratext *sqlvar, sword sqlvl,
ub1 *progv, sword progvl, sword ftype, sword scale,
oratext *fmt, sword fmtl, sword fmtt );
sword obindn( struct csrdef *cursor, ub2 sqlvn, ub1 *progv, sword progvl,
sword ftype, sword scale, oratext *fmt, sword fmtl,
sword fmtt );
/**********************************************/
/* Define */
/**********************************************/
sword odfinn( struct csrdef *cursor, sword pos, ub1 *buf, sword bufl,
sword ftype, sb2 *rc, sword scale );
/**********************************************/
/* Describe */
/**********************************************/
sword odsrbn( struct csrdef *cursor, sword pos, sb2 *dbsize, sb2 *dtype,
sb2 *fsize );
/******************************************/
/* Non-blocking operations */
/******************************************/
sword onblon( ldadef *lda, struct hstdef *hst, oratext *conn,
sword connl, oratext *uid, sword uidl,
oratext *psw, sword pswl, sword audit );
/* logon in non-blocking fashion */
sword ocignfd( ldadef *lda, void *nfdp ); /* get native fd */
ub2 ocigft_getFcnType( ub2 oertyp ); /* get sql function code */
#endif

View File

@ -0,0 +1,113 @@
/*
*
*/
/* Copyright (c) 1991, 2005, Oracle. All rights reserved. */
/* Copyright (c) 1991, 2005, Oracle. All rights reserved. */
/*
NAME
ocidem.h - OCI demo header
MODIFIED (MM/DD/YY)
dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
whe 04/07/99 - bug#810071
whe 03/19/99 - lrg 32079 etc.: putting static back for oci_func_tab
nmacnaug 02/02/99 - static declarations should not be in header files
mygopala 09/22/97 - Fix for bug 550351
surman 03/14/97 - Merge 413362 to 8.0.3
surman 11/08/96 - 413362: Add SS_64BIT_SERVER macro
emendez 04/07/94 - merge changes from branch 1.6.710.1
emendez 02/02/94 - Fix for bug 157576
jnlee 01/05/93 - include oratypes.h once, make oci_func_tab static
rkooi2 10/26/92 - More portability mods
rkooi2 10/22/92 - Change text back to char to avoid casts
rkooi2 10/20/92 - Changes to make it portable
sjain 03/16/92 - Creation
*/
/*
* ocidem.h
*
* Declares additional functions and data structures
* used in the OCI C sample programs.
*/
#ifndef ORATYPES
#include <oratypes.h>
#endif /* ORATYPES */
#ifndef OCIDFN
#include <ocidfn.h>
#endif /* OCIDFN */
#ifndef OCIDEM
#define OCIDEM
/* internal/external datatype codes */
#define VARCHAR2_TYPE 1
#define NUMBER_TYPE 2
#define INT_TYPE 3
#define FLOAT_TYPE 4
#define STRING_TYPE 5
#define ROWID_TYPE 11
#define DATE_TYPE 12
/* ORACLE error codes used in demonstration programs */
#define VAR_NOT_IN_LIST 1007
#ifndef NO_DATA_FOUND
# define NO_DATA_FOUND 1403
#endif
#define NULL_VALUE_RETURNED 1405
/* some SQL and OCI function codes */
#define FT_INSERT 3
#define FT_SELECT 4
#define FT_UPDATE 5
#define FT_DELETE 9
#define FC_OOPEN 14
/*
* OCI function code labels,
* corresponding to the fc numbers
* in the cursor data area.
*/
static const text *oci_func_tab[] = {(text *) "not used",
/* 1-2 */ (text *) "not used", (text *) "OSQL",
/* 3-4 */ (text *) "not used", (text *) "OEXEC, OEXN",
/* 5-6 */ (text *) "not used", (text *) "OBIND",
/* 7-8 */ (text *) "not used", (text *) "ODEFIN",
/* 9-10 */ (text *) "not used", (text *) "ODSRBN",
/* 11-12 */ (text *) "not used", (text *) "OFETCH, OFEN",
/* 13-14 */ (text *) "not used", (text *) "OOPEN",
/* 15-16 */ (text *) "not used", (text *) "OCLOSE",
/* 17-18 */ (text *) "not used", (text *) "not used",
/* 19-20 */ (text *) "not used", (text *) "not used",
/* 21-22 */ (text *) "not used", (text *) "ODSC",
/* 23-24 */ (text *) "not used", (text *) "ONAME",
/* 25-26 */ (text *) "not used", (text *) "OSQL3",
/* 27-28 */ (text *) "not used", (text *) "OBNDRV",
/* 29-30 */ (text *) "not used", (text *) "OBNDRN",
/* 31-32 */ (text *) "not used", (text *) "not used",
/* 33-34 */ (text *) "not used", (text *) "OOPT",
/* 35-36 */ (text *) "not used", (text *) "not used",
/* 37-38 */ (text *) "not used", (text *) "not used",
/* 39-40 */ (text *) "not used", (text *) "not used",
/* 41-42 */ (text *) "not used", (text *) "not used",
/* 43-44 */ (text *) "not used", (text *) "not used",
/* 45-46 */ (text *) "not used", (text *) "not used",
/* 47-48 */ (text *) "not used", (text *) "not used",
/* 49-50 */ (text *) "not used", (text *) "not used",
/* 51-52 */ (text *) "not used", (text *) "OCAN",
/* 53-54 */ (text *) "not used", (text *) "OPARSE",
/* 55-56 */ (text *) "not used", (text *) "OEXFET",
/* 57-58 */ (text *) "not used", (text *) "OFLNG",
/* 59-60 */ (text *) "not used", (text *) "ODESCR",
/* 61-62 */ (text *) "not used", (text *) "OBNDRA",
/* 63-64 */ (text *) "OBINDPS", (text *) "ODEFINPS",
/* 65-66 */ (text *) "OGETPI", (text *) "OSETPI"
};
#endif /* OCIDEM */

View File

@ -0,0 +1,249 @@
/* Copyright (c) 1991, 2005, Oracle. All rights reserved. */
/* Copyright (c) 1991, 2005, Oracle. All rights reserved. */
/*
NAME
ocidfn.h - OCI Definations
NOTES
Shipped to users.
MODIFIED (MM/DD/YY)
mbastawa 09/16/05 - dbhygiene
dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
srseshad 11/25/02 - change binary float/double codes
srseshad 11/14/02 - Add SQLT_IBFLOAT, SQLT_IBDOUBLE
mxyang 09/17/02 - grabtrans 'mmorsi_obj_float'
srseshad 09/06/02 - Add binary float/double
aahluwal 06/04/02 - bug 2360115
kmuthukk 05/02/00 - add SQLT_PNTY
amangal 07/30/99 - Merge into 8.1.6 : Bug 879031
tnbui 07/28/99 - Remove SQLT_TIMESTAMP_ITZ
tnbui 07/21/99 - SQLT_TIMESTAMP_LTZ
tnbui 06/16/99 - TIMESTAMP WITH IMPLICIT TIME ZONE
whe 04/07/99 - bug#810075
whe 03/19/99 - lrg 32079 etc.: move HDA def from ocidem.h to ocidfn.
skmishra 05/10/98 -
vyanaman 04/16/98 - update sql92 datatypes
khnguyen 01/16/98 -
khnguyen 12/23/97 - SQLT* for datetimes and intervals
tanguyen 08/19/97 -
dchatter 03/18/97 - porting exception 390897
dchatter 05/02/97 - merge porting exception
dalpern 12/04/96 - SQLCS_LIT_NULL added
cxcheng 11/14/96 - add SQLT_BFILE/SQLT_CFILE to fix compile prob
cxcheng 11/12/96 - add SQLT_NCO for named collection
lchidamb 10/17/96 - add SQLT_VST and SQLT_ODT
sgollapu 10/14/96 - Mutual exclusion of ocidfn and sqldef
sgollapu 10/07/96 - OCI Simplification
aroy 09/09/96 - add SQLCS* definitions
slari 08/07/96 - add SQLT_RDD, rowid descriptor
slari 06/12/96 - remove SQLT_TTBL
dchatter 04/21/96 - prepare for merge into main
slari 08/24/95 - b299432, define CDA_SIZE
zwalcott 02/28/96 - add SQLT_BFILEE and SQLT_CFILEE.
lchidamb 02/22/96 - make dtys consistent with dtydef.h
lchidamb 02/16/96 - add SQLT_BFILEE and SQLT_CFILEE
lchidamb 01/30/96 - rename new datatypes for v8
lchidamb 09/06/95 - add new datatypes
slari 05/11/95 - add OCI_EV_DEF and OCI_EV_TSF
dchatter 04/06/95 - add ifdef flags around OCI_flags
dchatter 03/08/95 - piece values
dchatter 03/06/95 - merge changes from branch 1.2.720.3
jfbrown 02/17/95 - merge changes from branch 1.2.720.2
dchatter 02/08/95 - olog call modes
jfbrown 02/03/95 - remove non-printable characters
lchidamb 12/06/94 - merge changes from branch 1.2.720.1
lchidamb 10/04/94 - added field chk to cda_head, cda_def
dchatter 07/05/94 - SQLT_CUR added
rkooi2 11/27/92 - Changing e* datatypes to s*
rkooi2 10/26/92 - More portability mods
rkooi2 10/22/92 - Added #ifndef ORATYPES ...
rkooi2 10/18/92 - Changes to make it portable.
sjain 03/16/92 - Creation
*/
/*
* ocidfn.h
*
* Common header file for OCI C sample programs.
* This header declares the cursor and logon data area structure.
* The types used are defined in <oratypes.h>.
*
*/
#ifndef OCIDFN
#define OCIDFN
#include <oratypes.h>
/* The cda_head struct is strictly PRIVATE. It is used
internally only. Do not use this struct in OCI programs. */
struct cda_head {
sb2 v2_rc;
ub2 ft;
ub4 rpc;
ub2 peo;
ub1 fc;
ub1 rcs1;
ub2 rc;
ub1 wrn;
ub1 rcs2;
sword rcs3;
struct {
struct {
ub4 rcs4;
ub2 rcs5;
ub1 rcs6;
} rd;
ub4 rcs7;
ub2 rcs8;
} rid;
sword ose;
ub1 chk;
void *rcsp;
};
/*
** Size of HDA area:
** 512 for 64 bit arquitectures
** 256 for 32 bit arquitectures
*/
#if defined(SS_64BIT_SERVER) || defined(__64BIT__)
# define HDA_SIZE 512
#else
# define HDA_SIZE 256
#endif
#if defined(SS_64BIT_SERVER) || defined(__64BIT__)
#define CDA_SIZE 88
#else
# define CDA_SIZE 64
#endif
/* the real CDA, padded to CDA_SIZE bytes in size */
struct cda_def {
sb2 v2_rc; /* V2 return code */
ub2 ft; /* SQL function type */
ub4 rpc; /* rows processed count */
ub2 peo; /* parse error offset */
ub1 fc; /* OCI function code */
ub1 rcs1; /* filler area */
ub2 rc; /* V7 return code */
ub1 wrn; /* warning flags */
ub1 rcs2; /* reserved */
sword rcs3; /* reserved */
struct { /* rowid structure */
struct {
ub4 rcs4;
ub2 rcs5;
ub1 rcs6;
} rd;
ub4 rcs7;
ub2 rcs8;
} rid;
sword ose; /* OSD dependent error */
ub1 chk;
void *rcsp; /* pointer to reserved area */
ub1 rcs9[CDA_SIZE - sizeof (struct cda_head)]; /* filler */
};
typedef struct cda_def Cda_Def;
/* the logon data area (LDA)
is the same shape as the CDA */
typedef struct cda_def Lda_Def;
/* OCI Environment Modes for opinit call */
#define OCI_EV_DEF 0 /* default single-threaded environment */
#define OCI_EV_TSF 1 /* thread-safe environment */
/* OCI Logon Modes for olog call */
#define OCI_LM_DEF 0 /* default login */
#define OCI_LM_NBL 1 /* non-blocking logon */
/*
* since sqllib uses both ocidef and ocidfn the following defines
* need to be guarded
*/
#ifndef OCI_FLAGS
#define OCI_FLAGS
/* OCI_*_PIECE defines the piece types that are returned or set
*/
#define OCI_ONE_PIECE 0 /* there or this is the only piece */
#define OCI_FIRST_PIECE 1 /* the first of many pieces */
#define OCI_NEXT_PIECE 2 /* the next of many pieces */
#define OCI_LAST_PIECE 3 /* the last piece of this column */
#endif
#ifndef SQLDEF
/* input data types */
#define SQLT_CHR 1 /* (ORANET TYPE) character string */
#define SQLT_NUM 2 /* (ORANET TYPE) oracle numeric */
#define SQLT_INT 3 /* (ORANET TYPE) integer */
#define SQLT_FLT 4 /* (ORANET TYPE) Floating point number */
#define SQLT_STR 5 /* zero terminated string */
#define SQLT_VNU 6 /* NUM with preceding length byte */
#define SQLT_PDN 7 /* (ORANET TYPE) Packed Decimal Numeric */
#define SQLT_LNG 8 /* long */
#define SQLT_VCS 9 /* Variable character string */
#define SQLT_NON 10 /* Null/empty PCC Descriptor entry */
#define SQLT_RID 11 /* rowid */
#define SQLT_DAT 12 /* date in oracle format */
#define SQLT_VBI 15 /* binary in VCS format */
#define SQLT_BFLOAT 21 /* Native Binary float*/
#define SQLT_BDOUBLE 22 /* NAtive binary double */
#define SQLT_BIN 23 /* binary data(DTYBIN) */
#define SQLT_LBI 24 /* long binary */
#define SQLT_UIN 68 /* unsigned integer */
#define SQLT_SLS 91 /* Display sign leading separate */
#define SQLT_LVC 94 /* Longer longs (char) */
#define SQLT_LVB 95 /* Longer long binary */
#define SQLT_AFC 96 /* Ansi fixed char */
#define SQLT_AVC 97 /* Ansi Var char */
#define SQLT_IBFLOAT 100 /* binary float canonical */
#define SQLT_IBDOUBLE 101 /* binary double canonical */
#define SQLT_CUR 102 /* cursor type */
#define SQLT_RDD 104 /* rowid descriptor */
#define SQLT_LAB 105 /* label type */
#define SQLT_OSL 106 /* oslabel type */
#define SQLT_NTY 108 /* named object type */
#define SQLT_REF 110 /* ref type */
#define SQLT_CLOB 112 /* character lob */
#define SQLT_BLOB 113 /* binary lob */
#define SQLT_BFILEE 114 /* binary file lob */
#define SQLT_CFILEE 115 /* character file lob */
#define SQLT_RSET 116 /* result set type */
#define SQLT_NCO 122 /* named collection type (varray or nested table) */
#define SQLT_VST 155 /* OCIString type */
#define SQLT_ODT 156 /* OCIDate type */
/* datetimes and intervals */
#define SQLT_DATE 184 /* ANSI Date */
#define SQLT_TIME 185 /* TIME */
#define SQLT_TIME_TZ 186 /* TIME WITH TIME ZONE */
#define SQLT_TIMESTAMP 187 /* TIMESTAMP */
#define SQLT_TIMESTAMP_TZ 188 /* TIMESTAMP WITH TIME ZONE */
#define SQLT_INTERVAL_YM 189 /* INTERVAL YEAR TO MONTH */
#define SQLT_INTERVAL_DS 190 /* INTERVAL DAY TO SECOND */
#define SQLT_TIMESTAMP_LTZ 232 /* TIMESTAMP WITH LOCAL TZ */
#define SQLT_PNTY 241 /* pl/sql representation of named types */
/* cxcheng: this has been added for backward compatibility -
it needs to be here because ocidfn.h can get included ahead of sqldef.h */
#define SQLT_FILE SQLT_BFILEE /* binary file lob */
#define SQLT_CFILE SQLT_CFILEE
#define SQLT_BFILE SQLT_BFILEE
/* CHAR/NCHAR/VARCHAR2/NVARCHAR2/CLOB/NCLOB char set "form" information */
#define SQLCS_IMPLICIT 1 /* for CHAR, VARCHAR2, CLOB w/o a specified set */
#define SQLCS_NCHAR 2 /* for NCHAR, NCHAR VARYING, NCLOB */
#define SQLCS_EXPLICIT 3 /* for CHAR, etc, with "CHARACTER SET ..." syntax */
#define SQLCS_FLEXIBLE 4 /* for PL/SQL "flexible" parameters */
#define SQLCS_LIT_NULL 5 /* for typecheck of NULL and empty_clob() lits */
#endif /* SQLDEF */
#endif /* OCIDFN */

View File

@ -0,0 +1,282 @@
/*
*
*/
/* 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 */

View File

@ -0,0 +1,165 @@
/* Copyright (c) 1991, 2005, Oracle. All rights reserved. */
/*
NAME
ocikpr.h - header of K & R compilers
MODIFIED (MM/DD/YY)
mbastawa 09/16/05 - dbhygiene
porangas 12/04/00 - Forward merge bug#974710 to 9i
sgollapu 05/19/98 - Change text to OraText
dchatter 04/21/96 -
dchatter 11/10/95 - add ognfd() - get native fd
lchidamb 04/06/95 - drop maxdsz from obindps/odefinps
slari 04/07/95 - add opinit
dchatter 03/08/95 - osetpi and ogetpi
lchidamb 12/09/94 - add obindps() and odefinps()
dchatter 03/06/95 - merge changes from branch 1.1.720.2
dchatter 11/14/94 - merge changes from branch 1.1.720.1
dchatter 02/08/95 - olog call; drop onblon
dchatter 10/31/94 - new functions for non-blocking oci
rkooi2 11/27/92 - Changing datatypes (in comments) and return types
rkooi2 10/26/92 - More portability mods
rkooi2 10/18/92 - Changed to agree with oci.c
sjain 03/16/92 - Creation
*/
/*
* Declare the OCI functions.
* Prototype information is commented out.
* Use this header for non-ANSI C compilers.
* Note that you will need to include ocidfn.h in the .c files
* to get the definition for cda_def.
*/
#ifndef OCIKPR
#define OCIKPR
#include <oratypes.h>
/*
* Oci BIND (Piecewise or with Skips)
*/
sword obindps( struct cda_def *cursor, ub1 opcode, OraText *sqlvar,
sb4 sqlvl, ub1 *pvctx, sb4 progvl,
sword ftype, sword scale,
sb2 *indp, ub2 *alen, ub2 *arcode,
sb4 pv_skip, sb4 ind_skip, sb4 alen_skip, sb4 rc_skip,
ub4 maxsiz, ub4 *cursiz,
OraText *fmt, sb4 fmtl, sword fmtt );
sword obreak( struct cda_def *lda );
sword ocan ( struct cda_def *cursor );
sword oclose( struct cda_def *cursor );
sword ocof ( struct cda_def *lda );
sword ocom ( struct cda_def *lda );
sword ocon ( struct cda_def *lda );
/*
* Oci DEFINe (Piecewise or with Skips)
*/
sword odefinps( struct cda_def *cursor, ub1 opcode, sword pos,ub1 *bufctx,
sb4 bufl, sword ftype, sword scale,
sb2 *indp, OraText *fmt, sb4 fmtl, sword fmtt,
ub2 *rlen, ub2 *rcode,
sb4 pv_skip, sb4 ind_skip, sb4 alen_skip, sb4 rc_skip );
sword odescr( struct cda_def *cursor, sword pos, sb4 *dbsize,
sb2 *dbtype, sb1 *cbuf, sb4 *cbufl, sb4 *dsize,
sb2 *prec, sb2 *scale, sb2 *nullok );
sword odessp( struct cda_def *cursor, OraText *objnam, size_t onlen,
ub1 *rsv1, size_t rsv1ln, ub1 *rsv2, size_t rsv2ln,
ub2 *ovrld, ub2 *pos, ub2 *level, OraText **argnam,
ub2 *arnlen, ub2 *dtype, ub1 *defsup, ub1* mode,
ub4 *dtsiz, sb2 *prec, sb2 *scale, ub1 *radix,
ub4 *spare, ub4 *arrsiz );
sword oerhms( struct cda_def *lda, sb2 rcode, OraText *buf,
sword bufsiz );
sword oermsg( sb2 rcode, OraText *buf );
sword oexec ( struct cda_def *cursor );
sword oexfet( struct cda_def *cursor, ub4 nrows,
sword cancel, sword exact );
sword oexn ( struct cda_def *cursor, sword iters, sword rowoff );
sword ofen ( struct cda_def *cursor, sword nrows );
sword ofetch( struct cda_def *cursor );
sword oflng ( struct cda_def *cursor, sword pos, ub1 *buf,
sb4 bufl, sword dtype, ub4 *retl, sb4 offset );
sword ogetpi( struct cda_def *cursor, ub1 *piecep, void **ctxpp,
ub4 *iterp, ub4 *indexp );
sword opinit( ub4 mode );
sword olog ( struct cda_def *lda, ub1 *hst,
OraText *uid, sword uidl,
OraText *psw, sword pswl,
OraText *conn, sword connl,
ub4 mode );
sword ologof( struct cda_def *lda );
sword oopen ( struct cda_def *cursor, struct cda_def *lda,
OraText *dbn, sword dbnl, sword arsize,
OraText *uid, sword uidl );
sword oopt ( struct cda_def *cursor, sword rbopt, sword waitopt );
sword oparse( struct cda_def *cursor, OraText *sqlstm, sb4 sqllen,
sword defflg, ub4 lngflg );
sword orol ( struct cda_def *lda );
sword osetpi( struct cda_def *cursor, ub1 piece, void *bufp,
ub4 *lenp );
void sqlld2 ( struct cda_def *lda, OraText *cname, sb4 *cnlen );
void sqllda ( struct cda_def *lda );
/* non-blocking functions */
sword onbset( struct cda_def *lda );
sword onbtst( struct cda_def *lda );
sword onbclr( struct cda_def *lda );
sword ognfd ( struct cda_def *lda, void *fdp );
/*
* OBSOLETE FUNCTIONS
*/
/*
* OBSOLETE BIND CALLS-- use obindps()
*/
sword obndra( struct cda_def *cursor, OraText *sqlvar, sword sqlvl,
ub1 *progv, sword progvl, sword ftype, sword scale,
sb2 *indp, ub2 *alen, ub2 *arcode, ub4 maxsiz,
ub4 *cursiz, OraText *fmt, sword fmtl, sword fmtt );
sword obndrn( struct cda_def *cursor, sword sqlvn, ub1 *progv,
sword progvl, sword ftype, sword scale, sb2 *indp,
OraText *fmt, sword fmtl, sword fmtt );
sword obndrv( struct cda_def *cursor, OraText *sqlvar, sword sqlvl,
ub1 *progv, sword progvl, sword ftype, sword scale,
sb2 *indp, OraText *fmt, sword fmtl, sword fmtt );
/*
* OBSOLETE DEFINE CALLS-- use odefinps()
*/
sword odefin( struct cda_def *cursor, sword pos, ub1 *buf,
sword bufl, sword ftype, sword scale, sb2 *indp,
OraText *fmt, sword fmtl, sword fmtt, ub2 *rlen,
ub2 *rcode );
/* older calls ; preferred equivalent calls above */
sword odsc ( struct cda_def *cursor, sword pos, sb2 *dbsize,
sb2 *fsize, sb2 *rcode, sb2 *dtype, sb1 *buf,
sb2 *bufl, sb2 *dsize );
sword oname ( struct cda_def *cursor, sword pos, sb1 *tbuf,
sb2 *tbufl, sb1 *buf, sb2 *bufl );
sword olon ( struct cda_def *lda, OraText *uid, sword uidl,
OraText *pswd, sword pswdl, sword audit );
sword orlon ( struct cda_def *lda, ub1 *hda, OraText *uid,
sword uidl, OraText *pswd, sword pswdl, sword audit );
sword osql3 ( struct cda_def *cda, OraText *sqlstm, sword sqllen );
#endif /* OCIKPR */

View File

@ -0,0 +1,188 @@
/* Copyright (c) 2003, 2009, Oracle and/or its affiliates.
All rights reserved. */
/*
NAME
ocixml.h - OCIXMLType functions
DESCRIPTION
This file contains all OCIXMLType functions defined in ocixml.c
****************************IMPORTANT***********************************
*** If you change the signatures of any fucntions in this file, make sure
*** to make same changes to Windows OSD file ociclnt.c. Otherwise, users
*** of OCI instant client like ODP.NET will have build issues or crashes
****************************IMPORTANT***********************************
PUBLIC FUNCTION(S)
OCIXMLTypeNew()
OCIXMLTypeCreateFromSrc()
OCIXMLTypeCreateFromSrcWithSchema()
OCIXMLTypeTransform()
OCIXMLTypeExtract()
OCIXMLTypeIsSchemaBased()
OCIXMLTypeValidate()
OCIXMLTypeExists()
OCIXMLTypeGetDOM()
OCIXMLTypeGetFromDOM()
OCIDOMFree()
OCIXMLSEMutexAcq()
OCIXMLSEMutexRel()
OCIXMLUpdateNodeValues()
INTERNAL FUNCTION(S)
EXAMPLES
NOTES
MODIFIED (MM/DD/YY)
spetride 03/02/09 - add isdoc to OCIXMLTypeCreateFromSrc*
bsthanik 01/17/07 - 5753599: wrappers for service mutex acq/rel
bkhaladk 05/10/06 - add setpicklepref
nitgupta 01/30/06 - add signatures for OCIBinXMl*
dmukhin 06/16/05 - ANSI prototypes; miscellaneous cleanup
dmukhin 06/14/05 - ANSI prototypes; miscellaneous cleanup
ataracha 12/04/03 - convert public oci api to ansi
ataracha 01/21/03 - ataracha_uni_capi_cleanup
ataracha 01/08/03 - Creation
*/
#ifndef OCI_ORACLE
# include <oci.h>
#endif
#ifndef XML0_ORACLE
# include <xml0.h>
#endif
#ifndef OCIXML_ORACLE
# define OCIXML_ORACLE
/*---------------------------------------------------------------------------
PUBLIC TYPES AND CONSTANTS
---------------------------------------------------------------------------*/
/* parameters for OCIXMLUpdateNodeValues */
struct OCIXMLunv
{
void * xpth_OCIXMLunv; /* xpath expression */
void * val_OCIXMLunv; /* value - string literal or xmltype */
ub4 xpthL_OCIXMLunv; /* length of xpath expression string */
ub4 valL_OCIXMLunv; /* length of value string */
ub1 tp_OCIXMLunv; /* type of value - xmltype of string */
#define OCIXMLUNV_XTP 0x00 /* param is xmltype */
#define OCIXMLUNV_STP 0x01 /* param is string literal */
#define OCIXMLUNV_STM 0x02 /* param is a stream (kghsstream *) */
#define OCIXMLUNV_CLOB 0x03 /* param is a CLOB locator (kolblc *) */
#define OCIXMLUNV_BLOB 0x04 /* param is a BLOB locator (kolblc *) */
};
typedef struct OCIXMLunv OCIXMLunv;
/*---------------------------------------------------------------------------
PRIVATE TYPES AND CONSTANTS
---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
EXPORT FUNCTIONS
---------------------------------------------------------------------------*/
sword OCIXMLTypeNew(OCISvcCtx *svchp, OCIError *errhp, OCIDuration dur,
OraText *elname, ub4 elname_Len,
OraText *schemaURL, ub4 schemaURL_Len,
OCIXMLType **retInstance);
sword OCIXMLTypeCreateFromSrc(OCISvcCtx *svchp, OCIError *errhp,
OCIDuration dur, ub1 src_type, void *src_ptr,
sb4 ind, OCIXMLType **retInstance, ub4 csid);
sword OCIXMLTypeCreateFromSrcInt(OCISvcCtx *svchp, OCIError *errhp,
OCIDuration dur, ub1 src_type, void *src_ptr,
sb4 ind, OCIXMLType **retInstance, ub4 csid,
boolean isdoc);
sword OCIXMLTypeCreateFromSrcWithSchema(OCISvcCtx *svchp, OCIError *errhp,
OCIDuration dur, ub1 src_type, void *src_ptr,
sb4 ind, OraText *schemaURL, ub4 schemaURL_Len,
boolean wellformed, boolean valid,
OCIXMLType **retInstance, ub4 csid);
sword OCIXMLTypeCreateFromSrcWithSchemaInt(OCISvcCtx *svchp, OCIError *errhp,
OCIDuration dur, ub1 src_type, void *src_ptr,
sb4 ind, OraText *schemaURL, ub4 schemaURL_Len,
boolean wellformed, boolean valid,
OCIXMLType **retInstance, ub4 csid,
boolean isdoc);
sword OCIXMLTypeExtract(OCIError *errhp,
OCIXMLType *doc, OCIDuration dur,
OraText *xpathexpr, ub4 xpathexpr_Len,
OraText *nsmap, ub4 nsmap_Len,
OCIXMLType **retDoc);
sword OCIXMLTypeTransform(OCIError *errhp, OCIDuration dur,
OCIXMLType *doc, OCIXMLType *xsldoc,
OCIXMLType **retDoc);
/* Note: xpathexpr is case sensitive */
sword OCIXMLTypeExists(OCIError *errhp, OCIXMLType *doc,
OraText *xpathexpr, ub4 xpathexpr_Len,
OraText *nsmap, ub4 nsmap_Len,
boolean *retval);
sword OCIXMLTypeIsSchemaBased(OCIError *errhp,
OCIXMLType *doc, boolean *retval);
sword OCIXMLTypeIsFragment(OCIError *errhp, OCIXMLType *doc, boolean *retval);
sword OCIXMLTypeGetSchema(OCIError *errhp, OCIXMLType *doc,
OCIXMLType **schemadoc,
OraText **schemaURL, ub4 *schemaURL_Len,
OraText **rootelem, ub4 *rootelem_Len);
sword OCIXMLTypeValidate(OCIError *errhp, OCIXMLType *doc,
OraText *schemaURL, ub4 schemaURL_Len, boolean *retval);
sword OCIXMLTypeGetDOM(OCIError *errhp, OCIXMLType *doc, OCIDuration dur,
OCIDOMDocument **retDom);
sword OCIXMLTypeGetFromDOM(OCIError *errhp, OCIDOMDocument *domdoc,
OCIXMLType **retXMLType);
sword OCIXMLTypeGetNS(OCIError *errhp, OCIXMLType *domdoc,
OraText **ns, ub4 *ns_len);
sword OCIDOMFree(OCIError *errhp, OCIDOMDocument *domdoc);
sword OCIBinXmlCreateReposCtxFromConn(OCIEnv *env, OCISvcCtx *svcctx,
OCIError *err, OCIBinXmlReposCtx **ctx);
sword OCIBinXmlCreateReposCtxFromCPool(OCIEnv *env, OCICPool *cpool,
OCIError *err, OCIBinXmlReposCtx **ctx);
sword OCIBinXmlSetReposCtxForConn(OCISvcCtx *dataconn,
OCIBinXmlReposCtx *reposctx);
#define OCIXML_FORMATTYPE_TEXT 0
#define OCIXML_FORMATTYPE_BINXML 1
sword OCIBinXmlSetFormatPref(xmldocnode *doc, ub4 format);
/* OCI Wrapper to acquire mutex associated with service handle and
* env handle
*/
sword OCIXMLSEMutexAcq(OCISvcCtx *svchp, OCIError *errhp);
/* release wrapper corresponding to OCIXMLSEMutexAcq */
sword OCIXMLSEMutexRel(OCISvcCtx *svchp, OCIError *errhp);
/* acquires OCI svc and env mutexes, updates values of nodes pointed to by
* given XPATH locations, and releases mutexes.
*/
sword OCIXMLUpdateNodeValues(OCISvcCtx *svchp, OCIError *errhp, OCIXMLType
**docp, struct OCIXMLunv *values, ub4 numvalues, oratext *nsmap,
ub4 nsmapl);
/*---------------------------------------------------------------------------
INTERNAL FUNCTIONS
---------------------------------------------------------------------------*/
#endif /* OCIXML_ORACLE */

View File

@ -0,0 +1,141 @@
/* Copyright (c) 2003, 2009, Oracle and/or its affiliates.
All rights reserved. */
/*
NAME
ocixmldb.h - XDB public functions
DESCRIPTION
This file contains XDB specific public functions required for DOM C-API.
RELATED DOCUMENTS
EXPORT FUNCTION(S)
struct xmlctx *OCIXmlDbInitXmlCtx(OCIEnv *, OCISvcCtx *, OCIError *,
ocixmldbparam *params, int num_params);
void OCIXmlDbFreeXmlCtx(struct xmlctx *xctx);
------------------------------------------------------------------------
EXAMPLES
NOTES
MODIFIED (MM/DD/YY)
ataracha 12/11/03 - remove redundant definitions
ataracha 05/28/03 - change names
ataracha 02/18/03 - add oratypes, remove XMLERR_*
imacky 02/01/03 - remove xml.h; xdbs fix
ataracha 01/24/03 - use "struct xmlctx" instead of xmlctx
imacky 01/28/03 - fix XMLERR defs
ataracha 01/21/03 - ataracha_uni_capi_cleanup
ataracha 01/09/03 - Creation
*/
#ifndef ORATYPES
#include <oratypes.h>
#endif
#ifndef OCI_ORACLE
# include <oci.h>
#endif
#ifndef OCIXMLDB_ORACLE
# define OCIXMLDB_ORACLE
/*---------------------------------------------------------------------------
PUBLIC TYPES AND CONSTANTS
---------------------------------------------------------------------------*/
#ifndef XMLCTX_DEFINED
# define XMLCTX_DEFINED
/* DATATYPE xmlctx - XML top-level context
*/
struct xmlctx; typedef struct xmlctx xmlctx;
#endif
typedef enum
{
XCTXINIT_OCIDUR = 1,
XCTXINIT_ERRHDL = 2
} ocixmldbpname;
typedef struct ocixmldbparam
{
ocixmldbpname name_ocixmldbparam;
void *value_ocixmldbparam;
} ocixmldbparam;
#define NUM_OCIXMLDBPARAMS 2
/*---------------------------------------------------------------------------
PRIVATE TYPES AND CONSTANTS
---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
EXPORT FUNCTIONS
---------------------------------------------------------------------------*/
/*****************************************************************************
DESCRIPTION
-----------------------------OCIXmlDbInitXmlCtx---------------------------------
Name
OCIXmlDbInitXmlCtx
Purpose
To get a xmlctx structure initialized with error-handler and XDB callbacks.
Syntax
struct xmlctx *OCIXmlDbInitXmlCtx (OCIEnv *envhp,
OCISvcCtx *svchp,
OCIError *err,
params_ocixmldb *params,
int num_params);
Parameters
envhp (IN) - The OCI environment handle
svchp (IN) - The OCI service handle
errhp (IN) - The OCI error handle
params (IN)- This contains the following optional parameters :
(a) OCIDuration dur (IN - The OCI Duration (Default: OCI_DURATION_SESSION)
(b) void (*err_handler) (sword, (const oratext *) (IN) -
Pointer to the error handling function (Default: null)
num_params (IN) - Number of parameters to be read from parameter params.
If the value of num_params exceeds the size of array
"params", unexpected behavior will result.
Returns
A pointer to xmlctx structure, with xdb context, error handler and callbacks
populated with appropriate values. This is later used for all API calls. NULL
if no database connection available.
-----------------------------OCIXmlDbFreeXmlCtx----------------------------
Name
OCIXmlDbFreeXmlCtx
Pupose
To free any allocations done during OCIXmlDbInitXmlCtx.
Syntax
void OCIXmlDbFreeXmlCtx (struct xmlctx *xctx)
Parameters
xctx (IN) - The xmlctx to terminate
Returns
-
******************************************************************************/
struct xmlctx *OCIXmlDbInitXmlCtx(OCIEnv *, OCISvcCtx *, OCIError *,
ocixmldbparam *, int);
void OCIXmlDbFreeXmlCtx(struct xmlctx *xctx);
sword OCIXmlDbStreamFromXMLType(OCIError *errhp, void **stream,
OCIXMLType *doc, ub4 mode);
sword OCIXmlDbStreamRead(OCIError *errhp, void *stream,
void *bufp, sb8 *len, ub4 mode);
sword OCIXmlDbStreamClose(OCIError *errhp, void *stream);
/*---------------------------------------------------------------------------
INTERNAL FUNCTIONS
---------------------------------------------------------------------------*/
#endif /* OCIXMLDB_ORACLE */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,798 @@
/*
*
*/
/* Copyright (c) 1998, 2006, Oracle. All rights reserved. */
/*
NAME
odci.h - Oracle Data Cartridge Interface definitions
DESCRIPTION
This file contains Oracle Data Cartridge Interface definitions. These
include the ODCI Types and Constants.
RELATED DOCUMENTS
INSPECTION STATUS
Inspection date:
Inspection status:
Estimated increasing cost defects per page:
Rule sets:
ACCEPTANCE REVIEW STATUS
Review date:
Review status:
Reviewers:
PUBLIC FUNCTION(S)
None.
PRIVATE FUNCTION(S)
None.
EXAMPLES
NOTES
- The constants defined here are replica of the constants defined
in ODCIConst Package defined as part of catodci.sql. If you change
these do make the similar change in catodci.sql.
MODIFIED (MM/DD/YY)
spsundar 09/13/07 -
yhu 06/02/06 - add callproperty for statistics
yhu 05/22/06 - add ODCI_NODATA to speed rebuild empty index or ind.
part.
srirkris 05/09/06 - change ODCIOrderByInfo_ind
srirkris 02/06/06 - add definitions for CDI query.
spsundar 02/17/06 - add fields/types for system managed domain idx
yhu 02/08/06 - add RenameCol Na d RenameTopADT
yhu 03/11/05 - add flags for rename column and rename table
spsundar 11/28/05 - add fields/types for composite domain idx
yhu 12/06/05 - mapping table for local text indexes
dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
ayoaz 04/21/03 - add CursorNum to ODCIEnv
abrumm 12/30/02 - Bug #2223225: add define for
ODCI_ARG_DESC_LIST_MAXSIZE
ayoaz 10/14/02 - Add Cardinality to ODCIArgDesc
ayoaz 09/11/02 - add ODCIQueryInfo to ODCIIndexCtx
yhu 09/19/02 - add ODCI_DEBUGGING_ON for ODCIEnv.EnvFlags
hsbedi 10/10/02 - add object number into ODCIExtTableInfo
ayoaz 08/30/02 - add ODCITable2 types
tchorma 07/29/02 - Add ODCIFuncCallInfo type for WITH COLUMN CONTEXT
hsbedi 06/29/02 - External table populate
yhu 07/20/01 - add parallel degree in ODCIIndexInfo.
abrumm 02/20/01 - ODCIExtTableInfo: add AccessParmBlob attribute
abrumm 01/18/01 - ODCIExtTableInfo: add default directory
spsundar 08/24/00 - Update attrbiute positions
abrumm 08/04/00 - external tables changes: ODCIExtTableInfo, constants
tchorma 09/11/00 - Add return code ODCI_FATAL
tchorma 08/08/00 - Add Update Block References Option for Alter Index
ayoaz 08/01/00 - Add ODCI_AGGREGATE_REUSE_CTX
spsundar 06/19/00 - add ODCIEnv type
abrumm 06/27/00 - add defines for ODCIExtTable flags
abrumm 06/04/00 - external tables: ODCIExtTableInfo change; add ODCIEnv
ddas 04/28/00 - extensible optimizer enhancements for 8.2
yhu 06/05/00 - add a bit in IndexInfoFlags for trans. tblspc
yhu 04/10/00 - add ODCIPartInfo & remove ODCIIndexPartList
abrumm 03/29/00 - external table support
spsundar 02/14/00 - update odci definitions for 8.2
nagarwal 03/07/99 - bug# 838308 - set estimate_stats=1
rmurthy 11/09/98 - add blocking flag
ddas 10/31/98 - add ODCI_QUERY_SORT_ASC and ODCI_QUERY_SORT_DESC
ddas 05/26/98 - fix ODCIPredInfo flag bits
rmurthy 06/03/98 - add macro for RegularCall
spsundar 05/08/98 - add constants related to ODCIIndexAlter options
rmurthy 04/30/98 - remove include s.h
rmurthy 04/20/98 - name fixes
rmurthy 04/13/98 - add C mappings for odci types
alsrivas 04/10/98 - adding defines for ODCI_INDEX1
jsriniva 04/04/98 - Creation
*/
#ifndef OCI_ORACLE
# include <oci.h>
#endif
#ifndef ODCI_ORACLE
# define ODCI_ORACLE
/*---------------------------------------------------------------------------*/
/* SHORT NAMES SUPPORT SECTION */
/*---------------------------------------------------------------------------*/
#ifdef SLSHORTNAME
/* The following are short names that are only supported on IBM mainframes
* with the SLSHORTNAME defined.
* With this all subsequent long names will actually be substituted with
* the short names here
*/
#define ODCIColInfo_ref odcicir
#define ODCIColInfoList odcicil
#define ODCIColInfoList2 odcicil2
#define ODCIIndexInfo_ref odciiir
#define ODCIPredInfo_ref odcipir
#define ODCIRidList odcirl
#define ODCIIndexCtx_ref odciicr
#define ODCIObject_ref odcior
#define ODCIObjectList odciol
#define ODCIQueryInfo_ref odciqir
#define ODCIFuncInfo_ref odcifir
#define ODCICost_ref odcicr
#define ODCIArgDesc_ref odciadr
#define ODCIArgDescList odciadl
#define ODCIStatsOptions_ref odcisor
#define ODCIColInfo odcici
#define ODCIColInfo_ind odcicii
#define ODCIIndexInfo odciii
#define ODCIIndexInfo_ind odciiii
#define ODCIPredInfo odcipi
#define ODCIPredInfo_ind odcipii
#define ODCIIndexCtx odciic
#define ODCIIndexCtx_ind odciici
#define ODCIObject odcio
#define ODCIObject_ind odcioi
#define ODCIQueryInfo odciqi
#define ODCIQueryInfo_ind odciqii
#define ODCIFuncInfo odcifi
#define ODCIFuncInfo_infd odcifii
#define ODCICost odcic
#define ODCICost_ind odcici
#define ODCIArgDesc odciad
#define ODCIArgDesc_ind odciadi
#define ODCIStatsOptions odciso
#define ODCIStatsOptions_ind odcisoi
#define ODCIPartInfo odcipti
#define ODCIPartInfo_ind odciptii
#define ODCIPartInfo_ref odciptir
#define ODCIExtTableInfo odcixt
#define ODCIExtTableInfo_ind odcixti
#define ODCIExtTableInfo_ref odcixtr
#define ODCIExtTableQCInfo odcixq
#define ODCIExtTableQCInfo_ind odcixqi
#define ODCIExtTableQCInfo_ref odcixqr
#define ODCIFuncCallInfo odcifc
#define ODCIFuncCall_ind odcifci
#define ODCIFuncCall_ref odcifcr
#define ODCIColValList odcicvl
#define ODCIColArrayList odcical
#define ODCIFilterInfoList odciflil
#define ODCIOrderByInfoList odciobil
#define ODCIFilterInfo_ref odciflir
#define ODCIOrderByInfo_ref odciobir
#define ODCICompQueryInfo_ref odcicqir
#define ODCIFilterInfo odcifli
#define ODCIOrderByInfo odciobi
#define ODCICompQueryInfo odcicqi
#define ODCIFilterInfo_ind odciflii
#define ODCIOrderByInfo_ind odciobii
#define ODCICompQueryInfo_ind odcicqii
#endif /* SLSHORTNAME */
/*---------------------------------------------------------------------------
PUBLIC TYPES AND CONSTANTS
---------------------------------------------------------------------------*/
/* Constants for Return Status */
#define ODCI_SUCCESS 0
#define ODCI_ERROR 1
#define ODCI_WARNING 2
#define ODCI_ERROR_CONTINUE 3
#define ODCI_FATAL 4
/* Constants for ODCIPredInfo.Flags */
#define ODCI_PRED_EXACT_MATCH 0x0001
#define ODCI_PRED_PREFIX_MATCH 0x0002
#define ODCI_PRED_INCLUDE_START 0x0004
#define ODCI_PRED_INCLUDE_STOP 0x0008
#define ODCI_PRED_OBJECT_FUNC 0x0010
#define ODCI_PRED_OBJECT_PKG 0x0020
#define ODCI_PRED_OBJECT_TYPE 0x0040
#define ODCI_PRED_MULTI_TABLE 0x0080
#define ODCI_PRED_NOT_EQUAL 0x0100
/* Constants for QueryInfo.Flags */
#define ODCI_QUERY_FIRST_ROWS 0x01
#define ODCI_QUERY_ALL_ROWS 0x02
#define ODCI_QUERY_SORT_ASC 0x04
#define ODCI_QUERY_SORT_DESC 0x08
#define ODCI_QUERY_BLOCKING 0x10
/* Constants for ScnFlg(Func /w Index Context) */
#define ODCI_CLEANUP_CALL 1
#define ODCI_REGULAR_CALL 2
/* Constants for ODCIFuncInfo.Flags */
#define ODCI_OBJECT_FUNC 0x01
#define ODCI_OBJECT_PKG 0x02
#define ODCI_OBJECT_TYPE 0x04
/* Constants for ODCIArgDesc.ArgType */
#define ODCI_ARG_OTHER 1
#define ODCI_ARG_COL 2 /* column */
#define ODCI_ARG_LIT 3 /* literal */
#define ODCI_ARG_ATTR 4 /* object attribute */
#define ODCI_ARG_NULL 5
#define ODCI_ARG_CURSOR 6
/* Maximum size of ODCIArgDescList array */
#define ODCI_ARG_DESC_LIST_MAXSIZE 32767
/* Constants for ODCIStatsOptions.Options */
#define ODCI_PERCENT_OPTION 1
#define ODCI_ROW_OPTION 2
/* Constants for ODCIStatsOptions.Flags */
#define ODCI_ESTIMATE_STATS 0x01
#define ODCI_COMPUTE_STATS 0x02
#define ODCI_VALIDATE 0x04
/* Constants for ODCIIndexAlter parameter alter_option */
#define ODCI_ALTIDX_NONE 0
#define ODCI_ALTIDX_RENAME 1
#define ODCI_ALTIDX_REBUILD 2
#define ODCI_ALTIDX_REBUILD_ONL 3
#define ODCI_ALTIDX_MODIFY_COL 4
#define ODCI_ALTIDX_UPDATE_BLOCK_REFS 5
#define ODCI_ALTIDX_RENAME_COL 6
#define ODCI_ALTIDX_RENAME_TAB 7
#define ODCI_ALTIDX_MIGRATE 8
/* Constants for ODCIIndexInfo.IndexInfoFlags */
#define ODCI_INDEX_LOCAL 0x0001
#define ODCI_INDEX_RANGE_PARTN 0x0002
#define ODCI_INDEX_HASH_PARTN 0x0004
#define ODCI_INDEX_ONLINE 0x0008
#define ODCI_INDEX_PARALLEL 0x0010
#define ODCI_INDEX_UNUSABLE 0x0020
#define ODCI_INDEX_ONIOT 0x0040
#define ODCI_INDEX_TRANS_TBLSPC 0x0080
#define ODCI_INDEX_FUNCTION_IDX 0x0100
#define ODCI_INDEX_LIST_PARTN 0x0200
/* Constants for ODCIIndexInfo.IndexParaDegree */
#define ODCI_INDEX_DEFAULT_DEGREE 32767
/* Constants for ODCIEnv.EnvFlags */
#define ODCI_DEBUGGING_ON 0x01
#define ODCI_NODATA 0x02
/* Constants for ODCIEnv.CallProperty */
#define ODCI_CALL_NONE 0
#define ODCI_CALL_FIRST 1
#define ODCI_CALL_INTERMEDIATE 2
#define ODCI_CALL_FINAL 3
#define ODCI_CALL_REBUILD_INDEX 4
#define ODCI_CALL_REBUILD_PMO 5
#define ODCI_CALL_STATSGLOBAL 6
#define ODCI_CALL_STATSGLOBALANDPARTITION 7
#define ODCI_CALL_STATSPARTITION 8
/* Constants for ODCIExtTableInfo.OpCode */
#define ODCI_EXTTABLE_INFO_OPCODE_FETCH 1
#define ODCI_EXTTABLE_INFO_OPCODE_POPULATE 2
/* Constants (bit definitions) for ODCIExtTableInfo.Flag */
/* sampling type: row or block */
#define ODCI_EXTTABLE_INFO_FLAG_SAMPLE 0x00000001
#define ODCI_EXTTABLE_INFO_FLAG_SAMPLE_BLOCK 0x00000002
/* AccessParmClob, AccessParmBlob discriminator */
#define ODCI_EXTTABLE_INFO_FLAG_ACCESS_PARM_CLOB 0x00000004
#define ODCI_EXTTABLE_INFO_FLAG_ACCESS_PARM_BLOB 0x00000008
/* Constants for ODCIExtTableInfo.IntraSourceConcurrency */
#define ODCI_TRUE 1
#define ODCI_FALSE 0
/* Constants (bit definitions) for ODCIExtTable{Open,Fetch,Populate,Close}
* Flag argument.
*/
#define ODCI_EXTTABLE_OPEN_FLAGS_QC 0x00000001 /* caller is Query Coord */
#define ODCI_EXTTABLE_OPEN_FLAGS_SHADOW 0x00000002 /* caller is shadow proc */
#define ODCI_EXTTABLE_OPEN_FLAGS_SLAVE 0x00000004 /* caller is slave proc */
#define ODCI_EXTTABLE_FETCH_FLAGS_EOS 0x00000001 /* end-of-stream on fetch */
/* Constants for Flags argument to ODCIAggregateTerminate */
#define ODCI_AGGREGATE_REUSE_CTX 1
/* Constants for ODCIColInfo.Flags */
#define ODCI_COMP_FILTERBY_COL 0x0001
#define ODCI_COMP_ORDERBY_COL 0x0002
#define ODCI_COMP_ORDERDSC_COL 0x0004
#define ODCI_COMP_UPDATED_COL 0x0008
#define ODCI_COMP_RENAMED_COL 0x0010
#define ODCI_COMP_RENAMED_TOPADT 0x0020
/* Constants for ODCIOrderByInfo.ExprType */
#define ODCI_COLUMN_EXPR 1
#define ODCI_ANCOP_EXPR 2
/* Constants for ODCIOrderByInfo.SortOrder */
#define ODCI_SORT_ASC 1
#define ODCI_SORT_DESC 2
#define ODCI_NULLS_FIRST 4
/* Constants for ODCIPartInfo.PartOp */
#define ODCI_ADD_PARTITION 1
#define ODCI_DROP_PARTITION 2
/*---------------------------------------------------------------------------
ODCI TYPES
---------------------------------------------------------------------------*/
/*
* These are C mappings for the OTS types defined in catodci.sql
*/
typedef OCIRef ODCIColInfo_ref;
typedef OCIArray ODCIColInfoList;
typedef OCIArray ODCIColInfoList2;
typedef OCIRef ODCIIndexInfo_ref;
typedef OCIRef ODCIPredInfo_ref;
typedef OCIArray ODCIRidList;
typedef OCIRef ODCIIndexCtx_ref;
typedef OCIRef ODCIObject_ref;
typedef OCIArray ODCIObjectList;
typedef OCIRef ODCIQueryInfo_ref;
typedef OCIRef ODCIFuncInfo_ref;
typedef OCIRef ODCICost_ref;
typedef OCIRef ODCIArgDesc_ref;
typedef OCIArray ODCIArgDescList;
typedef OCIRef ODCIStatsOptions_ref;
typedef OCIRef ODCIPartInfo_ref;
typedef OCIRef ODCIEnv_ref;
typedef OCIRef ODCIExtTableInfo_ref; /* external table support */
typedef OCIArray ODCIGranuleList; /* external table support */
typedef OCIRef ODCIExtTableQCInfo_ref; /* external table support */
typedef OCIRef ODCIFuncCallInfo_ref;
typedef OCIArray ODCINumberList;
typedef OCIArray ODCIPartInfoList;
typedef OCIArray ODCIColValList;
typedef OCIArray ODCIColArrayList;
typedef OCIArray ODCIFilterInfoList;
typedef OCIArray ODCIOrderByInfoList;
typedef OCIRef ODCIFilterInfo_ref;
typedef OCIRef ODCIOrderByInfo_ref;
typedef OCIRef ODCICompQueryInfo_ref;
struct ODCIColInfo
{
OCIString* TableSchema;
OCIString* TableName;
OCIString* ColName;
OCIString* ColTypName;
OCIString* ColTypSchema;
OCIString* TablePartition;
OCINumber ColFlags;
OCINumber ColOrderPos;
OCINumber TablePartitionIden;
OCINumber TablePartitionTotal;
};
typedef struct ODCIColInfo ODCIColInfo;
struct ODCIColInfo_ind
{
OCIInd atomic;
OCIInd TableSchema;
OCIInd TableName;
OCIInd ColName;
OCIInd ColTypName;
OCIInd ColTypSchema;
OCIInd TablePartition;
OCIInd ColFlags;
OCIInd ColOrderPos;
OCIInd TablePartitionIden;
OCIInd TablePartitionTotal;
};
typedef struct ODCIColInfo_ind ODCIColInfo_ind;
struct ODCIFuncCallInfo
{
struct ODCIColInfo ColInfo;
};
struct ODCIFuncCallInfo_ind
{
struct ODCIColInfo_ind ColInfo;
};
struct ODCIIndexInfo
{
OCIString* IndexSchema;
OCIString* IndexName;
ODCIColInfoList* IndexCols;
OCIString* IndexPartition;
OCINumber IndexInfoFlags;
OCINumber IndexParaDegree;
OCINumber IndexPartitionIden;
OCINumber IndexPartitionTotal;
};
typedef struct ODCIIndexInfo ODCIIndexInfo;
struct ODCIIndexInfo_ind
{
OCIInd atomic;
OCIInd IndexSchema;
OCIInd IndexName;
OCIInd IndexCols;
OCIInd IndexPartition;
OCIInd IndexInfoFlags;
OCIInd IndexParaDegree;
OCIInd IndexPartitionIden;
OCIInd IndexPartitionTotal;
};
typedef struct ODCIIndexInfo_ind ODCIIndexInfo_ind;
struct ODCIPredInfo
{
OCIString* ObjectSchema;
OCIString* ObjectName;
OCIString* MethodName;
OCINumber Flags;
};
typedef struct ODCIPredInfo ODCIPredInfo;
struct ODCIPredInfo_ind
{
OCIInd atomic;
OCIInd ObjectSchema;
OCIInd ObjectName;
OCIInd MethodName;
OCIInd Flags;
};
typedef struct ODCIPredInfo_ind ODCIPredInfo_ind;
struct ODCIFilterInfo
{
ODCIColInfo ColInfo;
OCINumber Flags;
OCIAnyData *strt;
OCIAnyData *stop;
};
typedef struct ODCIFilterInfo ODCIFilterInfo;
struct ODCIFilterInfo_ind
{
OCIInd atomic;
ODCIColInfo_ind ColInfo;
OCIInd Flags;
OCIInd strt;
OCIInd stop;
};
typedef struct ODCIFilterInfo_ind ODCIFilterInfo_ind;
struct ODCIOrderByInfo
{
OCINumber ExprType;
OCIString *ObjectSchema;
OCIString *TableName;
OCIString *ExprName;
OCINumber SortOrder;
};
typedef struct ODCIOrderByInfo ODCIOrderByInfo;
struct ODCIOrderByInfo_ind
{
OCIInd atomic;
OCIInd ExprType;
OCIInd ObjectSchema;
OCIInd TableName;
OCIInd ExprName;
OCIInd SortOrder;
};
typedef struct ODCIOrderByInfo_ind ODCIOrderByInfo_ind;
struct ODCICompQueryInfo
{
ODCIFilterInfoList *PredInfo;
ODCIOrderByInfoList *ObyInfo;
};
typedef struct ODCICompQueryInfo ODCICompQueryInfo;
struct ODCICompQueryInfo_ind
{
OCIInd atomic;
OCIInd PredInfo;
OCIInd ObyInfo;
};
typedef struct ODCICompQueryInfo_ind ODCICompQueryInfo_ind;
struct ODCIObject
{
OCIString* ObjectSchema;
OCIString* ObjectName;
};
typedef struct ODCIObject ODCIObject;
struct ODCIObject_ind
{
OCIInd atomic;
OCIInd ObjectSchema;
OCIInd ObjectName;
};
typedef struct ODCIObject_ind ODCIObject_ind;
struct ODCIQueryInfo
{
OCINumber Flags;
ODCIObjectList* AncOps;
ODCICompQueryInfo CompInfo;
};
typedef struct ODCIQueryInfo ODCIQueryInfo;
struct ODCIQueryInfo_ind
{
OCIInd atomic;
OCIInd Flags;
OCIInd AncOps;
ODCICompQueryInfo_ind CompInfo;
};
typedef struct ODCIQueryInfo_ind ODCIQueryInfo_ind;
struct ODCIIndexCtx
{
struct ODCIIndexInfo IndexInfo;
OCIString* Rid;
struct ODCIQueryInfo QueryInfo;
};
typedef struct ODCIIndexCtx ODCIIndexCtx;
struct ODCIIndexCtx_ind
{
OCIInd atomic;
struct ODCIIndexInfo_ind IndexInfo;
OCIInd Rid;
struct ODCIQueryInfo_ind QueryInfo;
};
typedef struct ODCIIndexCtx_ind ODCIIndexCtx_ind;
struct ODCIFuncInfo
{
OCIString* ObjectSchema;
OCIString* ObjectName;
OCIString* MethodName;
OCINumber Flags;
};
typedef struct ODCIFuncInfo ODCIFuncInfo;
struct ODCIFuncInfo_ind
{
OCIInd atomic;
OCIInd ObjectSchema;
OCIInd ObjectName;
OCIInd MethodName;
OCIInd Flags;
};
typedef struct ODCIFuncInfo_ind ODCIFuncInfo_ind;
struct ODCICost
{
OCINumber CPUcost;
OCINumber IOcost;
OCINumber NetworkCost;
OCIString* IndexCostInfo;
};
typedef struct ODCICost ODCICost;
struct ODCICost_ind
{
OCIInd atomic;
OCIInd CPUcost;
OCIInd IOcost;
OCIInd NetworkCost;
OCIInd IndexCostInfo;
};
typedef struct ODCICost_ind ODCICost_ind;
struct ODCIArgDesc
{
OCINumber ArgType;
OCIString* TableName;
OCIString* TableSchema;
OCIString* ColName;
OCIString* TablePartitionLower;
OCIString* TablePartitionUpper;
OCINumber Cardinality;
};
typedef struct ODCIArgDesc ODCIArgDesc;
struct ODCIArgDesc_ind
{
OCIInd atomic;
OCIInd ArgType;
OCIInd TableName;
OCIInd TableSchema;
OCIInd ColName;
OCIInd TablePartitionLower;
OCIInd TablePartitionUpper;
OCIInd Cardinality;
};
typedef struct ODCIArgDesc_ind ODCIArgDesc_ind;
struct ODCIStatsOptions
{
OCINumber Sample;
OCINumber Options;
OCINumber Flags;
};
typedef struct ODCIStatsOptions ODCIStatsOptions;
struct ODCIStatsOptions_ind
{
OCIInd atomic;
OCIInd Sample;
OCIInd Options;
OCIInd Flags;
};
typedef struct ODCIStatsOptions_ind ODCIStatsOptions_ind;
struct ODCIEnv
{
OCINumber EnvFlags;
OCINumber CallProperty;
OCINumber DebugLevel;
OCINumber CursorNum;
};
typedef struct ODCIEnv ODCIEnv;
struct ODCIEnv_ind
{
OCIInd _atomic;
OCIInd EnvFlags;
OCIInd CallProperty;
OCIInd DebugLevel;
OCIInd CursorNum;
};
typedef struct ODCIEnv_ind ODCIEnv_ind;
struct ODCIPartInfo
{
OCIString* TablePartition;
OCIString* IndexPartition;
OCINumber IndexPartitionIden;
OCINumber PartOp;
};
typedef struct ODCIPartInfo ODCIPartInfo;
struct ODCIPartInfo_ind
{
OCIInd atomic;
OCIInd TablePartition;
OCIInd IndexPartition;
OCIInd IndexPartitionIden;
OCIInd PartOp;
};
typedef struct ODCIPartInfo_ind ODCIPartInfo_ind;
/*---------- External Tables ----------*/
struct ODCIExtTableInfo
{
OCIString* TableSchema;
OCIString* TableName;
ODCIColInfoList* RefCols;
OCIClobLocator* AccessParmClob;
OCIBlobLocator* AccessParmBlob;
ODCIArgDescList* Locations;
ODCIArgDescList* Directories;
OCIString* DefaultDirectory;
OCIString* DriverType;
OCINumber OpCode;
OCINumber AgentNum;
OCINumber GranuleSize;
OCINumber Flag;
OCINumber SamplePercent;
OCINumber MaxDoP;
OCIRaw* SharedBuf;
OCIString* MTableName;
OCIString* MTableSchema;
OCINumber TableObjNo;
};
typedef struct ODCIExtTableInfo ODCIExtTableInfo;
struct ODCIExtTableInfo_ind
{
OCIInd _atomic;
OCIInd TableSchema;
OCIInd TableName;
OCIInd RefCols;
OCIInd AccessParmClob;
OCIInd AccessParmBlob;
OCIInd Locations;
OCIInd Directories;
OCIInd DefaultDirectory;
OCIInd DriverType;
OCIInd OpCode;
OCIInd AgentNum;
OCIInd GranuleSize;
OCIInd Flag;
OCIInd SamplePercent;
OCIInd MaxDoP;
OCIInd SharedBuf;
OCIInd MTableName;
OCIInd MTableSchema;
OCIInd TableObjNo;
};
typedef struct ODCIExtTableInfo_ind ODCIExtTableInfo_ind;
struct ODCIExtTableQCInfo
{
OCINumber NumGranules;
OCINumber NumLocations;
ODCIGranuleList* GranuleInfo;
OCINumber IntraSourceConcurrency;
OCINumber MaxDoP;
OCIRaw* SharedBuf;
};
typedef struct ODCIExtTableQCInfo ODCIExtTableQCInfo;
struct ODCIExtTableQCInfo_ind
{
OCIInd _atomic;
OCIInd NumGranules;
OCIInd NumLocations;
OCIInd GranuleInfo;
OCIInd IntraSourceConcurrency;
OCIInd MaxDoP;
OCIInd SharedBuf;
};
typedef struct ODCIExtTableQCInfo_ind ODCIExtTableQCInfo_ind;
/*********************************************************/
/* Table Function Info types (used by ODCITablePrepare) */
/*********************************************************/
struct ODCITabFuncInfo
{
ODCINumberList* Attrs;
OCIType* RetType;
};
typedef struct ODCITabFuncInfo ODCITabFuncInfo;
struct ODCITabFuncInfo_ind
{
OCIInd _atomic;
OCIInd Attrs;
OCIInd RetType;
};
typedef struct ODCITabFuncInfo_ind ODCITabFuncInfo_ind;
/*********************************************************************/
/* Table Function Statistics types (used by ODCIStatsTableFunction) */
/*********************************************************************/
struct ODCITabFuncStats
{
OCINumber num_rows;
};
typedef struct ODCITabFuncStats ODCITabFuncStats;
struct ODCITabFuncStats_ind
{
OCIInd _atomic;
OCIInd num_rows;
};
typedef struct ODCITabFuncStats_ind ODCITabFuncStats_ind;
/*---------------------------------------------------------------------------
PRIVATE TYPES AND CONSTANTS
---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
PUBLIC FUNCTIONS
---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
PRIVATE FUNCTIONS
---------------------------------------------------------------------------*/
#endif /* ODCI_ORACLE */

View File

@ -0,0 +1,322 @@
/*
Copyright (c) 1982, 2008, Oracle and/or its affiliates.All rights reserved.
*/
/*
* $Header: oracore3/public/oratypes.h /nt/21 2009/01/01 19:48:06 sabchoud Exp $
*/
#ifndef ORATYPES
# define ORATYPES
# define SX_ORACLE
# define SX3_ORACLE
#ifndef ORASTDDEF
# include <stddef.h>
# define ORASTDDEF
#endif
#ifndef ORALIMITS
# include <limits.h>
# define ORALIMITS
#endif
#ifndef TRUE
# define TRUE 1
# define FALSE 0
#endif
#ifndef lint
typedef unsigned char ub1;
typedef signed char sb1;
#else
#define ub1 unsigned char
#define sb1 signed char
#endif
#define UB1MAXVAL ((ub1)UCHAR_MAX)
#define UB1MINVAL ((ub1) 0)
#define SB1MAXVAL ((sb1)SCHAR_MAX)
#define SB1MINVAL ((sb1)SCHAR_MIN)
#define MINUB1MAXVAL ((ub1) 255)
#define MAXUB1MINVAL ((ub1) 0)
#define MINSB1MAXVAL ((sb1) 127)
#define MAXSB1MINVAL ((sb1) -127)
#ifndef lint
typedef unsigned short ub2;
typedef signed short sb2;
#else
#define ub2 unsigned short
#define sb2 signed short
#endif
#define UB2MAXVAL ((ub2)USHRT_MAX)
#define UB2MINVAL ((ub2) 0)
#define SB2MAXVAL ((sb2) SHRT_MAX)
#define SB2MINVAL ((sb2) SHRT_MIN)
#define MINUB2MAXVAL ((ub2) 65535)
#define MAXUB2MINVAL ((ub2) 0)
#define MINSB2MAXVAL ((sb2) 32767)
#define MAXSB2MINVAL ((sb2)-32767)
#ifndef lint
typedef unsigned int ub4;
typedef signed int sb4;
#else
#define eb4 int
#define ub4 unsigned int
#define sb4 signed int
#endif
#define UB4MAXVAL ((ub4)UINT_MAX)
#define UB4MINVAL ((ub4) 0)
#define SB4MAXVAL ((sb4) INT_MAX)
#define SB4MINVAL ((sb4) INT_MIN)
#define MINUB4MAXVAL ((ub4) 4294967295)
#define MAXUB4MINVAL ((ub4) 0)
#define MINSB4MAXVAL ((sb4) 2147483647)
#define MAXSB4MINVAL ((sb4)-2147483647)
/* --- Signed/Unsigned eight-byte scalar (orasb8/oraub8) --- */
#define ORAXB8_DEFINED
#ifndef lint
#ifndef __GNUC__
#ifdef __BORLANDC__
typedef unsigned __int64 oraub8;
typedef signed __int64 orasb8;
#else
typedef unsigned _int64 oraub8;
typedef signed _int64 orasb8;
#endif /* __BORLANDC__ */
#else
typedef unsigned long long oraub8;
typedef signed long long orasb8;
#endif
typedef oraub8 ub8;
typedef orasb8 sb8;
#else
# define ub8 oraub8
# define sb8 orasb8
# define oraub8 unsigned _int64
# define orasb8 signed _int64
#endif /* !lint */
#define ORAUB8MINVAL ((oraub8)0)
#define ORAUB8MAXVAL ((oraub8)18446744073709551615)
#define ORASB8MINVAL ((orasb8)-9223372036854775808)
#define ORASB8MAXVAL ((orasb8) 9223372036854775807)
#define MAXORAUB8MINVAL ((oraub8)0)
#define MINORAUB8MAXVAL ((oraub8)18446744073709551615)
#define MAXORASB8MINVAL ((orasb8)-9223372036854775807)
#define MINORASB8MAXVAL ((orasb8) 9223372036854775807)
#define UB1BITS CHAR_BIT
#define UB1MASK ((1 << ((uword)CHAR_BIT)) - 1)
#ifdef lint
# define oratext unsigned char
#else
typedef unsigned char oratext;
#endif
#ifndef lint
typedef char eb1;
typedef short eb2;
typedef int eb4;
#else
# define eb1 char
# define eb2 short
# define eb4 int
#endif
#define EB1MAXVAL ((eb1)SCHAR_MAX)
#define EB1MINVAL ((eb1) 0)
#define MINEB1MAXVAL ((eb1) 127)
#define MAXEB1MINVAL ((eb1) 0)
#define EB2MAXVAL ((eb2) SHRT_MAX)
#define EB2MINVAL ((eb2) 0)
#define MINEB2MAXVAL ((eb2) 32767)
#define MAXEB2MINVAL ((eb2) 0)
#define EB4MAXVAL ((eb4) INT_MAX)
#define EB4MINVAL ((eb4) 0)
#define MINEB4MAXVAL ((eb4) 2147483647)
#define MAXEB4MINVAL ((eb4) 0)
#ifndef lint
typedef sb1 b1;
#else
#define b1 sb1
#endif
#define B1MAXVAL SB1MAXVAL
#define B1MINVAL SB1MINVAL
#ifndef lint
typedef sb2 b2;
#else
#define b2 sb2
#endif
#define B2MAXVAL SB2MAXVAL
#define B2MINVAL SB2MINVAL
#ifndef lint
typedef sb4 b4;
#else
#define b4 sb4
#endif
# define B4MAXVAL SB4MAXVAL
# define B4MINVAL SB4MINVAL
#if !defined(LUSEMFC)
# ifdef lint
# define text unsigned char
# else
typedef oratext text;
# endif
#endif
#ifdef lint
# define OraText unsigned char
#else
typedef oratext OraText;
#endif
#ifndef lint
typedef int eword;
typedef unsigned int uword;
typedef signed int sword;
#else
#define eword int
#define uword unsigned int
#define sword signed int
#endif
#define EWORDMAXVAL ((eword) INT_MAX)
#define EWORDMINVAL ((eword) 0)
#define UWORDMAXVAL ((uword)UINT_MAX)
#define UWORDMINVAL ((uword) 0)
#define SWORDMAXVAL ((sword) INT_MAX)
#define SWORDMINVAL ((sword) INT_MIN)
#define MINEWORDMAXVAL ((eword) 2147483647)
#define MAXEWORDMINVAL ((eword) 0)
#define MINUWORDMAXVAL ((uword) 4294967295)
#define MAXUWORDMINVAL ((uword) 0)
#define MINSWORDMAXVAL ((sword) 2147483647)
#define MAXSWORDMINVAL ((sword) -2147483647)
#ifdef _WIN64
#ifndef lint
#if defined(__BORLANDC__) || defined(__MINGW64__)
typedef unsigned __int64 ubig_ora;
typedef signed __int64 sbig_ora;
#else
typedef unsigned _int64 ubig_ora;
typedef signed _int64 sbig_ora;
#endif /* End of __BORLANDC__ */
#else
#define ubig_ora unsigned _int64
#define sbig_ora signed _int64
#endif /* End of lint */
#define UBIG_ORAMAXVAL ((ubig_ora)_UI64_MAX)
#define UBIG_ORAMINVAL ((ubig_ora) 0)
#define SBIG_ORAMAXVAL ((sbig_ora) _I64_MAX)
#define SBIG_ORAMINVAL ((sbig_ora) _I64_MIN)
#define MINUBIG_ORAMAXVAL ((ubig_ora) 4294967295)
#define MAXUBIG_ORAMINVAL ((ubig_ora) 0)
#define MINSBIG_ORAMAXVAL ((sbig_ora) 2147483647)
#define MAXSBIG_ORAMINVAL ((sbig_ora)-2147483647)
#else
#ifndef lint
typedef unsigned long ubig_ora;
typedef signed long sbig_ora;
#else
#define ubig_ora unsigned long
#define sbig_ora signed long
#endif
#define UBIG_ORAMAXVAL ((ubig_ora)ULONG_MAX)
#define UBIG_ORAMINVAL ((ubig_ora) 0)
#define SBIG_ORAMAXVAL ((sbig_ora) LONG_MAX)
#define SBIG_ORAMINVAL ((sbig_ora) LONG_MIN)
#define MINUBIG_ORAMAXVAL ((ubig_ora) 4294967295)
#define MAXUBIG_ORAMINVAL ((ubig_ora) 0)
#define MINSBIG_ORAMAXVAL ((sbig_ora) 2147483647)
#define MAXSBIG_ORAMINVAL ((sbig_ora)-2147483647)
#endif /* _WIN64 */
#define UBIGORABITS (UB1BITS * sizeof(ubig_ora))
#undef CONST
#define CONST const
#define dvoid void
typedef void (*lgenfp_t)( void );
#ifndef ORASYS_TYPES
# include <sys/types.h>
# define ORASYS_TYPES
#endif
#ifndef boolean
# define boolean int
#endif
#ifdef sparc
# define SIZE_TMAXVAL SB4MAXVAL
#else
# define SIZE_TMAXVAL UB4MAXVAL
#endif
#define MINSIZE_TMAXVAL (size_t)4294967295
#if !defined(MOTIF) && !defined(LISPL) && !defined(__cplusplus) && !defined(LUSEMFC)
typedef oratext *string;
#endif
#ifndef lint
typedef unsigned short utext;
#else
#define utext unsigned short
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,373 @@
/* Copyright (c) 1994, 2006, Oracle. All rights reserved. */
/*
Author: Tin Nguyen
Date: 02/07/94
Source documents: "Functional Specification for C Object Interface, Object
Management Subsystem", "Oracle C Coding Standards
version 2.2", and the header file template
Rule sets: the generic and .h file rule sets
Quality status: not exited
Identification tag: [ one or more letters to identify the .h file ]
Revision code: [ date of the last revision of the .h file ]
Note to the user of this header file:
Anything in this header file that is marked private is not supported and
must not be used. Private sections are included in the header file to
improve internal maintenance.
NAME
ORID - Oracle Object Interface for Dynamic Data Access
DESCRIPTION
This file contains declarations for C object interface functions including
the dynamic object data access operations that allow callers to dynamically
access and manipulate objects; these operations include getting and setting
attributes of an object. These dynamic object operations are for accessing
and manipulation objects whose types are not known at compile-time.
RELATED DOCUMENTS
Functional Specification for C Object Interface / Object Management System
PUBLIC FUNCTIONS
OCIObjectSetAttr - ORID SET attribute value
OCIObjectGetAttr - ORID GET attribute value
PRIVATE FUNCTIONS
None
EXAMPLES
EXAMPLE 1
/o
o This example illustrates how an interative program can use the dynamic
o attribute access to display and modify attributes of an ADT instance.
o The interactive program does not know the type of the object at
o compile time.
o/
void display(adt_ref, object, null_struct, names, names_count,
names_length, indexes, indexes_count)
{
/o Pin the ADT o/
if (OCIObjectPin(env, &adt_ref, OROOPOCUR, OROOPDTRA, OROOLMNON, &adt)
!= OROSTASUC)
/o error handling code o/
/o
o Call the type manager to obtain all the attributes in the object.
o Display the content of each attribute in the ADT instance. If the
o attribute is an array, display each element of the array. If the
o attribute is an ADT instance, recursively call this routine to
o display the embedded ADT instance.
o/
numAttrs = OCITypeAttrs(env, adt);
for (i= 1; i <= numAttrs; i++)
{
/o get attribute descriptor o/
if (ortgabp(env, adt, i, &ado_ref, &ado) != OROSTASUC)
/o error handling code o/
/o get attribute name o/
names[names_count] = OCITypeElemName(env, ado,
&names_length[names_count]);
/o dynamically get the attr o/
if (OCIObjectGetAttr(env, object, null_struct, 0, adt_ref, names,
names_length, names_count+1, indexes, indexes_count, 0,
&null, &null_info, &attr) != OROSTASUC)
/o error handling code o/
/o check if attribute is null o/
if (null) continue;
/o get typecode of attribute o/
typecode = OCITypeElemTypeCode(env, ado);
/o if attribute is a varray, display each element in varray o/
if (typecode == OCI_TYPECODE_VARRAY)
{
/o get the reference to the type of the element of the array o/
if (OCITypeElemParameterizedTyper(env, ado, &attr_type_ref)
!= OROSTASUC)
/o error handling code o/
/o get the size of array o/
if (orlasiz(env, &attr_type_ref, (orlva *)attr,
&numElm) != OROSTASUC)
/o error handling code o/
/o get the typecode of the element of the array o/
if (ortty2r(env, attr_type_ref, &typecode) != OROSTASUC)
/o error handling code o/
/o iterate the array o/
for (j=0; j < numElm; j++)
{
/o get an element in the array o/
if (OCIObjectGetAttr(env, attr, null_info, j+1, attr_type_ref,
names, names_length, 0, indexes, 0, 0, &null, &null_info,
&element) != OROSTASUC)
/o error handling code o/
/o check if element is null o/
if (null) continue;
/o if attr is an ADT instance, recursively call this routine o/
if (typecode == OCI_TYPECODE_ADT || typecode ==
OCI_TYPECODE_UNNAMEDADT)
{
/o display the element as an adt o/
display(attr_type_ref, element, null_info, names, lengths,
0, indexes, 0);
}
/o if attribute is scalar, print the value to the screen o/
else output_to_screen(element, typecode);
}
}
/o if attribute is an ADT instance, recursively call this routine o/
else if (typecode == OCI_TYPECODE_ADT || typecode ==
OCI_TYPECODE_UNNAMEDADT)
{
/o get the type ref of the attribute o/
if (ortgarf(env, ado, &attr_type_ref) != OROSTASUC)
/o error handling code o/
display(attr_type_ref, attr, null_info, 0, names, 0, names_length,
indexes, 0);
}
/o if attribute is scalar, print the value to the screen o/
else output_to_screen(attr, typecode);
}
}
/o ******** main routine *********** o/
....
/o
o Allocate the arrays for storing the path expression
o/
/o get the tdo of type 'long' o/
if (orttypget(&env, con, "SYS", sizeof("SYS"), "SINT32", sizeof("SINT32"),
OROOPDSES, &long_ref, &long_tdo) != OROSTASUC)
/o error handling code o/
/o get the tdo of type 'varchar' o/
if (orttypget(&env, con, "SYS", sizeof("SYS"), "SQL_VARCHAR2",
sizeof("SQL_VARCHAR2"), OROOPDSES, &vchar_ref, &vchar_tdo)
!= OROSTASUC)
/o error handling code o/
/o allocate the varrays for the path expression o/
if (orlalloc(env, &vchar_ref, MAX_ARR_SIZE, &attr_names) != OROSTASUC)
/o error handling code o/
if (orlalloc(env, &long_ref, MAX_ARR_SIZE, &attr_name_lengths)
!= OROSTASUC)
/o error handling code o/
if (orlalloc(env, &long_ref, MAX_ARR_SIZE, &attr_name_indexes)
!= OROSTASUC)
/o error handling code o/
/o
o Get an ADT instance. The ref to the ADT instance can be obtained
o by through ORI or OSCI.
o/
if (OCIObjectPin(env, &obj_ref, OROOPOCUR, OROOPDTRA, OROOLMUPD, &object)
!= OROSTASUC)
/o error handling code o/
/o get the null structure of the ADT instance o/
if (OCIObjectGetInd(gp, object, &null_struct) != OROSTASUC)
/o error handling code o/
/o
o Get the type of the ADT instance
o/
/o find out the type of the ADT instance o/
if (oriogto(env, object, &adt_ref) != OROSTASUC)
/o error handling code o/
/o display the object o/
display(adt_ref, object, null_struct, attr_names, 0, attr_names_lengths,
attr_names_indexes, 0);
/o After the object is displayed, the program waits for the user to
o respond. The user modifies the values of an attribute and the
o program generates a path expression for the attribute and calls
o OCIObjectSetAttr() to set the value.
o/
if (OCIObjectSetAttr(env, object, null_struct, adt_ref,
(text **)attr_names, (ub4 *)attr_name_lengths,
attr_names_count, (ub4 *)attr_array_indexes,
attr_array_indexes_count,
(void *)0, FALSE, (void *)value) != OROSTASUC)
/o error handling code o/
END OF EXAMPLE 1
NOTES
This file has been subsetted to contain only the routines that will
be in the first release.
MODIFIED
dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
srseshad 03/12/03 - convert oci public api to ansi
aahluwal 06/03/02 - bug 2360115
bpalaval 02/09/01 - Change text to oratext.
whe 09/01/99 - 976457:check __cplusplus for C++ code
sthakur 09/18/97 - collection indexing not supported
cxcheng 08/05/97 - fix compile with short names
skrishna 03/18/97 - fix ifdef for supporting ansi and k&r proto-types
cxcheng 02/06/97 - take out short name support except with SLSHORTNAME
cxcheng 10/17/96 - final renaming of functions
jboonleu 10/07/96 - beautify with OCI long names
cxcheng 10/07/96 - change short names to long names for readability
jboonleu 09/27/96 - fix lint
jwijaya 07/03/96 - add ANSI prototypes
jboonleu 04/13/95 - new interface
jwijaya 10/11/94 - fix the sccs header and add namespace
tanguyen 08/22/94 - fix example
tanguyen 08/09/94 - remove Sccsid declaration
tanguyen 07/20/94 - fix OCIObjectSetAttr and OCIObjectGetAttr to
use position descriptor
tanguyen 07/18/94 - change 'object' type to become ptr to object
tanguyen 06/30/94 - Fix the ORID_ORACLE ifdef
tanguyen 06/27/94 - update to template format
skotsovo 05/12/94 - replace ado with attribute position
jweisz 05/11/94 - test new checkin facility
jwijaya 05/05/94 - orienv/ref/typ -> oroenv/ref/typ
jwijaya 02/07/94 - Creation
*/
#ifndef ORATYPES
#include <oratypes.h>
#endif
#ifndef ORO_ORACLE
#include <oro.h>
#endif
#ifndef OCI_ORACLE
#include <oci.h>
#endif
#ifndef ORID_ORACLE
#define ORID_ORACLE
#ifdef SLSHORTNAME
#define OCIObjectSetAttr oridset
#define OCIObjectGetAttr oridget
#endif /* SLSHORTNAME */
/*---------------------------------------------------------------------------*/
/* PUBLIC FUNCTIONS */
/*---------------------------------------------------------------------------*/
/*-------------------------- OCIObjectSetAttr ----------------------------*/
sword OCIObjectSetAttr( OCIEnv *env, OCIError *err, void *instance,
void *null_struct, struct OCIType *tdo,
const oratext **names, const ub4 *lengths,
const ub4 name_count, const ub4 *indexes,
const ub4 index_count, const OCIInd null_status,
const void *attr_null_struct, const void *attr_value );
/*
NAME: OCIObjectSetAttr - ORID SET value
PARAMETERS:
env (IN) - OCI environment handle initialized in object mode
err (IN) - error handle. If there is an error, it is
recorded in 'err' and this function returns OCI_ERROR.
The error recorded in 'err' can be retrieved by calling
OCIErrorGet().
instance (IN) - pointer to an ADT instance
null_struct (IN) - the null structure of the ADT instance or array
tdo (IN) - pointer to the TDO
names (IN) - array of attribute names. This is used to specify
the names of the attributes in the path expression.
lengths (IN) - array of lengths of attribute names.
name_count (IN) - number of element in the array 'names'.
indexes (IN) [OPTIONAL] - currently NOT SUPPORTED, pass (ub4 *)0.
index_count (IN) [OPTIONAL] - currently NOT SUPPORTED, pass (ub4)0.
attr_null_status (IN) - the null status of the attribute if the type of
attribute is primitive.
attr_null_struct (IN) - the null structure of an ADT or collection
attribute.
attr_value (IN) - pointer to the attribute value.
REQUIRES:
DESCRIPTION:
This function set the attribute of the given object with the given
value. The position of the attribute is specified as a path
expression which is an array of names and an array of indexes.
RETURNS:
one of OROSTA*
EXAMPLES:
For path expression stanford.cs.stu[5].addr, the arrays will look like
names = {"stanford", "cs", "stu", "addr"}
lengths = {8, 2, 3, 4}
indexes = {5}
Also see the above example.
*/
/*-------------------------- OCIObjectGetAttr ----------------------------*/
sword OCIObjectGetAttr( OCIEnv *env, OCIError *err, void *instance,
void *null_struct, struct OCIType *tdo,
const oratext **names, const ub4 *lengths,
const ub4 name_count, const ub4 *indexes,
const ub4 index_count, OCIInd *attr_null_status,
void **attr_null_struct, void **attr_value,
struct OCIType **attr_tdo );
/*
NAME: OCIObjectGetAttr - ORID GET value
PARAMETERS:
env (IN) - OCI environment handle initialized in object mode
err (IN) - error handle. If there is an error, it is
recorded in 'err' and this function returns OCI_ERROR.
The error recorded in 'err' can be retrieved by calling
OCIErrorGet().
instance (IN) - pointer to an ADT instance
null_struct (IN) - the null structure of the ADT instance or array
tdo (IN) - pointer to the TDO
names (IN) - array of attribute names. This is used to specify
the names of the attributes in the path expression.
lengths (IN) - array of lengths of attribute names.
name_count (IN) - number of element in the array 'names'.
indexes (IN) [OPTIONAL] - currently NOT SUPPORTED, pass (ub4 *)0.
index_count (IN) [OPTIONAL] - currently NOT SUPPORTED, pass (ub4)0.
attr_null_status (OUT) - the null status of the attribute if the type
of attribute is primitive.
attr_null_struct (OUT) - the null structure of an ADT or collection
attribute.
attr_value (OUT) - pointer to the attribute value.
attr_tdo (OUT) - pointer to the TDO of the attribute.
REQUIRES:
- a valid OCI environment handle must be given.
DESCRIPTION:
This function gets a value from an ADT instance or from an array.
If the parameter 'instance' points to an ADT instance, then the path
expression specifies the location of the attribute in the ADT.
It is assumed that the object is pinned and that the value returned
is valid until the object is unpinned.
RETURNS:
one of OROSTA*
EXAMPLES:
See example in OCIObjectSetAttr(). Also see the above example.
*/
#endif /* ORID_ORACLE */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,883 @@
/* Copyright (c) 1994, 2003, Oracle Corporation. All rights reserved. */
/*
NAME
OCI - Oracle Object Interface for External/Internal/Kernel Clients
DESCRIPTION
This header file contains Oracle object interface definitions which
can be included by external user applications, tools, as well as
the kernel. It defines types and constants that are common to all
object interface which is being defined in several other header files
(e.g., ori.h, ort.h, and orl.h).
RELATED DOCUMENTS
TBD
INSPECTION STATUS [[ deletable if no inspection ]]
Inspection date: [[ date of the last logging meeting ]]
Inspection status: [[ exited, not exited, or N/A if exit is not a goal ]]
Estimated increasing cost defects per page:
Rule sets: [[ rule sets inspected against or planned to be
inspected against ]]
ACCEPTANCE REVIEW STATUS [[ deletable if no approval review ]]
Review date: [[ date of the meeting where issues were logged and the
approval status was decided ]]
Review status: [[ current status: accepted, conditionally accepted,
major revision required, rejected ]]
Reviewers: [[ names of the members on the review team ]]
PUBLIC FUNCTIONS
EXAMPLES
Examples are given in the description of each function or macro where
relevant.
MODIFIED
mnanal 06/09/03 - backout of fix 2836388
mnanal 05/14/03 - bug-2836388
srseshad 11/27/02 - Change OCI_TYPECODE_BFLOAT/BDOUBLE codes
rxgovind 10/09/02 - add OCI_TYPECODE_UROWID
mxyang 09/17/02 - grabtrans 'mmorsi_obj_float'
srseshad 09/11/02 -
srseshad 09/01/02 -
aahluwal 06/03/02 - bug 2360115
celsbern 10/19/01 - merge LOG to MAIN
rxgovind 10/16/01 - update typecodes
rxgovind 09/19/01 - add typecodes
rkasamse 08/15/01 - add OCI_DURATION_USER_CALLBACK
jchai 09/24/01 - add type code for PLS_INTEGER
porangas 08/22/01 - Fix bug#1776434
schatter 04/09/01 - merge 1456235: define OCI_DURATION_INVALID
rdani 10/12/00 - 1449943 NOCOPY and PIPELINE
ciyer 05/26/00 - short names for abstract, overriding
rkasamse 05/25/00 - OCCI enhancements
smuralid 05/11/00 - OCITypeMethodFlags - add NOT INSTANTIABLE, OVERRIDING
rxgovind 05/09/00 - add OCI_TYPECODE_NONE
tnbui 07/28/99 - Remove OCI_TYPECODE_TIMESTAMP_ITZ
tnbui 07/21/99 - TS LOCAL TZ
thoang 06/21/99 - Add OCI_TYPECODE_TIMESTAMP_ITZ
thoang 03/04/99 - Add datetime datatypes
rkasamse 10/20/98 - add OCI_ATTR_CACHE_ARRAYFLUSH
rkasamse 10/29/98 - add OCI_DURATION_CALLOUT
rkasamse 04/28/98 - OCI_OBJECT_DETECTCHANGE -> OCI_ATTR_OBJECT_DETECTCHAN
rkasamse 04/28/98 - OCI_OBJECT_NEWNOTNULL -> OCI_ATTR_OBJECT_NEWNOTNULL
rkasamse 04/23/98 - add OCI_OBJECT_DETECTCHANGE
rkasamse 04/03/98 - add OCI_OBJECT_NEWNOTNULL
pmitra 04/01/98 - OCI_LOCK_X_NOWAIT added
rxgovind 02/18/98 - add OCI_TYPECODE_OPAQUE
rkasamse 02/13/98 - Add OCI_DURATION_PROCESS
cxcheng 07/28/97 - fix compile with SLSHORTNAME
skrishna 07/14/97 - add OCIObjectGetProperty
cxcheng 04/30/97 - make OCITypeParamMode values consistent with PL/SQL
skrishna 04/28/97 - undocument OCIObjectProperty & OCIObjectEvent
cxcheng 03/29/97 - remove all remaining short names
sthakur 03/20/97 - add casts to constants
cxcheng 02/21/97 - temporarily put SLSHORTNAME for PL/SQL
cxcheng 02/06/97 - take out short name support except with SLSHORTNAME
lchidamb 01/20/97 - update OCIRef comments
sgollapu 11/19/96 - Add OCI type codes for BOOL,REC,and TAB
cxcheng 11/19/96 - more typecode changes
cxcheng 11/13/96 - add #include for ocidfn.h
cxcheng 11/13/96 - add OCI_TYPECODE_ADT for compatibility
cxcheng 11/12/96 - add SQLT_NCO for named collection
cxcheng 11/11/96 - more changes to typecodes
cxcheng 11/07/96 - #define OCI_TYPECODE_MLSLABEL to SQLT_LAB
cxcheng 11/06/96 - fix #define omission for OROTCNAT
cxcheng 10/30/96 - move OCI_TYPECODE_* to ocidfn.h as SQLT_*
cxcheng 10/28/96 - more beautification changes
jboonleu 10/29/96 - add flags for freeing object
dchatter 10/26/96 - delete redef of OCISvcCtx, OCIError, OCIEnv
cxcheng 10/15/96 - more changes
cxcheng 10/14/96 - more final fixes to constants
mluong 10/11/96 -
mluong 10/11/96 - KOCON and KONSP are in lowercase
mluong 10/11/96 - add some define per Calvin
cxcheng 10/09/96 - add #define for OROOCOSFN to OCI_COPY_NOREF
jboonleu 10/08/96 - change OROOCOSFN to OCICopyFlag
jboonleu 10/07/96 - use new OCI names for cache options
cxcheng 10/07/96 - add OROTCS02 for KOTTCBRI and OROTCS03 as spare
cxcheng 10/07/96 - more lint fixes
cxcheng 10/02/96 - move oronsp to ko.h as konsp
cxcheng 10/01/96 - add long names for readability
cxcheng 10/01/96 - remove orotty and orotal
rjenkins 09/28/96 - 2k char 4k varchar2
jboonleu 09/27/96 - add macro used only in beta2
cxcheng 09/27/96 - move oroenv to oroenv.h
cxcheng 09/24/96 - remove unnecessary orotyp
cxcheng 09/25/96 - add typecode OROTCS01 as placeholder for lob pointer
cxcheng 09/20/96 - add TDO load option orotgo
jboonleu 09/18/96 - add OROOPOREC
jboonleu 09/10/96 - add OROOPODFL
jweisz 08/27/96 - add SQL internal typecode OROTCS00
cxcheng 08/02/96 - add PLSQL internal typecodes OROTCP..
cxcheng 08/01/96 - add OROTCFAR to fill up space left by OROTCCAR
jboonleu 07/16/96 - new pin option
cxcheng 06/18/96 - add casts to OROTNOPRE and OROTNOSCL
cxcheng 05/29/96 - change OROTCNPT back to OROTCDOM
vkrishna 05/27/96 - add OROTCCAR
cxcheng 05/17/96 - replace OROTCFAR with OROTCCAR
cxcheng 05/08/96 - change orotmf from ub1 to ub2
cxcheng 05/07/96 - fix public defines for method types
cxcheng 04/30/96 - change OROTCDOM to OROTCNPT
cxcheng 04/15/96 - remove obsolete OROTTYICT
jboonleu 04/12/96 - add new pin option
sthakur 04/12/96 - add indicator type and indicator status
cxcheng 04/10/96 - add function parameter codes for ORT/KOT
cxcheng 04/03/96 - replace OROTCFAR as OROTCCAR
jwijaya 03/29/96 - add OROTTCCAR
jwijaya 03/27/96 - better comments for orotc
cxcheng 02/23/96 - add typecodes for SMALLINT and VARCHAR2
skrishna 02/22/96 - add oroind - null indicator type
cxcheng 02/21/96 - change lob character codes to OROTCCLB, OROTCBLB...
jboonleu 02/06/96 - new value for predefined duration
cxcheng 01/12/96 - add OROTCCLO, OROTCBLO, OROTCFIL to orotc
cxcheng 12/05/95 - add OROTCDOM and OROTCAAT to orotc
skotsovo 10/30/95 - reserve space for internal 'oid' type
jwijaya 10/20/95 - support variable-length ref
cxcheng 10/03/95 - add OROTMFOR for ordering function to orotmf
cxcheng 10/03/95 - Adding the ordering function type to orotmf
jboonleu 09/28/95 - set OROODTPRE
jboonleu 09/25/95 - add oroodt
skotsovo 03/10/95 - update to only include release 1
jboonleu 02/15/95 - add OROOPOREC, remove orocro, oroolo
skotsovo 01/30/95 - add default max lengths for varrays and vstrings
skotsovo 01/24/95 - categorize sint32, double, and real as number types
(with precision and scale) instead of scalar types.
skotsovo 12/20/94 - add release 1 types
skotsovo 12/12/94 - update according to new ots doc
skotsovo 12/01/94 - add default precision and scale
jwijaya 11/15/94 - rename ORONSPTAB to ORONSPEXT
jwijaya 10/25/94 - tint
jwijaya 10/06/94 - add namespace
jwijaya 10/02/94 - connection handle -> connection number
skotsovo 09/12/94 - keep 0 as uninitialized value for ORT consts
skotsovo 08/24/94 - fix orotec
skotsovo 08/17/94 - modify type code names
skotsovo 08/12/94 - fix 141 lint errors
skotsovo 07/25/94 - modify categorization of complex types (orotc)
skotsovo 07/07/94 - change typecode enum values & add decimal type
skotsovo 07/01/94 - change order of typecodes
jwijaya 06/15/94 - review
jboonleu 06/13/94 - add comments for the object cache options
jwijaya 06/13/94 - adhere to the header file template
skotsovo 06/09/94 - make ots scalar type names consistent with the ots
document
jwijaya 06/07/94 - include oratypes.h instead of s.h
skotsovo 05/24/94 - change typecodes
jwijaya 05/23/94 - fix comments of ororef
skotsovo 05/19/94 - remove type composition
skotsovo 05/09/94 - modified orotc according to new OTS document
jwijaya 05/03/94 - oroid and ororef
jwijaya 01/26/94 - Creation
*/
#ifndef ORATYPES
#include <oratypes.h>
#endif
#ifndef OCIDFN_ORACLE
#include <ocidfn.h>
#endif
#ifndef ORO_ORACLE
#define ORO_ORACLE
/*---------------------------------------------------------------------------*/
/* SHORT NAMES SUPPORT SECTION */
/*---------------------------------------------------------------------------*/
#ifdef SLSHORTNAME
/* the following are short names that are only supported on IBM mainframes
with the SLSHORTNAME defined.
With this all subsequent long names will actually be substituted with
the short names here */
#define OCIDuration oroodt
#define OCIInd oroind
#define OCILockOpt oroolm
#define OCIMarkOpt oroomo
#define OCIObjectEvent orocev
#define OCIObjectProperty oroopr
#define OCIPinOpt oroopo
#define OCIRef ororef
#define OCIRefreshOpt orooro
#define OCITypeCode orotc
#define OCITypeEncap orotec
#define OCITypeGetOpt orotgo
#define OCITypeMethodFlag orotmf
#define OCITypeParamMode orotpm
#define OCIObjectPropId oroopi
#define OCIObjectLifetime oroolft
#define OCIObjectMarkstatus oroomst
#define OCI_LOCK_NONE OROOLMNUL
#define OCI_LOCK_X OROOLMX
#define OCI_LOCK_X_NOWAIT OROOLMXNW
#define OCI_MARK_DEFAULT OROOMODFL
#define OCI_MARK_NONE OROOMONON
#define OCI_MARK_UPDATE OROOMOUPD
#define OCI_OBJECTEVENT_AFTER_FLUSH OROCEVAFL
#define OCI_OBJECTEVENT_AFTER_REFRESH OROCEVARF
#define OCI_OBJECTEVENT_BEFORE_FLUSH OROCEVBFL
#define OCI_OBJECTEVENT_BEFORE_REFRESH OROCEVBRF
#define OCI_OBJECTEVENT_WHEN_LOCK OROCEVWLK
#define OCI_OBJECTEVENT_WHEN_MARK_DELETED OROCEVWDL
#define OCI_OBJECTEVENT_WHEN_MARK_UPDATED OROCEVWUP
#define OCI_OBJECTEVENT_WHEN_UNMARK OROCEVWUM
#define OCI_OBJECTPROP_DIRTIED OROOPRDRT
#define OCI_OBJECTPROP_LOADED OROOPRLOD
#define OCI_OBJECTPROP_LOCKED OROOPRLCK
#define OCI_PIN_ANY OROOPOANY
#define OCI_PIN_DEFAULT OROOPODFL
#define OCI_PIN_LATEST OROOPOLST
#define OCI_PIN_RECENT OROOPOREC
#define OCI_REFRESH_LOADED OROOROLOD
#define OCI_TYPEENCAP_PRIVATE OROTECPVT
#define OCI_TYPEENCAP_PUBLIC OROTECPUB
#define OCI_TYPEGET_ALL OROTGOALL
#define OCI_TYPEGET_HEADER OROTGOHDR
#define OCI_TYPEMETHOD_CONSTANT OROTMCON
#define OCI_TYPEMETHOD_CONSTRUCTOR OROTMCSTR
#define OCI_TYPEMETHOD_DESTRUCTOR OROTMDSTR
#define OCI_TYPEMETHOD_INLINE OROTMINL
#define OCI_TYPEMETHOD_MAP OROTMMAP
#define OCI_TYPEMETHOD_OPERATOR OROTMOP
#define OCI_TYPEMETHOD_ORDER OROTMOR
#define OCI_TYPEMETHOD_RNDS OROTMRDS
#define OCI_TYPEMETHOD_RNPS OROTMRPS
#define OCI_TYPEMETHOD_SELFISH OROTMSLF
#define OCI_TYPEMETHOD_VIRTUAL OROTMVRT
#define OCI_TYPEMETHOD_WNDS OROTMWDS
#define OCI_TYPEMETHOD_WNPS OROTMWPS
#define OCI_TYPEMETHOD_ABSTRACT OROTMABSTRACT
#define OCI_TYPEMETHOD_OVERRIDING OROTMOVERRIDING
#define OCI_TYPEMETHOD_PIPELINED OROTMPIPELINED
#define OCI_TYPEPARAM_BYREF OROTPMREF
#define OCI_TYPEPARAM_IN OROTPMIN
#define OCI_TYPEPARAM_INOUT OROTPMIO
#define OCI_TYPEPARAM_OUT OROTPMOUT
#define OCI_TYPEPARAM_OUTNCPY OROTPMOUTNCPY
#define OCI_TYPEPARAM_INOUTNCPY OROTPMIONCPY
#endif /* SLSHORTNAME */
/*---------------------------------------------------------------------------*/
/* PUBLIC TYPES, CONSTANTS AND MACROS */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* GENERAL OBJECT TYPES, CONSTANTS, MACROS */
/*---------------------------------------------------------------------------*/
/*------------------------- OBJECT REFERENCE (REF) --------------------------*/
typedef struct OCIRef OCIRef;
/*
* OCIRef - OCI object REFerence
*
* In the Oracle object runtime environment, an object is identified by an
* object reference (ref) which contains the object identifier plus other
* runtime information. The contents of a ref is opaque to clients. Use
* OCIObjectNew() to construct a ref.
*/
/*--------------------------- OBJECT INDICATOR ------------------------------*/
typedef sb2 OCIInd;
/*
* OCIInd -- a variable of this type contains (null) indicator information
*/
#define OCI_IND_NOTNULL (OCIInd)0 /* not NULL */
#define OCI_IND_NULL (OCIInd)(-1) /* NULL */
#define OCI_IND_BADNULL (OCIInd)(-2) /* BAD NULL */
#define OCI_IND_NOTNULLABLE (OCIInd)(-3) /* not NULLable */
/*---------------------------------------------------------------------------*/
/* OBJECT CACHE */
/*---------------------------------------------------------------------------*/
/* To enable object change detection mode, set this to TRUE */
#define OCI_ATTR_OBJECT_DETECTCHANGE 0x00000020
/* To enable object creation with non-NULL attributes by default, set the
following to TRUE.
By default, object is created with NULL attributes
*/
#define OCI_ATTR_OBJECT_NEWNOTNULL 0x00000010
/* To enable sorting of the objects that belong to the same table
before being flushed through OCICacheFlush.
Please note that by enabling this object cache will not be flushing
the objects in the same order they were dirtied */
#define OCI_ATTR_CACHE_ARRAYFLUSH 0x00000040
/*--------------------------- OBJECT PIN OPTION -----------------------------*/
enum OCIPinOpt
{
/* 0 = uninitialized */
OCI_PIN_DEFAULT = 1, /* default pin option */
OCI_PIN_ANY = 3, /* pin any copy of the object */
OCI_PIN_RECENT = 4, /* pin recent copy of the object */
OCI_PIN_LATEST = 5 /* pin latest copy of the object */
};
typedef enum OCIPinOpt OCIPinOpt;
/*
* OCIPinOpt - OCI object Pin Option
*
* In the Oracle object runtime environment, the program has the option to
* specify which copy of the object to pin.
*
* OCI_PINOPT_DEFAULT pins an object using the default pin option. The default
* pin option can be set as an attribute of the OCI environment handle
* (OCI_ATTR_PINTOPTION). The value of the default pin option can be
* OCI_PINOPT_ANY, OCI_PINOPT_RECENT, or OCI_PIN_LATEST. The default option
* is initialized to OCI_PINOPT_ANY.
*
* OCI_PIN_ANY pins any copy of the object. The object is pinned
* using the following criteria:
* If the object copy is not loaded, load it from the persistent store.
* Otherwise, the loaded object copy is returned to the program.
*
* OCI_PIN_RECENT pins the latest copy of an object. The object is
* pinned using the following criteria:
* If the object is not loaded, load the object from the persistent store
* from the latest version.
* If the object is not loaded in the current transaction and it is not
* dirtied, the object is refreshed from the latest version.
* Otherwise, the loaded object copy is returned to the program.
*
* OCI_PINOPT_LATEST pins the latest copy of an object. The object copy is
* pinned using the following criteria:
* If the object copy is not loaded, load it from the persistent store.
* If the object copy is loaded and dirtied, it is returned to the program.
* Otherwise, the loaded object copy is refreshed from the persistent store.
*/
/*--------------------------- OBJECT LOCK OPTION ----------------------------*/
enum OCILockOpt
{
/* 0 = uninitialized */
OCI_LOCK_NONE = 1, /* null (same as no lock) */
OCI_LOCK_X = 2, /* exclusive lock */
OCI_LOCK_X_NOWAIT = 3 /* exclusive lock, do not wait */
};
typedef enum OCILockOpt OCILockOpt;
/*
* OCILockOpt - OCI object LOCK Option
*
* This option is used to specify the locking preferences when an object is
* loaded from the server.
*/
/*------------------------- OBJECT MODIFYING OPTION -------------------------*/
enum OCIMarkOpt
{
/* 0 = uninitialized */
OCI_MARK_DEFAULT = 1, /* default (the same as OCI_MARK_NONE) */
OCI_MARK_NONE = OCI_MARK_DEFAULT, /* object has not been modified */
OCI_MARK_UPDATE /* object is to be updated */
};
typedef enum OCIMarkOpt OCIMarkOpt;
/*
* OCIMarkOpt - OCI object Mark option
*
* When the object is marked updated, the client has to specify how the
* object is intended to be changed.
*/
/*-------------------------- OBJECT Duration --------------------------------*/
typedef ub2 OCIDuration;
#define OCI_DURATION_INVALID 0xFFFF /* Invalid duration */
#define OCI_DURATION_BEGIN (OCIDuration)10
/* beginning sequence of duration */
#define OCI_DURATION_NULL (OCIDuration)(OCI_DURATION_BEGIN-1)
/* null duration */
#define OCI_DURATION_DEFAULT (OCIDuration)(OCI_DURATION_BEGIN-2) /* default */
#define OCI_DURATION_USER_CALLBACK (OCIDuration)(OCI_DURATION_BEGIN-3)
#define OCI_DURATION_NEXT (OCIDuration)(OCI_DURATION_BEGIN-4)
/* next special duration */
#define OCI_DURATION_SESSION (OCIDuration)(OCI_DURATION_BEGIN)
/* the end of user session */
#define OCI_DURATION_TRANS (OCIDuration)(OCI_DURATION_BEGIN+1)
/* the end of user transaction */
/******************************************************************************
** DO NOT USE OCI_DURATION_CALL. IT IS UNSUPPORTED **
** WILL BE REMOVED/CHANGED IN A FUTURE RELEASE **
******************************************************************************/
#define OCI_DURATION_CALL (OCIDuration)(OCI_DURATION_BEGIN+2)
/* the end of user client/server call */
#define OCI_DURATION_STATEMENT (OCIDuration)(OCI_DURATION_BEGIN+3)
/* This is to be used only during callouts. It is similar to that
of OCI_DURATION_CALL, but lasts only for the duration of a callout.
Its heap is from PGA */
#define OCI_DURATION_CALLOUT (OCIDuration)(OCI_DURATION_BEGIN+4)
#define OCI_DURATION_LAST OCI_DURATION_CALLOUT
/* last of predefined durations */
/* This is not being treated as other predefined durations such as
SESSION, CALL etc, because this would not have an entry in the duration
table and its functionality is primitive such that only allocate, free,
resize memory are allowed, but one cannot create subduration out of this
*/
#define OCI_DURATION_PROCESS (OCIDuration)(OCI_DURATION_BEGIN-5)
/*
* OCIDuration - OCI object duration
*
* A client can specify the duration of which an object is pinned (pin
* duration) and the duration of which the object is in memory (allocation
* duration). If the objects are still pinned at the end of the pin duration,
* the object cache manager will automatically unpin the objects for the
* client. If the objects still exist at the end of the allocation duration,
* the object cache manager will automatically free the objects for the client.
*
* Objects that are pinned with the option OCI_DURATION_TRANS will get unpinned
* automatically at the end of the current transaction.
*
* Objects that are pinned with the option OCI_DURATION_SESSION will get
* unpinned automatically at the end of the current session (connection).
*
* The option OCI_DURATION_NULL is used when the client does not want to set
* the pin duration. If the object is already loaded into the cache, then the
* pin duration will remain the same. If the object is not yet loaded, the
* pin duration of the object will be set to OCI_DURATION_DEFAULT.
*/
/*----------------------------- OBJECT PROPERTY -----------------------------*/
/******************************************************************************
** DO NOT USE OCIObjectProperty. IT IS UNSUPPORTED **
** WILL BE REMOVED/CHANGED IN A FUTURE RELEASE **
******************************************************************************/
enum OCIObjectProperty
{
/* 0 = uninitialized */
OCI_OBJECTPROP_DIRTIED = 1, /* dirty objects */
OCI_OBJECTPROP_LOADED, /* objects loaded in the transaction */
OCI_OBJECTPROP_LOCKED /* locked objects */
};
typedef enum OCIObjectProperty OCIObjectProperty;
/*
* OCIObjectProperty -- OCI Object Property
* This specifies the properties of objects in the object cache.
*/
/*------------------------- CACHE REFRESH OPTION ---------------------------*/
enum OCIRefreshOpt
{
/* 0 = uninitialized */
OCI_REFRESH_LOADED = 1 /* refresh objects loaded in the transaction */
};
typedef enum OCIRefreshOpt OCIRefreshOpt;
/*
* OCIRefreshOpt - OCI cache Refresh Option
* This option is used to specify the set of objects to be refreshed.
*
* OCI_REFRESH_LOAD refreshes the objects that are loaded in the current
* transaction.
*/
/*-------------------------------- OBJECT EVENT -----------------------------*/
/******************************************************************************
** DO NOT USE OCIObjectEvent. IT IS UNSUPPORTED **
** WILL BE REMOVED/CHANGED IN A FUTURE RELEASE **
******************************************************************************/
enum OCIObjectEvent
{
/* 0 = uninitialized */
OCI_OBJECTEVENT_BEFORE_FLUSH = 1, /* before flushing the cache */
OCI_OBJECTEVENT_AFTER_FLUSH, /* after flushing the cache */
OCI_OBJECTEVENT_BEFORE_REFRESH, /* before refreshing the cache */
OCI_OBJECTEVENT_AFTER_REFRESH, /* after refreshing the cache */
OCI_OBJECTEVENT_WHEN_MARK_UPDATED, /* when an object is marked updated */
OCI_OBJECTEVENT_WHEN_MARK_DELETED, /* when an object is marked deleted */
OCI_OBJECTEVENT_WHEN_UNMARK, /* when an object is being unmarked */
OCI_OBJECTEVENT_WHEN_LOCK /* when an object is being locked */
};
typedef enum OCIObjectEvent OCIObjectEvent;
/*
* OCIObjectEvent -- OCI Object Event
* This specifies the kind of event that is supported by the object
* cache. The program can register a callback that is invoked when the
* specified event occurs.
*/
/*----------------------------- OBJECT COPY OPTION --------------------------*/
#define OCI_OBJECTCOPY_NOREF (ub1)0x01
/*
* OCIObjectCopyFlag - Object copy flag
*
* If OCI_OBJECTCOPY_NOREF is specified when copying an instance, the
* reference and lob will not be copied to the target instance.
*/
/*----------------------------- OBJECT FREE OPTION --------------------------*/
#define OCI_OBJECTFREE_FORCE (ub2)0x0001
#define OCI_OBJECTFREE_NONULL (ub2)0x0002
#define OCI_OBJECTFREE_HEADER (ub2)0x0004
/*
* OCIObjectFreeFlag - Object free flag
*
* If OCI_OBJECTCOPY_FORCE is specified when freeing an instance, the instance
* is freed regardless it is pinned or diritied.
* If OCI_OBJECTCOPY_NONULL is specified when freeing an instance, the null
* structure is not freed.
*/
/*----------------------- OBJECT PROPERTY ID -------------------------------*/
typedef ub1 OCIObjectPropId;
#define OCI_OBJECTPROP_LIFETIME 1 /* persistent or transient or value */
#define OCI_OBJECTPROP_SCHEMA 2 /* schema name of table containing object */
#define OCI_OBJECTPROP_TABLE 3 /* table name of table containing object */
#define OCI_OBJECTPROP_PIN_DURATION 4 /* pin duartion of object */
#define OCI_OBJECTPROP_ALLOC_DURATION 5 /* alloc duartion of object */
#define OCI_OBJECTPROP_LOCK 6 /* lock status of object */
#define OCI_OBJECTPROP_MARKSTATUS 7 /* mark status of object */
#define OCI_OBJECTPROP_VIEW 8 /* is object a view object or not? */
/*
* OCIObjectPropId - OCI Object Property Id
* Identifies the different properties of objects.
*/
/*----------------------- OBJECT LIFETIME ----------------------------------*/
enum OCIObjectLifetime
{
/* 0 = uninitialized */
OCI_OBJECT_PERSISTENT = 1, /* persistent object */
OCI_OBJECT_TRANSIENT, /* transient object */
OCI_OBJECT_VALUE /* value object */
};
typedef enum OCIObjectLifetime OCIObjectLifetime;
/*
* OCIObjectLifetime - OCI Object Lifetime
* Classifies objects depending upon the lifetime and referenceability
* of the object.
*/
/*----------------------- OBJECT MARK STATUS -------------------------------*/
typedef uword OCIObjectMarkStatus;
#define OCI_OBJECT_NEW 0x0001 /* new object */
#define OCI_OBJECT_DELETED 0x0002 /* object marked deleted */
#define OCI_OBJECT_UPDATED 0x0004 /* object marked updated */
/*
* OCIObjectMarkStatus - OCI Object Mark Status
* Status of the object - new or updated or deleted
*/
/* macros to test the object mark status */
#define OCI_OBJECT_IS_UPDATED(flag) bit((flag), OCI_OBJECT_UPDATED)
#define OCI_OBJECT_IS_DELETED(flag) bit((flag), OCI_OBJECT_DELETED)
#define OCI_OBJECT_IS_NEW(flag) bit((flag), OCI_OBJECT_NEW)
#define OCI_OBJECT_IS_DIRTY(flag) \
bit((flag), OCI_OBJECT_UPDATED|OCI_OBJECT_NEW|OCI_OBJECT_DELETED)
/*---------------------------------------------------------------------------*/
/* TYPE MANAGER */
/*---------------------------------------------------------------------------*/
/*------------------------------ TYPE CODE ----------------------------------*/
/*
* Type manager typecodes
*
* These are typecodes designed to be used with the type manager;
* they also include longer, more readable versions of existing SQLT names.
* Those types that are directly related to existing SQLT types are #define'd
* to their SQLT equivalents.
*
* The type manager typecodes are designed to be useable for all OCI calls.
* They are in the range from 192 to 320 for typecodes, so as not to conflict
* with existing OCI SQLT typecodes (see ocidfn.h).
*/
#define OCI_TYPECODE_REF SQLT_REF /* SQL/OTS OBJECT REFERENCE */
#define OCI_TYPECODE_DATE SQLT_DAT /* SQL DATE OTS DATE */
#define OCI_TYPECODE_SIGNED8 27 /* SQL SIGNED INTEGER(8) OTS SINT8 */
#define OCI_TYPECODE_SIGNED16 28 /* SQL SIGNED INTEGER(16) OTS SINT16 */
#define OCI_TYPECODE_SIGNED32 29 /* SQL SIGNED INTEGER(32) OTS SINT32 */
#define OCI_TYPECODE_REAL 21 /* SQL REAL OTS SQL_REAL */
#define OCI_TYPECODE_DOUBLE 22 /* SQL DOUBLE PRECISION OTS SQL_DOUBLE */
#define OCI_TYPECODE_BFLOAT SQLT_IBFLOAT /* Binary float */
#define OCI_TYPECODE_BDOUBLE SQLT_IBDOUBLE /* Binary double */
#define OCI_TYPECODE_FLOAT SQLT_FLT /* SQL FLOAT(P) OTS FLOAT(P) */
#define OCI_TYPECODE_NUMBER SQLT_NUM/* SQL NUMBER(P S) OTS NUMBER(P S) */
#define OCI_TYPECODE_DECIMAL SQLT_PDN
/* SQL DECIMAL(P S) OTS DECIMAL(P S) */
#define OCI_TYPECODE_UNSIGNED8 SQLT_BIN
/* SQL UNSIGNED INTEGER(8) OTS UINT8 */
#define OCI_TYPECODE_UNSIGNED16 25 /* SQL UNSIGNED INTEGER(16) OTS UINT16 */
#define OCI_TYPECODE_UNSIGNED32 26 /* SQL UNSIGNED INTEGER(32) OTS UINT32 */
#define OCI_TYPECODE_OCTET 245 /* SQL ??? OTS OCTET */
#define OCI_TYPECODE_SMALLINT 246 /* SQL SMALLINT OTS SMALLINT */
#define OCI_TYPECODE_INTEGER SQLT_INT /* SQL INTEGER OTS INTEGER */
#define OCI_TYPECODE_RAW SQLT_LVB /* SQL RAW(N) OTS RAW(N) */
#define OCI_TYPECODE_PTR 32 /* SQL POINTER OTS POINTER */
#define OCI_TYPECODE_VARCHAR2 SQLT_VCS
/* SQL VARCHAR2(N) OTS SQL_VARCHAR2(N) */
#define OCI_TYPECODE_CHAR SQLT_AFC /* SQL CHAR(N) OTS SQL_CHAR(N) */
#define OCI_TYPECODE_VARCHAR SQLT_CHR
/* SQL VARCHAR(N) OTS SQL_VARCHAR(N) */
#define OCI_TYPECODE_MLSLABEL SQLT_LAB /* OTS MLSLABEL */
#define OCI_TYPECODE_VARRAY 247 /* SQL VARRAY OTS PAGED VARRAY */
#define OCI_TYPECODE_TABLE 248 /* SQL TABLE OTS MULTISET */
#define OCI_TYPECODE_OBJECT SQLT_NTY /* SQL/OTS NAMED OBJECT TYPE */
#define OCI_TYPECODE_OPAQUE 58 /* SQL/OTS Opaque Types */
#define OCI_TYPECODE_NAMEDCOLLECTION SQLT_NCO
/* SQL/OTS NAMED COLLECTION TYPE */
#define OCI_TYPECODE_BLOB SQLT_BLOB /* SQL/OTS BINARY LARGE OBJECT */
#define OCI_TYPECODE_BFILE SQLT_BFILE /* SQL/OTS BINARY FILE OBJECT */
#define OCI_TYPECODE_CLOB SQLT_CLOB /* SQL/OTS CHARACTER LARGE OBJECT */
#define OCI_TYPECODE_CFILE SQLT_CFILE /* SQL/OTS CHARACTER FILE OBJECT */
/* the following are ANSI datetime datatypes added in 8.1 */
#define OCI_TYPECODE_TIME SQLT_TIME /* SQL/OTS TIME */
#define OCI_TYPECODE_TIME_TZ SQLT_TIME_TZ /* SQL/OTS TIME_TZ */
#define OCI_TYPECODE_TIMESTAMP SQLT_TIMESTAMP /* SQL/OTS TIMESTAMP */
#define OCI_TYPECODE_TIMESTAMP_TZ SQLT_TIMESTAMP_TZ /* SQL/OTS TIMESTAMP_TZ */
#define OCI_TYPECODE_TIMESTAMP_LTZ SQLT_TIMESTAMP_LTZ /* TIMESTAMP_LTZ */
#define OCI_TYPECODE_INTERVAL_YM SQLT_INTERVAL_YM /* SQL/OTS INTRVL YR-MON */
#define OCI_TYPECODE_INTERVAL_DS SQLT_INTERVAL_DS /* SQL/OTS INTRVL DAY-SEC */
#define OCI_TYPECODE_UROWID SQLT_RDD /* Urowid type */
#define OCI_TYPECODE_OTMFIRST 228 /* first Open Type Manager typecode */
#define OCI_TYPECODE_OTMLAST 320 /* last OTM typecode */
#define OCI_TYPECODE_SYSFIRST 228 /* first OTM system type (internal) */
#define OCI_TYPECODE_SYSLAST 235 /* last OTM system type (internal) */
#define OCI_TYPECODE_PLS_INTEGER 266 /* type code for PLS_INTEGER */
/* the following are PL/SQL-only internal. They should not be used */
#define OCI_TYPECODE_ITABLE SQLT_TAB /* PLSQL indexed table */
#define OCI_TYPECODE_RECORD SQLT_REC /* PLSQL record */
#define OCI_TYPECODE_BOOLEAN SQLT_BOL /* PLSQL boolean */
/* NOTE : The following NCHAR related codes are just short forms for saying
OCI_TYPECODE_VARCHAR2 with a charset form of SQLCS_NCHAR. These codes are
intended for use in the OCIAnyData API only and nowhere else. */
#define OCI_TYPECODE_NCHAR 286
#define OCI_TYPECODE_NVARCHAR2 287
#define OCI_TYPECODE_NCLOB 288
/* To indicate absence of typecode being specified */
#define OCI_TYPECODE_NONE 0
/* To indicate error has to be taken from error handle - reserved for
sqlplus use */
#define OCI_TYPECODE_ERRHP 283
/* The OCITypeCode type is interchangeable with the existing SQLT type
which is a ub2 */
typedef ub2 OCITypeCode;
/*----------------------- GET OPTIONS FOR TDO ------------------------------*/
enum OCITypeGetOpt
{
OCI_TYPEGET_HEADER,
/* load only the header portion of the TDO when getting type */
OCI_TYPEGET_ALL /* load all attribute and method descriptors as well */
};
typedef enum OCITypeGetOpt OCITypeGetOpt;
/*
* OCITypeGetOpt
*
* This is the flag passed to OCIGetTypeArray() to indicate how the TDO is
* going to be loaded into the object cache.
* OCI_TYPEGET_HEADER implies that only the header portion is to be loaded
* initially, with the rest loaded in on a 'lazy' basis. Only the header is
* needed for PL/SQL and OCI operations. OCI_TYPEGET_ALL implies that ALL
* the attributes and methods belonging to a TDO will be loaded into the
* object cache in one round trip. Hence it will take much longer to execute,
* but will ensure that no more loading needs to be done when pinning ADOs
* etc. This is only needed if your code needs to examine and manipulate
* attribute and method information.
*
* The default is OCI_TYPEGET_HEADER.
*/
/*------------------------ TYPE ENCAPSULTATION LEVEL ------------------------*/
enum OCITypeEncap
{
/* 0 = uninitialized */
OCI_TYPEENCAP_PRIVATE, /* private: only internally visible */
OCI_TYPEENCAP_PUBLIC /* public: visible to both internally and externally */
};
typedef enum OCITypeEncap OCITypeEncap;
/*
* OCITypeEncap - OCI Encapsulation Level
*/
/*---------------------------- TYPE METHOD FLAGS ----------------------------*/
enum OCITypeMethodFlag
{
OCI_TYPEMETHOD_INLINE = 0x0001, /* inline */
OCI_TYPEMETHOD_CONSTANT = 0x0002, /* constant */
OCI_TYPEMETHOD_VIRTUAL = 0x0004, /* virtual */
OCI_TYPEMETHOD_CONSTRUCTOR = 0x0008, /* constructor */
OCI_TYPEMETHOD_DESTRUCTOR = 0x0010, /* destructor */
OCI_TYPEMETHOD_OPERATOR = 0x0020, /* operator */
OCI_TYPEMETHOD_SELFISH = 0x0040, /* selfish method (generic otherwise) */
OCI_TYPEMETHOD_MAP = 0x0080, /* map (relative ordering) */
OCI_TYPEMETHOD_ORDER = 0x0100, /* order (relative ordering) */
/* OCI_TYPEMETHOD_MAP and OCI_TYPEMETHOD_ORDER are mutually exclusive */
OCI_TYPEMETHOD_RNDS= 0x0200, /* Read no Data State (default) */
OCI_TYPEMETHOD_WNDS= 0x0400, /* Write no Data State */
OCI_TYPEMETHOD_RNPS= 0x0800, /* Read no Process State */
OCI_TYPEMETHOD_WNPS= 0x1000, /* Write no Process State */
OCI_TYPEMETHOD_ABSTRACT = 0x2000, /* abstract (not instantiable) method */
OCI_TYPEMETHOD_OVERRIDING = 0x4000, /* overriding method */
OCI_TYPEMETHOD_PIPELINED = 0x8000 /* method is pipelined */
};
typedef enum OCITypeMethodFlag OCITypeMethodFlag;
/* macros to test the type method flags */
#define OCI_METHOD_IS_INLINE(flag) bit((flag), OCI_TYPEMETHOD_INLINE)
#define OCI_METHOD_IS_CONSTANT(flag) bit((flag), OCI_TYPEMETHOD_CONSTANT)
#define OCI_METHOD_IS_VIRTUAL(flag) bit((flag), OCI_TYPEMETHOD_VIRTUAL)
#define OCI_METHOD_IS_CONSTRUCTOR(flag) bit((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
#define OCI_METHOD_IS_DESTRUCTOR(flag) bit((flag), OCI_TYPEMETHOD_DESTRUCTOR)
#define OCI_METHOD_IS_OPERATOR(flag) bit((flag), OCI_TYPEMETHOD_OPERATOR)
#define OCI_METHOD_IS_SELFISH(flag) bit((flag), OCI_TYPEMETHOD_SELFISH)
#define OCI_METHOD_IS_MAP(flag) bit((flag), OCI_TYPEMETHOD_MAP)
#define OCI_METHOD_IS_ORDER(flag) bit((flag), OCI_TYPEMETHOD_ORDER)
#define OCI_METHOD_IS_RNDS(flag) bit((flag), OCI_TYPEMETHOD_RNDS)
#define OCI_METHOD_IS_WNDS(flag) bit((flag), OCI_TYPEMETHOD_WNDS)
#define OCI_METHOD_IS_RNPS(flag) bit((flag), OCI_TYPEMETHOD_RNPS)
#define OCI_METHOD_IS_WNPS(flag) bit((flag), OCI_TYPEMETHOD_WNPS)
#define OCI_METHOD_IS_ABSTRACT(flag) bit((flag), OCI_TYPEMETHOD_ABSTRACT)
#define OCI_METHOD_IS_OVERRIDING(flag) bit((flag), OCI_TYPEMETHOD_OVERRIDING)
#define OCI_METHOD_IS_PIPELINED(flag) bit((flag), OCI_TYPEMETHOD_PIPELINED)
#define OCI_TYPEMETHOD_IS_INLINE(flag) bit((flag), OCI_TYPEMETHOD_INLINE)
#define OCI_TYPEMETHOD_IS_CONSTANT(flag) bit((flag), OCI_TYPEMETHOD_CONSTANT)
#define OCI_TYPEMETHOD_IS_VIRTUAL(flag) bit((flag), OCI_TYPEMETHOD_VIRTUAL)
#define OCI_TYPEMETHOD_IS_CONSTRUCTOR(flag) \
bit((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
#define OCI_TYPEMETHOD_IS_DESTRUCTOR(flag) \
bit((flag), OCI_TYPEMETHOD_DESTRUCTOR)
#define OCI_TYPEMETHOD_IS_OPERATOR(flag) bit((flag), OCI_TYPEMETHOD_OPERATOR)
#define OCI_TYPEMETHOD_IS_SELFISH(flag) bit((flag), OCI_TYPEMETHOD_SELFISH)
#define OCI_TYPEMETHOD_IS_MAP(flag) bit((flag), OCI_TYPEMETHOD_MAP)
#define OCI_TYPEMETHOD_IS_ORDER(flag) bit((flag), OCI_TYPEMETHOD_ORDER)
#define OCI_TYPEMETHOD_IS_RNDS(flag) bit((flag), OCI_TYPEMETHOD_RNDS)
#define OCI_TYPEMETHOD_IS_WNDS(flag) bit((flag), OCI_TYPEMETHOD_WNDS)
#define OCI_TYPEMETHOD_IS_RNPS(flag) bit((flag), OCI_TYPEMETHOD_RNPS)
#define OCI_TYPEMETHOD_IS_WNPS(flag) bit((flag), OCI_TYPEMETHOD_WNPS)
#define OCI_TYPEMETHOD_IS_ABSTRACT(flag) bit((flag), OCI_TYPEMETHOD_ABSTRACT)
#define OCI_TYPEMETHOD_IS_OVERRIDING(flag) \
bit((flag), OCI_TYPEMETHOD_OVERRIDING)
#define OCI_TYPEMETHOD_IS_PIPELINED(flag) bit((flag), OCI_TYPEMETHOD_PIPELINED)
/* macros to set the type method flags */
#define OCI_TYPEMETHOD_SET_INLINE(flag) bis((flag), OCI_TYPEMETHOD_INLINE)
#define OCI_TYPEMETHOD_SET_CONSTANT(flag) bis((flag), OCI_TYPEMETHOD_CONSTANT)
#define OCI_TYPEMETHOD_SET_VIRTUAL(flag) bis((flag), OCI_TYPEMETHOD_VIRTUAL)
#define OCI_TYPEMETHOD_SET_CONSTRUCTOR(flag) \
bis((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
#define OCI_TYPEMETHOD_SET_DESTRUCTOR(flag) \
bis((flag), OCI_TYPEMETHOD_DESTRUCTOR)
#define OCI_TYPEMETHOD_SET_OPERATOR(flag) bis((flag), OCI_TYPEMETHOD_OPERATOR)
#define OCI_TYPEMETHOD_SET_SELFISH(flag) bis((flag), OCI_TYPEMETHOD_SELFISH)
#define OCI_TYPEMETHOD_SET_MAP(flag) bis((flag), OCI_TYPEMETHOD_MAP)
#define OCI_TYPEMETHOD_SET_ORDER(flag) bis((flag), OCI_TYPEMETHOD_ORDER)
#define OCI_TYPEMETHOD_SET_RNDS(flag) bis((flag), OCI_TYPEMETHOD_RNDS)
#define OCI_TYPEMETHOD_SET_WNDS(flag) bis((flag), OCI_TYPEMETHOD_WNDS)
#define OCI_TYPEMETHOD_SET_RNPS(flag) bis((flag), OCI_TYPEMETHOD_RNPS)
#define OCI_TYPEMETHOD_SET_WNPS(flag) bis((flag), OCI_TYPEMETHOD_WNPS)
/* macros to clear the type method flags */
#define OCI_TYPEMETHOD_CLEAR_INLINE(flag) bic((flag), OCI_TYPEMETHOD_INLINE)
#define OCI_TYPEMETHOD_CLEAR_CONSTANT(flag) \
bic((flag), OCI_TYPEMETHOD_CONSTANT)
#define OCI_TYPEMETHOD_CLEAR_VIRTUAL(flag) bic((flag), OCI_TYPEMETHOD_VIRTUAL)
#define OCI_TYPEMETHOD_CLEAR_CONSTRUCTOR(flag) \
bic((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
#define OCI_TYPEMETHOD_CLEAR_DESTRUCTOR(flag) \
bic((flag), OCI_TYPEMETHOD_DESTRUCTOR)
#define OCI_TYPEMETHOD_CLEAR_OPERATOR(flag) \
bic((flag), OCI_TYPEMETHOD_OPERATOR)
#define OCI_TYPEMETHOD_CLEAR_SELFISH(flag) bic((flag), OCI_TYPEMETHOD_SELFISH)
#define OCI_TYPEMETHOD_CLEAR_MAP(flag) bic((flag), OCI_TYPEMETHOD_MAP)
#define OCI_TYPEMETHOD_CLEAR_ORDER(flag) bic((flag), OCI_TYPEMETHOD_ORDER)
#define OCI_TYPEMETHOD_CLEAR_RNDS(flag) bic((flag), OCI_TYPEMETHOD_RNDS)
#define OCI_TYPEMETHOD_CLEAR_WNDS(flag) bic((flag), OCI_TYPEMETHOD_WNDS)
#define OCI_TYPEMETHOD_CLEAR_RNPS(flag) bic((flag), OCI_TYPEMETHOD_RNPS)
#define OCI_TYPEMETHOD_CLEAR_WNPS(flag) bic((flag), OCI_TYPEMETHOD_WNPS)
/*--------------------------- TYPE PARAMETER MODE ---------------------------*/
enum OCITypeParamMode
{
/* PL/SQL starts this from 0 */
OCI_TYPEPARAM_IN = 0, /* in */
OCI_TYPEPARAM_OUT, /* out */
OCI_TYPEPARAM_INOUT, /* in-out */
OCI_TYPEPARAM_BYREF, /* call by reference (implicitly in-out) */
OCI_TYPEPARAM_OUTNCPY, /* OUT with NOCOPY modifier */
OCI_TYPEPARAM_INOUTNCPY /* IN OUT with NOCOPY modifier */
};
typedef enum OCITypeParamMode OCITypeParamMode;
/*-------------------------------- DEFAULTS ---------------------------------*/
/* default binary and decimal precision and scale */
#define OCI_NUMBER_DEFAULTPREC ((ub1)0) /* no precision specified */
#define OCI_NUMBER_DEFAULTSCALE ((sb1)MAXSB1MINVAL)
/* no binary/decimal scale specified */
/* default maximum length for varrays and vstrings (used in sql.bsq) */
#define OCI_VARRAY_MAXSIZE 4000
/* default maximum number of elements for a varray */
#define OCI_STRING_MAXLEN 4000 /* default maximum length of a vstring */
/*---------------------------------------------------------------------------*/
/* This set of macro is used only in beta2. They should be removed as soon as
* PLSQL has made the changes of not using these macros.
*/
/* Special duration for allocating memory only. No instance can be allocated
* given these durations.
*/
#define OCICoherency OCIRefreshOpt
#define OCI_COHERENCY_NONE (OCIRefreshOpt)2
#define OCI_COHERENCY_NULL (OCIRefreshOpt)4
#define OCI_COHERENCY_ALWAYS (OCIRefreshOpt)5
#endif /* ORO_ORACLE */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,200 @@
/* Copyright (c) 1992, 2006, Oracle. All rights reserved. */
/*
NAME
xa.h - <one-line expansion of the name>
DESCRIPTION
<short description of component this file declares/defines>
PUBLIC FUNCTION(S)
<list of external functions declared/defined - with one-line descriptions>
PRIVATE FUNCTION(S)
<list of static functions defined in .c file - with one-line descriptions>
RETURNS
<function return values, for .c file with single function>
NOTES
<other useful comments, qualifications, etc.>
This is the public XA .h file
MODIFIED (MM/DD/YY)
yohu 08/27/06 - XA/RAC project changes: XAER_AFFINITY
dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
whe 09/01/99 - 976457:check __cplusplus for C++ code
ntang 10/20/98 - Remove TMCACHE & TMFORCL
abhide 08/04/97 - implement xaoforcl
abhide 07/23/97 - XA OTS project changes
schandra 02/20/96 - lint
abhide 04/07/94 - merge changes from branch 1.1.710.1
abhide 02/14/94 - Creation
abhide 02/10/94 - Creation
abhide 02/10/94 - Creation
*/
/*
* xa.h header
* Typed in from X/Open doc of March 13, 1990
* Updated to Parsippany II draft, March, 1991
* Updated to Co Review draft, 19 Sep 1991
*/
#ifndef XA_H
#define XA_H
/*
* Transaction branch identification: XID and NULLXID:
*/
#define XIDDATASIZE 128 /* size in bytes */
#define MAXGTRIDSIZE 64 /* maximum size in bytes of gtrid */
#define MAXBQUALSIZE 64 /* maximum size in bytes of bqual */
struct xid_t {
long formatID; /* format identifier */
long gtrid_length; /* value from 1 through 64 */
long bqual_length; /* value from 1 through 64 */
char data[XIDDATASIZE];
};
typedef struct xid_t XID;
/*
* A value of -1 in formatID means that the XID is null.
*/
/*
* Declarations of routines by which RMs call TMs:
*/
int ax_reg(int, XID *, long);
int ax_unreg(int, long);
/*
* XA Switch Data Structure
*/
#define RMNAMESZ 32 /* length of resource manager name, */
/* including the null terminator */
#define MAXINFOSIZE 256 /* maximum size in bytes of xa_info strings, */
/* including the null terminator */
struct xa_switch_t {
char name[RMNAMESZ]; /* name of resource manager */
long flags; /* resource manager specific options */
long version; /* must be 0 */
int (*xa_open_entry)(char *, int, long); /*xa_open function pointer*/
int (*xa_close_entry)(char *, int, long); /*xa_close function pointer*/
int (*xa_start_entry)(XID *, int, long); /*xa_start function pointer*/
int (*xa_end_entry)(XID *, int, long); /*xa_end function pointer*/
int (*xa_rollback_entry)(XID *, int, long);
/*xa_rollback function pointer*/
int (*xa_prepare_entry)(XID *, int, long); /*xa_prepare function pointer*/
int (*xa_commit_entry)(XID *, int, long); /*xa_commit function pointer*/
int (*xa_recover_entry)(XID *, long, int, long);
/*xa_recover function pointer*/
int (*xa_forget_entry)(XID *, int, long); /*xa_forget function pointer*/
int (*xa_complete_entry)(int *, int *, int, long);
};
/*
* Flag definition for the RM switch
*/
#define TMNOFLAGS 0x00000000L /* no resource manager features
selected */
#define TMREGISTER 0x00000001L /* resource manager dynamically
registers */
#define TMNOMIGRATE 0x00000002L /* resource manager does not support
association migration */
#define TMUSEASYNC 0x00000004L /* resource manager supports
asynchronous operations */
/*
* Flag definitions for xa_ and ax_ routines
*/
/* Use TMNOFLAGS, defined above, when not specifying other flags */
#define TMASYNC 0x80000000L /* perform routine asynchronously */
#define TMONEPHASE 0x40000000L /* caller is using one-phase commit
optimisation */
#define TMFAIL 0x20000000L /* dissociates caller and marks
transaction branch rollback-only */
#define TMNOWAIT 0x10000000L /* return if blocking condition
exists */
#define TMRESUME 0x08000000L /* caller is resuming association
with suspended transaction branch */
#define TMSUCCESS 0x04000000L /* dissociate caller from transaction
branch */
#define TMSUSPEND 0x02000000L /* caller is suspending, not ending,
association */
#define TMSTARTRSCAN 0x01000000L /* start a recovery scan */
#define TMENDRSCAN 0x00800000L /* end a recovery scan */
#define TMMULTIPLE 0x00400000L /* wait for any asynchronous
operation */
#define TMJOIN 0x00200000L /* caller is joining existing
transaction branch */
#define TMMIGRATE 0x00100000L /* caller intends to perform
migration */
/*
* ax_() return codes (transaction manager reports to resource manager)
*/
#define TM_JOIN 2 /* caller is joining existing transaction
branch */
#define TM_RESUME 1 /* caller is resuming association with
suspended transaction branch */
#define TM_OK 0 /* normal execution */
#define TMER_TMERR -1 /* an error occurred in the transaction
manager */
#define TMER_INVAL -2 /* invalid arguments were given */
#define TMER_PROTO -3 /* routine invoked in an improper context */
/*
* xa_() return codes (resource manager reports to transaction manager)
*/
#define XA_RBBASE 100 /* The inclusive lower bound of the
rollback codes */
#define XA_RBROLLBACK XA_RBBASE /* The rollback was caused by an
unspecified reason */
#define XA_RBCOMMFAIL XA_RBBASE+1 /* The rollback was caused by a
communication failure */
#define XA_RBDEADLOCK XA_RBBASE+2 /* A deadlock was detected */
#define XA_RBINTEGRITY XA_RBBASE+3 /* A condition that violates the
integrity of the resources was
detected */
#define XA_RBOTHER XA_RBBASE+4 /* The resource manager rolled back the
transaction for a reason not on this
list */
#define XA_RBPROTO XA_RBBASE+5 /* A protocal error occurred in the
resource manager */
#define XA_RBTIMEOUT XA_RBBASE+6 /* A transaction branch took too long*/
#define XA_RBTRANSIENT XA_RBBASE+7 /* May retry the transaction branch */
#define XA_RBEND XA_RBTRANSIENT /* The inclusive upper bound of the
rollback codes */
#define XA_NOMIGRATE 9 /* resumption must occur where
suspension occurred */
#define XA_HEURHAZ 8 /* the transaction branch may have been
heuristically completed */
#define XA_HEURCOM 7 /* the transaction branch has been
heuristically comitted */
#define XA_HEURRB 6 /* the transaction branch has been
heuristically rolled back */
#define XA_HEURMIX 5 /* the transaction branch has been
heuristically committed and rolled
back */
#define XA_RETRY 4 /* routine returned with no effect
and may be re-issued */
#define XA_RDONLY 3 /* the transaction was read-only
and has been committed */
#define XA_OK 0 /* normal execution */
#define XAER_ASYNC -2 /* asynchronous operation already
outstanding */
#define XAER_RMERR -3 /* a resource manager error occurred
in the transaction branch */
#define XAER_NOTA -4 /* the XID is not valid */
#define XAER_INVAL -5 /* invalid arguments were given */
#define XAER_PROTO -6 /* routine invoked in an improper
context */
#define XAER_RMFAIL -7 /* resource manager unavailable */
#define XAER_DUPID -8 /* the XID already exists */
#define XAER_OUTSIDE -9 /* resource manager doing work */
/* outside global transaction */
#define XAER_AFFINITY -10 /* XA on RAC: resumption must occur on
RAC instance where the transaction
branch was created */
#endif /* ifndef XA_H */

View File

@ -0,0 +1,290 @@
// pgAPI.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__PGAPI_H__)
#define __PGAPI_H__
#include "SQLAPI.h"
// API header(s)
#include <libpq-fe.h>
#include <libpq-fs.h>
extern void AddPostgreSQLSupport(const SAConnection *pCon);
extern void ReleasePostgreSQLSupport();
typedef PGconn* (*PQconnectStart_t)(const char *conninfo);
typedef PostgresPollingStatusType (*PQconnectPoll_t)(PGconn *conn);
typedef PGconn* (*PQconnectdb_t)(const char *conninfo);
typedef PGconn* (*PQsetdbLogin_t)(const char *pghost, const char *pgport, const char *pgoptions, const char *pgtty,
const char *dbName,
const char *login, const char *pwd);
typedef void (*PQfinish_t)(PGconn *conn);
typedef PQconninfoOption* (*PQconndefaults_t)(void);
typedef void (*PQconninfoFree_t)(PQconninfoOption *connOptions);
typedef int (*PQresetStart_t)(PGconn *conn);
typedef PostgresPollingStatusType (*PQresetPoll_t)(PGconn *conn);
typedef void (*PQreset_t)(PGconn *conn);
typedef int (*PQrequestCancel_t)(PGconn *conn);
typedef PGcancel* (*PQgetCancel_t)(PGconn *conn);
typedef void (*PQfreeCancel_t)(PGcancel *cancel);
typedef int (*PQcancel_t)(PGcancel *cancel, char *errbuf, int errbufsize);
typedef int (*PQserverVersion_t)(const PGconn *conn);
typedef char* (*PQdb_t)(const PGconn *conn);
typedef char* (*PQuser_t)(const PGconn *conn);
typedef char* (*PQpass_t)(const PGconn *conn);
typedef char* (*PQhost_t)(const PGconn *conn);
typedef char* (*PQport_t)(const PGconn *conn);
typedef char* (*PQtty_t)(const PGconn *conn);
typedef char* (*PQoptions_t)(const PGconn *conn);
typedef ConnStatusType (*PQstatus_t)(const PGconn *conn);
typedef char* (*PQerrorMessage_t)(const PGconn *conn);
typedef int (*PQsocket_t)(const PGconn *conn);
typedef int (*PQbackendPID_t)(const PGconn *conn);
typedef int (*PQclientEncoding_t)(const PGconn *conn);
typedef int (*PQsetClientEncoding_t)(PGconn *conn, const char *encoding);
#ifdef USE_SSL
typedef SSL* (*PQgetssl_t)(PGconn *conn);
#endif
typedef void (*PQtrace_t)(PGconn *conn, FILE *debug_port);
typedef void (*PQuntrace_t)(PGconn *conn);
typedef PQnoticeProcessor (*PQsetNoticeProcessor_t)(PGconn *conn, PQnoticeProcessor proc, void *arg);
typedef PGresult* (*PQexec_t)(PGconn *conn, const char *query);
typedef PGnotify* (*PQnotifies_t)(PGconn *conn);
typedef int (*PQsendQuery_t)(PGconn *conn, const char *query);
typedef PGresult* (*PQgetResult_t)(PGconn *conn);
typedef int (*PQisBusy_t)(PGconn *conn);
typedef int (*PQconsumeInput_t)(PGconn *conn);
typedef int (*PQgetline_t)(PGconn *conn, char *string, int length);
typedef int (*PQputline_t)(PGconn *conn, const char *string);
typedef int (*PQgetlineAsync_t)(PGconn *conn, char *buffer, int bufsize);
typedef int (*PQputnbytes_t)(PGconn *conn, const char *buffer, int nbytes);
typedef int (*PQendcopy_t)(PGconn *conn);
typedef int (*PQsetnonblocking_t)(PGconn *conn, int arg);
typedef int (*PQisnonblocking_t)(const PGconn *conn);
typedef int (*PQflush_t)(PGconn *conn);
typedef PGresult* (*PQfn_t)(PGconn *conn, int fnid,
int *result_buf,
int *result_len,
int result_is_int,
const PQArgBlock *args,
int nargs);
typedef ExecStatusType (*PQresultStatus_t)(const PGresult *res);
typedef char* (*PQresStatus_t)(ExecStatusType status);
typedef char* (*PQresultErrorMessage_t)(const PGresult *res);
typedef int (*PQntuples_t)(const PGresult *res);
typedef int (*PQnfields_t)(const PGresult *res);
typedef int (*PQbinaryTuples_t)(const PGresult *res);
typedef char* (*PQfname_t)(const PGresult *res, int field_num);
typedef int (*PQfnumber_t)(const PGresult *res, const char *field_name);
typedef int (*PQfformat_t)(const PGresult *res, int field_num);
typedef Oid (*PQftype_t)(const PGresult *res, int field_num);
typedef int (*PQfsize_t)(const PGresult *res, int field_num);
typedef int (*PQfmod_t)(const PGresult *res, int field_num);
typedef char* (*PQcmdStatus_t)(PGresult *res);
typedef char* (*PQoidStatus_t)(const PGresult *res); /* old and ugly */
typedef Oid (*PQoidValue_t)(const PGresult *res); /* new and improved */
typedef char* (*PQcmdTuples_t)(PGresult *res);
typedef char* (*PQgetvalue_t)(const PGresult *res, int tup_num, int field_num);
typedef int (*PQgetlength_t)(const PGresult *res, int tup_num, int field_num);
typedef int (*PQgetisnull_t)(const PGresult *res, int tup_num, int field_num);
typedef void (*PQclear_t)(PGresult *res);
typedef PGresult* (*PQmakeEmptyPGresult_t)(PGconn *conn, ExecStatusType status);
typedef void (*PQprint_t)(FILE *fout, /* output stream */
const PGresult *res,
const PQprintOpt *ps); /* option structure */
typedef void (*PQdisplayTuples_t)(const PGresult *res,
FILE *fp, /* where to send the
* output */
int fillAlign, /* pad the fields with
* spaces */
const char *fieldSep, /* field separator */
int printHeader, /* display headers? */
int quiet);
typedef void (*PQprintTuples_t)(const PGresult *res,
FILE *fout, /* output stream */
int printAttName, /* print attribute names */
int terseOutput, /* delimiter bars */
int width); /* width of column, if
* 0, use variable width */
typedef int (*lo_open_t)(PGconn *conn, Oid lobjId, int mode);
typedef int (*lo_close_t)(PGconn *conn, int fd);
typedef int (*lo_read_t)(PGconn *conn, int fd, char *buf, size_t len);
typedef int (*lo_write_t)(PGconn *conn, int fd, char *buf, size_t len);
typedef int (*lo_lseek_t)(PGconn *conn, int fd, int offset, int whence);
typedef Oid (*lo_creat_t)(PGconn *conn, int mode);
typedef int (*lo_tell_t)(PGconn *conn, int fd);
typedef int (*lo_unlink_t)(PGconn *conn, Oid lobjId);
typedef Oid (*lo_import_t)(PGconn *conn, const char *filename);
typedef int (*lo_export_t)(PGconn *conn, Oid lobjId, const char *filename);
typedef int (*PQmblen_t)(const unsigned char *s, int encoding);
typedef int (*PQenv2encoding_t)(void);
// new
typedef PGVerbosity (*PQsetErrorVerbosity_t)(PGconn *conn, PGVerbosity verbosity);
typedef char* (*PQresultErrorField_t)(const PGresult *res, int fieldcode);
// escape
typedef size_t (*PQescapeStringConn_t)(PGconn *conn,
char *to, const char *from, size_t length,
int *error);
typedef unsigned char* (*PQescapeByteaConn_t)(PGconn *conn,
const unsigned char *from, size_t from_length,
size_t *to_length);
typedef unsigned char* (*PQunescapeBytea_t)(const unsigned char *strtext,
size_t *retbuflen);
/* These forms are deprecated! */
typedef size_t (*PQescapeString_t)(char *to, const char *from, size_t length);
typedef char* (*PQescapeBytea_t)(const unsigned char *from, size_t from_length,
size_t *to_length);
typedef void (*PQfreemem_t)(void *ptr);
typedef int (*PQputCopyData_t)(PGconn *conn, const char *buffer, int nbytes);
typedef int (*PQputCopyEnd_t)(PGconn *conn, const char *errormsg);
typedef int (*PQgetCopyData_t)(PGconn *conn, char **buffer, int async);
typedef PGPing (*PQping_t)(const char *conninfo);
typedef PGPing (*PQpingParams_t)(const char **keywords,
const char **values, int expand_dbname);
typedef const char* (*pg_encoding_to_char_t)(int encoding);
// API declarations
class SQLAPI_API pgAPI : public saAPI
{
public:
pgAPI();
PQconnectStart_t PQconnectStart;
PQconnectPoll_t PQconnectPoll;
PQconnectdb_t PQconnectdb;
PQsetdbLogin_t PQsetdbLogin;
PQfinish_t PQfinish;
PQconndefaults_t PQconndefaults;
PQconninfoFree_t PQconninfoFree;
PQresetStart_t PQresetStart;
PQresetPoll_t PQresetPoll;
PQreset_t PQreset;
PQrequestCancel_t PQrequestCancel;
PQgetCancel_t PQgetCancel;
PQfreeCancel_t PQfreeCancel;
PQcancel_t PQcancel;
PQserverVersion_t PQserverVersion;
PQdb_t PQdb;
PQuser_t PQuser;
PQpass_t PQpass;
PQhost_t PQhost;
PQport_t PQport;
PQtty_t PQtty;
PQoptions_t PQoptions;
PQstatus_t PQstatus;
PQerrorMessage_t PQerrorMessage;
PQsocket_t PQsocket;
PQbackendPID_t PQbackendPID;
PQclientEncoding_t PQclientEncoding;
PQsetClientEncoding_t PQsetClientEncoding;
#ifdef USE_SSL
PQgetssl_t PQgetssl;
#endif
PQtrace_t PQtrace;
PQuntrace_t PQuntrace;
PQsetNoticeProcessor_t PQsetNoticeProcessor;
PQexec_t PQexec;
PQnotifies_t PQnotifies;
PQsendQuery_t PQsendQuery;
PQgetResult_t PQgetResult;
PQisBusy_t PQisBusy;
PQconsumeInput_t PQconsumeInput;
PQgetline_t PQgetline;
PQputline_t PQputline;
PQgetlineAsync_t PQgetlineAsync;
PQputnbytes_t PQputnbytes;
PQendcopy_t PQendcopy;
PQsetnonblocking_t PQsetnonblocking;
PQisnonblocking_t PQisnonblocking;
PQflush_t PQflush;
PQfn_t PQfn;
PQresultStatus_t PQresultStatus;
PQresStatus_t PQresStatus;
PQresultErrorMessage_t PQresultErrorMessage;
PQntuples_t PQntuples;
PQnfields_t PQnfields;
PQbinaryTuples_t PQbinaryTuples;
PQfname_t PQfname;
PQfnumber_t PQfnumber;
PQfformat_t PQfformat;
PQftype_t PQftype;
PQfsize_t PQfsize;
PQfmod_t PQfmod;
PQcmdStatus_t PQcmdStatus;
PQoidStatus_t PQoidStatus;
PQoidValue_t PQoidValue;
PQcmdTuples_t PQcmdTuples;
PQgetvalue_t PQgetvalue;
PQgetlength_t PQgetlength;
PQgetisnull_t PQgetisnull;
PQclear_t PQclear;
PQmakeEmptyPGresult_t PQmakeEmptyPGresult;
PQprint_t PQprint;
PQdisplayTuples_t PQdisplayTuples;
PQprintTuples_t PQprintTuples;
lo_open_t lo_open;
lo_close_t lo_close;
lo_read_t lo_read;
lo_write_t lo_write;
lo_lseek_t lo_lseek;
lo_creat_t lo_creat;
lo_tell_t lo_tell;
lo_unlink_t lo_unlink;
lo_import_t lo_import;
lo_export_t lo_export;
PQmblen_t PQmblen;
PQenv2encoding_t PQenv2encoding;
// new 3.7.12
PQsetErrorVerbosity_t PQsetErrorVerbosity;
PQresultErrorField_t PQresultErrorField;
// escape
PQescapeStringConn_t PQescapeStringConn;
PQescapeByteaConn_t PQescapeByteaConn;
PQunescapeBytea_t PQunescapeBytea;
// These forms are deprecated!
PQescapeString_t PQescapeString;
PQescapeBytea_t PQescapeBytea;
PQfreemem_t PQfreemem;
PQputCopyData_t PQputCopyData;
PQputCopyEnd_t PQputCopyEnd;
PQgetCopyData_t PQgetCopyData;
PQping_t PQping;
PQpingParams_t PQpingParams;
pg_encoding_to_char_t pg_encoding_to_char;
};
class SQLAPI_API pgConnectionHandles : public saConnectionHandles
{
public:
pgConnectionHandles();
PGconn *conn; // PostgreSQL connection struct
};
class SQLAPI_API pgCommandHandles : public saCommandHandles
{
public:
pgCommandHandles();
PGresult *res; // PostgreSQL result struct
};
extern pgAPI g_pgAPI;
#endif // !defined(__PGAPI_H__)

View File

@ -0,0 +1,587 @@
/*-------------------------------------------------------------------------
*
* libpq-fe.h
* This file contains definitions for structures and
* externs for functions used by frontend postgres applications.
*
* Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/interfaces/libpq/libpq-fe.h
*
*-------------------------------------------------------------------------
*/
#ifndef LIBPQ_FE_H
#define LIBPQ_FE_H
#ifdef __cplusplus
extern "C"
{
#endif
#include <stdio.h>
/*
* postgres_ext.h defines the backend's externally visible types,
* such as Oid.
*/
#include "postgres_ext.h"
/*
* Option flags for PQcopyResult
*/
#define PG_COPYRES_ATTRS 0x01
#define PG_COPYRES_TUPLES 0x02 /* Implies PG_COPYRES_ATTRS */
#define PG_COPYRES_EVENTS 0x04
#define PG_COPYRES_NOTICEHOOKS 0x08
/* Application-visible enum types */
/*
* Although it is okay to add to these lists, values which become unused
* should never be removed, nor should constants be redefined - that would
* break compatibility with existing code.
*/
typedef enum
{
CONNECTION_OK,
CONNECTION_BAD,
/* Non-blocking mode only below here */
/*
* The existence of these should never be relied upon - they should only
* be used for user feedback or similar purposes.
*/
CONNECTION_STARTED, /* Waiting for connection to be made. */
CONNECTION_MADE, /* Connection OK; waiting to send. */
CONNECTION_AWAITING_RESPONSE, /* Waiting for a response from the
* postmaster. */
CONNECTION_AUTH_OK, /* Received authentication; waiting for
* backend startup. */
CONNECTION_SETENV, /* Negotiating environment. */
CONNECTION_SSL_STARTUP, /* Negotiating SSL. */
CONNECTION_NEEDED /* Internal state: connect() needed */
} ConnStatusType;
typedef enum
{
PGRES_POLLING_FAILED = 0,
PGRES_POLLING_READING, /* These two indicate that one may */
PGRES_POLLING_WRITING, /* use select before polling again. */
PGRES_POLLING_OK,
PGRES_POLLING_ACTIVE /* unused; keep for awhile for backwards
* compatibility */
} PostgresPollingStatusType;
typedef enum
{
PGRES_EMPTY_QUERY = 0, /* empty query string was executed */
PGRES_COMMAND_OK, /* a query command that doesn't return
* anything was executed properly by the
* backend */
PGRES_TUPLES_OK, /* a query command that returns tuples was
* executed properly by the backend, PGresult
* contains the result tuples */
PGRES_COPY_OUT, /* Copy Out data transfer in progress */
PGRES_COPY_IN, /* Copy In data transfer in progress */
PGRES_BAD_RESPONSE, /* an unexpected response was recv'd from the
* backend */
PGRES_NONFATAL_ERROR, /* notice or warning message */
PGRES_FATAL_ERROR, /* query failed */
PGRES_COPY_BOTH, /* Copy In/Out data transfer in progress */
PGRES_SINGLE_TUPLE /* single tuple from larger resultset */
} ExecStatusType;
typedef enum
{
PQTRANS_IDLE, /* connection idle */
PQTRANS_ACTIVE, /* command in progress */
PQTRANS_INTRANS, /* idle, within transaction block */
PQTRANS_INERROR, /* idle, within failed transaction */
PQTRANS_UNKNOWN /* cannot determine status */
} PGTransactionStatusType;
typedef enum
{
PQERRORS_TERSE, /* single-line error messages */
PQERRORS_DEFAULT, /* recommended style */
PQERRORS_VERBOSE /* all the facts, ma'am */
} PGVerbosity;
/*
* PGPing - The ordering of this enum should not be altered because the
* values are exposed externally via pg_isready.
*/
typedef enum
{
PQPING_OK, /* server is accepting connections */
PQPING_REJECT, /* server is alive but rejecting connections */
PQPING_NO_RESPONSE, /* could not establish connection */
PQPING_NO_ATTEMPT /* connection not attempted (bad params) */
} PGPing;
/* PGconn encapsulates a connection to the backend.
* The contents of this struct are not supposed to be known to applications.
*/
typedef struct pg_conn PGconn;
/* PGresult encapsulates the result of a query (or more precisely, of a single
* SQL command --- a query string given to PQsendQuery can contain multiple
* commands and thus return multiple PGresult objects).
* The contents of this struct are not supposed to be known to applications.
*/
typedef struct pg_result PGresult;
/* PGcancel encapsulates the information needed to cancel a running
* query on an existing connection.
* The contents of this struct are not supposed to be known to applications.
*/
typedef struct pg_cancel PGcancel;
/* PGnotify represents the occurrence of a NOTIFY message.
* Ideally this would be an opaque typedef, but it's so simple that it's
* unlikely to change.
* NOTE: in Postgres 6.4 and later, the be_pid is the notifying backend's,
* whereas in earlier versions it was always your own backend's PID.
*/
typedef struct pgNotify
{
char *relname; /* notification condition name */
int be_pid; /* process ID of notifying server process */
char *extra; /* notification parameter */
/* Fields below here are private to libpq; apps should not use 'em */
struct pgNotify *next; /* list link */
} PGnotify;
/* Function types for notice-handling callbacks */
typedef void (*PQnoticeReceiver) (void *arg, const PGresult *res);
typedef void (*PQnoticeProcessor) (void *arg, const char *message);
/* Print options for PQprint() */
typedef char pqbool;
typedef struct _PQprintOpt
{
pqbool header; /* print output field headings and row count */
pqbool align; /* fill align the fields */
pqbool standard; /* old brain dead format */
pqbool html3; /* output html tables */
pqbool expanded; /* expand tables */
pqbool pager; /* use pager for output if needed */
char *fieldSep; /* field separator */
char *tableOpt; /* insert to HTML <table ...> */
char *caption; /* HTML <caption> */
char **fieldName; /* null terminated array of replacement field
* names */
} PQprintOpt;
/* ----------------
* Structure for the conninfo parameter definitions returned by PQconndefaults
* or PQconninfoParse.
*
* All fields except "val" point at static strings which must not be altered.
* "val" is either NULL or a malloc'd current-value string. PQconninfoFree()
* will release both the val strings and the PQconninfoOption array itself.
* ----------------
*/
typedef struct _PQconninfoOption
{
char *keyword; /* The keyword of the option */
char *envvar; /* Fallback environment variable name */
char *compiled; /* Fallback compiled in default value */
char *val; /* Option's current value, or NULL */
char *label; /* Label for field in connect dialog */
char *dispchar; /* Indicates how to display this field in a
* connect dialog. Values are: "" Display
* entered value as is "*" Password field -
* hide value "D" Debug option - don't show
* by default */
int dispsize; /* Field size in characters for dialog */
} PQconninfoOption;
/* ----------------
* PQArgBlock -- structure for PQfn() arguments
* ----------------
*/
typedef struct
{
int len;
int isint;
union
{
int *ptr; /* can't use void (dec compiler barfs) */
int integer;
} u;
} PQArgBlock;
/* ----------------
* PGresAttDesc -- Data about a single attribute (column) of a query result
* ----------------
*/
typedef struct pgresAttDesc
{
char *name; /* column name */
Oid tableid; /* source table, if known */
int columnid; /* source column, if known */
int format; /* format code for value (text/binary) */
Oid typid; /* type id */
int typlen; /* type size */
int atttypmod; /* type-specific modifier info */
} PGresAttDesc;
/* ----------------
* Exported functions of libpq
* ----------------
*/
/* === in fe-connect.c === */
/* make a new client connection to the backend */
/* Asynchronous (non-blocking) */
extern PGconn *PQconnectStart(const char *conninfo);
extern PGconn *PQconnectStartParams(const char *const * keywords,
const char *const * values, int expand_dbname);
extern PostgresPollingStatusType PQconnectPoll(PGconn *conn);
/* Synchronous (blocking) */
extern PGconn *PQconnectdb(const char *conninfo);
extern PGconn *PQconnectdbParams(const char *const * keywords,
const char *const * values, int expand_dbname);
extern PGconn *PQsetdbLogin(const char *pghost, const char *pgport,
const char *pgoptions, const char *pgtty,
const char *dbName,
const char *login, const char *pwd);
#define PQsetdb(M_PGHOST,M_PGPORT,M_PGOPT,M_PGTTY,M_DBNAME) \
PQsetdbLogin(M_PGHOST, M_PGPORT, M_PGOPT, M_PGTTY, M_DBNAME, NULL, NULL)
/* close the current connection and free the PGconn data structure */
extern void PQfinish(PGconn *conn);
/* get info about connection options known to PQconnectdb */
extern PQconninfoOption *PQconndefaults(void);
/* parse connection options in same way as PQconnectdb */
extern PQconninfoOption *PQconninfoParse(const char *conninfo, char **errmsg);
/* return the connection options used by a live connection */
extern PQconninfoOption *PQconninfo(PGconn *conn);
/* free the data structure returned by PQconndefaults() or PQconninfoParse() */
extern void PQconninfoFree(PQconninfoOption *connOptions);
/*
* close the current connection and restablish a new one with the same
* parameters
*/
/* Asynchronous (non-blocking) */
extern int PQresetStart(PGconn *conn);
extern PostgresPollingStatusType PQresetPoll(PGconn *conn);
/* Synchronous (blocking) */
extern void PQreset(PGconn *conn);
/* request a cancel structure */
extern PGcancel *PQgetCancel(PGconn *conn);
/* free a cancel structure */
extern void PQfreeCancel(PGcancel *cancel);
/* issue a cancel request */
extern int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize);
/* backwards compatible version of PQcancel; not thread-safe */
extern int PQrequestCancel(PGconn *conn);
/* Accessor functions for PGconn objects */
extern char *PQdb(const PGconn *conn);
extern char *PQuser(const PGconn *conn);
extern char *PQpass(const PGconn *conn);
extern char *PQhost(const PGconn *conn);
extern char *PQport(const PGconn *conn);
extern char *PQtty(const PGconn *conn);
extern char *PQoptions(const PGconn *conn);
extern ConnStatusType PQstatus(const PGconn *conn);
extern PGTransactionStatusType PQtransactionStatus(const PGconn *conn);
extern const char *PQparameterStatus(const PGconn *conn,
const char *paramName);
extern int PQprotocolVersion(const PGconn *conn);
extern int PQserverVersion(const PGconn *conn);
extern char *PQerrorMessage(const PGconn *conn);
extern int PQsocket(const PGconn *conn);
extern int PQbackendPID(const PGconn *conn);
extern int PQconnectionNeedsPassword(const PGconn *conn);
extern int PQconnectionUsedPassword(const PGconn *conn);
extern int PQclientEncoding(const PGconn *conn);
extern int PQsetClientEncoding(PGconn *conn, const char *encoding);
/* Get the OpenSSL structure associated with a connection. Returns NULL for
* unencrypted connections or if any other TLS library is in use. */
extern void *PQgetssl(PGconn *conn);
/* Tell libpq whether it needs to initialize OpenSSL */
extern void PQinitSSL(int do_init);
/* More detailed way to tell libpq whether it needs to initialize OpenSSL */
extern void PQinitOpenSSL(int do_ssl, int do_crypto);
/* Set verbosity for PQerrorMessage and PQresultErrorMessage */
extern PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity);
/* Enable/disable tracing */
extern void PQtrace(PGconn *conn, FILE *debug_port);
extern void PQuntrace(PGconn *conn);
/* Override default notice handling routines */
extern PQnoticeReceiver PQsetNoticeReceiver(PGconn *conn,
PQnoticeReceiver proc,
void *arg);
extern PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn,
PQnoticeProcessor proc,
void *arg);
/*
* Used to set callback that prevents concurrent access to
* non-thread safe functions that libpq needs.
* The default implementation uses a libpq internal mutex.
* Only required for multithreaded apps that use kerberos
* both within their app and for postgresql connections.
*/
typedef void (*pgthreadlock_t) (int acquire);
extern pgthreadlock_t PQregisterThreadLock(pgthreadlock_t newhandler);
/* === in fe-exec.c === */
/* Simple synchronous query */
extern PGresult *PQexec(PGconn *conn, const char *query);
extern PGresult *PQexecParams(PGconn *conn,
const char *command,
int nParams,
const Oid *paramTypes,
const char *const * paramValues,
const int *paramLengths,
const int *paramFormats,
int resultFormat);
extern PGresult *PQprepare(PGconn *conn, const char *stmtName,
const char *query, int nParams,
const Oid *paramTypes);
extern PGresult *PQexecPrepared(PGconn *conn,
const char *stmtName,
int nParams,
const char *const * paramValues,
const int *paramLengths,
const int *paramFormats,
int resultFormat);
/* Interface for multiple-result or asynchronous queries */
extern int PQsendQuery(PGconn *conn, const char *query);
extern int PQsendQueryParams(PGconn *conn,
const char *command,
int nParams,
const Oid *paramTypes,
const char *const * paramValues,
const int *paramLengths,
const int *paramFormats,
int resultFormat);
extern int PQsendPrepare(PGconn *conn, const char *stmtName,
const char *query, int nParams,
const Oid *paramTypes);
extern int PQsendQueryPrepared(PGconn *conn,
const char *stmtName,
int nParams,
const char *const * paramValues,
const int *paramLengths,
const int *paramFormats,
int resultFormat);
extern int PQsetSingleRowMode(PGconn *conn);
extern PGresult *PQgetResult(PGconn *conn);
/* Routines for managing an asynchronous query */
extern int PQisBusy(PGconn *conn);
extern int PQconsumeInput(PGconn *conn);
/* LISTEN/NOTIFY support */
extern PGnotify *PQnotifies(PGconn *conn);
/* Routines for copy in/out */
extern int PQputCopyData(PGconn *conn, const char *buffer, int nbytes);
extern int PQputCopyEnd(PGconn *conn, const char *errormsg);
extern int PQgetCopyData(PGconn *conn, char **buffer, int async);
/* Deprecated routines for copy in/out */
extern int PQgetline(PGconn *conn, char *string, int length);
extern int PQputline(PGconn *conn, const char *string);
extern int PQgetlineAsync(PGconn *conn, char *buffer, int bufsize);
extern int PQputnbytes(PGconn *conn, const char *buffer, int nbytes);
extern int PQendcopy(PGconn *conn);
/* Set blocking/nonblocking connection to the backend */
extern int PQsetnonblocking(PGconn *conn, int arg);
extern int PQisnonblocking(const PGconn *conn);
extern int PQisthreadsafe(void);
extern PGPing PQping(const char *conninfo);
extern PGPing PQpingParams(const char *const * keywords,
const char *const * values, int expand_dbname);
/* Force the write buffer to be written (or at least try) */
extern int PQflush(PGconn *conn);
/*
* "Fast path" interface --- not really recommended for application
* use
*/
extern PGresult *PQfn(PGconn *conn,
int fnid,
int *result_buf,
int *result_len,
int result_is_int,
const PQArgBlock *args,
int nargs);
/* Accessor functions for PGresult objects */
extern ExecStatusType PQresultStatus(const PGresult *res);
extern char *PQresStatus(ExecStatusType status);
extern char *PQresultErrorMessage(const PGresult *res);
extern char *PQresultErrorField(const PGresult *res, int fieldcode);
extern int PQntuples(const PGresult *res);
extern int PQnfields(const PGresult *res);
extern int PQbinaryTuples(const PGresult *res);
extern char *PQfname(const PGresult *res, int field_num);
extern int PQfnumber(const PGresult *res, const char *field_name);
extern Oid PQftable(const PGresult *res, int field_num);
extern int PQftablecol(const PGresult *res, int field_num);
extern int PQfformat(const PGresult *res, int field_num);
extern Oid PQftype(const PGresult *res, int field_num);
extern int PQfsize(const PGresult *res, int field_num);
extern int PQfmod(const PGresult *res, int field_num);
extern char *PQcmdStatus(PGresult *res);
extern char *PQoidStatus(const PGresult *res); /* old and ugly */
extern Oid PQoidValue(const PGresult *res); /* new and improved */
extern char *PQcmdTuples(PGresult *res);
extern char *PQgetvalue(const PGresult *res, int tup_num, int field_num);
extern int PQgetlength(const PGresult *res, int tup_num, int field_num);
extern int PQgetisnull(const PGresult *res, int tup_num, int field_num);
extern int PQnparams(const PGresult *res);
extern Oid PQparamtype(const PGresult *res, int param_num);
/* Describe prepared statements and portals */
extern PGresult *PQdescribePrepared(PGconn *conn, const char *stmt);
extern PGresult *PQdescribePortal(PGconn *conn, const char *portal);
extern int PQsendDescribePrepared(PGconn *conn, const char *stmt);
extern int PQsendDescribePortal(PGconn *conn, const char *portal);
/* Delete a PGresult */
extern void PQclear(PGresult *res);
/* For freeing other alloc'd results, such as PGnotify structs */
extern void PQfreemem(void *ptr);
/* Exists for backward compatibility. bjm 2003-03-24 */
#define PQfreeNotify(ptr) PQfreemem(ptr)
/* Error when no password was given. */
/* Note: depending on this is deprecated; use PQconnectionNeedsPassword(). */
#define PQnoPasswordSupplied "fe_sendauth: no password supplied\n"
/* Create and manipulate PGresults */
extern PGresult *PQmakeEmptyPGresult(PGconn *conn, ExecStatusType status);
extern PGresult *PQcopyResult(const PGresult *src, int flags);
extern int PQsetResultAttrs(PGresult *res, int numAttributes, PGresAttDesc *attDescs);
extern void *PQresultAlloc(PGresult *res, size_t nBytes);
extern int PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len);
/* Quoting strings before inclusion in queries. */
extern size_t PQescapeStringConn(PGconn *conn,
char *to, const char *from, size_t length,
int *error);
extern char *PQescapeLiteral(PGconn *conn, const char *str, size_t len);
extern char *PQescapeIdentifier(PGconn *conn, const char *str, size_t len);
extern unsigned char *PQescapeByteaConn(PGconn *conn,
const unsigned char *from, size_t from_length,
size_t *to_length);
extern unsigned char *PQunescapeBytea(const unsigned char *strtext,
size_t *retbuflen);
/* These forms are deprecated! */
extern size_t PQescapeString(char *to, const char *from, size_t length);
extern unsigned char *PQescapeBytea(const unsigned char *from, size_t from_length,
size_t *to_length);
/* === in fe-print.c === */
extern void PQprint(FILE *fout, /* output stream */
const PGresult *res,
const PQprintOpt *ps); /* option structure */
/*
* really old printing routines
*/
extern void PQdisplayTuples(const PGresult *res,
FILE *fp, /* where to send the output */
int fillAlign, /* pad the fields with spaces */
const char *fieldSep, /* field separator */
int printHeader, /* display headers? */
int quiet);
extern void PQprintTuples(const PGresult *res,
FILE *fout, /* output stream */
int printAttName, /* print attribute names */
int terseOutput, /* delimiter bars */
int width); /* width of column, if 0, use variable width */
/* === in fe-lobj.c === */
/* Large-object access routines */
extern int lo_open(PGconn *conn, Oid lobjId, int mode);
extern int lo_close(PGconn *conn, int fd);
extern int lo_read(PGconn *conn, int fd, char *buf, size_t len);
extern int lo_write(PGconn *conn, int fd, const char *buf, size_t len);
extern int lo_lseek(PGconn *conn, int fd, int offset, int whence);
extern pg_int64 lo_lseek64(PGconn *conn, int fd, pg_int64 offset, int whence);
extern Oid lo_creat(PGconn *conn, int mode);
extern Oid lo_create(PGconn *conn, Oid lobjId);
extern int lo_tell(PGconn *conn, int fd);
extern pg_int64 lo_tell64(PGconn *conn, int fd);
extern int lo_truncate(PGconn *conn, int fd, size_t len);
extern int lo_truncate64(PGconn *conn, int fd, pg_int64 len);
extern int lo_unlink(PGconn *conn, Oid lobjId);
extern Oid lo_import(PGconn *conn, const char *filename);
extern Oid lo_import_with_oid(PGconn *conn, const char *filename, Oid lobjId);
extern int lo_export(PGconn *conn, Oid lobjId, const char *filename);
/* === in fe-misc.c === */
/* Get the version of the libpq library in use */
extern int PQlibVersion(void);
/* Determine length of multibyte encoded char at *s */
extern int PQmblen(const char *s, int encoding);
/* Determine display length of multibyte encoded char at *s */
extern int PQdsplen(const char *s, int encoding);
/* Get encoding id from environment variable PGCLIENTENCODING */
extern int PQenv2encoding(void);
/* === in fe-auth.c === */
extern char *PQencryptPassword(const char *passwd, const char *user);
/* === in encnames.c === */
extern int pg_char_to_encoding(const char *name);
extern const char *pg_encoding_to_char(int encoding);
extern int pg_valid_server_encoding_id(int encoding);
#ifdef __cplusplus
}
#endif
#endif /* LIBPQ_FE_H */

View File

@ -0,0 +1,24 @@
/*-------------------------------------------------------------------------
*
* libpq-fs.h
* definitions for using Inversion file system routines (ie, large objects)
*
*
* Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/libpq/libpq-fs.h
*
*-------------------------------------------------------------------------
*/
#ifndef LIBPQ_FS_H
#define LIBPQ_FS_H
/*
* Read/write mode flags for inversion (large object) calls
*/
#define INV_WRITE 0x00020000
#define INV_READ 0x00040000
#endif /* LIBPQ_FS_H */

View File

@ -0,0 +1,11 @@
/*
* src/include/pg_config_ext.h.win32. This is generated manually, not by
* autoheader, since we want to limit which symbols get defined here.
*/
/* Define to the name of a signed 64-bit integer type. */
#ifdef SQLAPI_WINDOWS
#define PG_INT64_TYPE __int64
#else
#define PG_INT64_TYPE long long int
#endif

View File

@ -0,0 +1,69 @@
/*-------------------------------------------------------------------------
*
* postgres_ext.h
*
* This file contains declarations of things that are visible everywhere
* in PostgreSQL *and* are visible to clients of frontend interface libraries.
* For example, the Oid type is part of the API of libpq and other libraries.
*
* Declarations which are specific to a particular interface should
* go in the header file for that interface (such as libpq-fe.h). This
* file is only for fundamental Postgres declarations.
*
* User-written C functions don't count as "external to Postgres."
* Those function much as local modifications to the backend itself, and
* use header files that are otherwise internal to Postgres to interface
* with the backend.
*
* src/include/postgres_ext.h
*
*-------------------------------------------------------------------------
*/
#ifndef POSTGRES_EXT_H
#define POSTGRES_EXT_H
#include "pg_config_ext.h"
/*
* Object ID is a fundamental type in Postgres.
*/
typedef unsigned int Oid;
#ifdef __cplusplus
#define InvalidOid (Oid(0))
#else
#define InvalidOid ((Oid) 0)
#endif
#define OID_MAX UINT_MAX
/* you will need to include <limits.h> to use the above #define */
/* Define a signed 64-bit integer type for use in client API declarations. */
typedef PG_INT64_TYPE pg_int64;
/*
* Identifiers of error message fields. Kept here to keep common
* between frontend and backend, and also to export them to libpq
* applications.
*/
#define PG_DIAG_SEVERITY 'S'
#define PG_DIAG_SQLSTATE 'C'
#define PG_DIAG_MESSAGE_PRIMARY 'M'
#define PG_DIAG_MESSAGE_DETAIL 'D'
#define PG_DIAG_MESSAGE_HINT 'H'
#define PG_DIAG_STATEMENT_POSITION 'P'
#define PG_DIAG_INTERNAL_POSITION 'p'
#define PG_DIAG_INTERNAL_QUERY 'q'
#define PG_DIAG_CONTEXT 'W'
#define PG_DIAG_SCHEMA_NAME 's'
#define PG_DIAG_TABLE_NAME 't'
#define PG_DIAG_COLUMN_NAME 'c'
#define PG_DIAG_DATATYPE_NAME 'd'
#define PG_DIAG_CONSTRAINT_NAME 'n'
#define PG_DIAG_SOURCE_FILE 'F'
#define PG_DIAG_SOURCE_LINE 'L'
#define PG_DIAG_SOURCE_FUNCTION 'R'
#endif /* POSTGRES_EXT_H */

View File

@ -0,0 +1,144 @@
// samisc.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__SAMISC_H__)
#define __SAMISC_H__
#define sa_min(x, y) ((x) < (y)? (x) : (y))
#define sa_max(x, y) ((x) > (y)? (x) : (y))
#if defined(SA_UNICODE)
#define sa_strcpy(x, y) wcscpy(x, y)
#define sa_strlen(x) wcslen(x)
#define sa_strstr(x, y) wcsstr(x, y)
#define sa_strchr(x, y) wcschr(x, y)
#define sa_isspace(x) iswspace(x)
#define sa_isdigit(x) iswdigit(x)
#define sa_isalpha(x) iswalpha(x)
#define sa_strcmp(x, y) wcscmp(x, y)
#define sa_strncmp(x, y, z) wcsncmp(x, y, z)
#define sa_tolower(x) towlower(x)
#define sa_toupper(x) towupper(x)
#define sa_strcoll(x, y) wcscoll(x, y)
#define sa_strpbrk(x, y) wcspbrk(x, y)
#define sa_strrchr(x, y) wcsrchr(x, y)
#define sa_strtol(x, y, z) wcstol(x, y, z)
#define sa_strtoul(x, y, z) wcstoul(x, y, z)
#define sa_strtod(x, y) wcstod(x, y)
#define sa_toi(x) (int)wcstol(x, NULL, 10)
#define sa_tol(x) wcstol(x, NULL, 10)
#define sa_sscanf swscanf
#define sa_printf wprintf
#define sa_scanf wscanf
#define sa_getchar getwchar
#ifdef SQLAPI_WINDOWS
#define sa_snprintf _snwprintf
#define sa_vsnprintf(x, y, z, j) _vsnwprintf(x, y, z, j)
#define sa_stricmp(x, y) _wcsicmp(x, y)
#else
#define sa_vsnprintf(x, y, z, j) vswprintf(x, y, z, j)
#define sa_snprintf swprintf
#define sa_stricmp(x, y) wcscasecmp(x, y)
#endif // ! SQLAPI_WINDOWS
#define sa_csinc(x) (++(x))
#define sa_clen(x) (1)
#else
#define sa_strcpy(x, y) strcpy(x, y)
#define sa_strlen(x) strlen(x)
#define sa_strstr(x, y) strstr(x, y)
#define sa_strchr(x, y) strchr(x, y)
#define sa_isspace(x) isspace((unsigned char)x)
#define sa_isdigit(x) isdigit((unsigned char)x)
#define sa_isalpha(x) isalpha((unsigned char)x)
#define sa_strcmp(x, y) strcmp(x, y)
#define sa_strncmp(x, y, z) strncmp(x, y, z)
#define sa_tolower(x) tolower((unsigned char)x)
#define sa_toupper(x) toupper((unsigned char)x)
#define sa_strcoll(x, y) strcoll(x, y)
#define sa_strpbrk(x, y) strpbrk(x, y)
#define sa_strrchr(x, y) strrchr(x, y)
#define sa_strtol(x, y, z) strtol(x, y, z)
#define sa_strtoul(x, y, z) strtoul(x, y, z)
#define sa_strtod(x, y) strtod(x, y)
#define sa_toi(x) atoi(x)
#define sa_tol(x) atol(x)
#define sa_sscanf sscanf
#define sa_printf printf
#define sa_scanf scanf
#define sa_getchar getchar
#ifdef SQLAPI_WINDOWS
#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x0520)
#define sa_vsnprintf(x, y, z, j) vsprintf(x, z, j)
#else
#define sa_vsnprintf(x, y, z, j) _vsnprintf(x, y, z, j)
#endif
#define sa_snprintf _snprintf
#define sa_stricmp(x, y) _stricmp(x, y)
#else
#define sa_vsnprintf(x, y, z, j) vsnprintf(x, y, z, j)
#define sa_snprintf snprintf
#define sa_stricmp(x, y) strcasecmp(x, y)
#endif // ! SQLAPI_WINDOWS
#define sa_csinc(x) (++(x))
#define sa_clen(x) (1)
#endif
#ifdef SQLAPI_WINDOWS
#ifdef __BORLANDC__
#define _strnicmp strnicmp
#define _stricmp stricmp
#endif
#elif SQLAPI_SCOOSR5
#define _strnicmp strnicmp
#define _stricmp stricmp
#else
#define _strnicmp strncasecmp
#define _stricmp strcasecmp
#endif // defined(SQLAPI_WINDOWS)
#ifdef SQLAPI_WINDOWS
#include <windows.h>
#else
#if defined(SA_USE_PTHREAD)
#include <pthread.h>
#endif // defined(SA_USE_PTHREAD)
#endif
class SQLAPI_API SAMutex
{
#ifdef SQLAPI_WINDOWS
#ifdef SA_USE_MUTEXT_LOCK
HANDLE m_hMutex;
#else
CRITICAL_SECTION m_hCriticalSection;
#endif
#endif // defined(SQLAPI_WINDOWS)
#if defined(SA_USE_PTHREAD)
pthread_mutex_t m_mutex; // mutex
// we need additional machinery
// to allow portable recursion
int m_locks; // number of times owner locked mutex
pthread_t m_owner_thread; //owner of mutex
pthread_mutex_t m_helper_mutex; // structure access lock
#endif // defined(SA_USE_PTHREAD)
public:
SAMutex();
virtual ~SAMutex();
void Wait();
void Release();
};
class SQLAPI_API SACriticalSectionScope
{
SAMutex *m_pSAMutex;
public:
SACriticalSectionScope(SAMutex *pSAMutex);
virtual ~SACriticalSectionScope();
};
#endif // !defined(__SAMISC_H__)

View File

@ -0,0 +1,514 @@
// sbAPI.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__SB7API_H__)
#define __SB7API_H__
#include "SQLAPI.h"
// API header(s)
#define SQL_32BITTARG 1
#include <sql.h>
extern long g_nSBDLLVersionLoaded;
extern void AddSB6Support(const SAConnection * pCon);
extern void ReleaseSB6Support();
extern bool CanBeLoadedSB7(const SAConnection * pCon);
extern void AddSB7Support(const SAConnection * pCon);
extern void ReleaseSB7Support();
typedef byte2 (SBSTDCALL *sqlarf_t)(SQLTCUR cur , SQLTFNP fnp ,
SQLTFNL fnl , SQLTCHO cho );
typedef byte2 (SBSTDCALL *sqlbbr_t)(SQLTCUR cur , SQLTXER PTR errnum ,
SQLTDAP errbuf , SQLTDAL PTR buflen ,
SQLTBIR PTR errrow , SQLTRBF PTR rbf ,
SQLTBIR errseq );
typedef byte2 (SBSTDCALL *sqlbdb_t)(SQLTSVH shandle , SQLTDAP dbname ,
SQLTDAL dbnamel , SQLTFNP bkpdir ,
SQLTFNL bkpdirl , SQLTBOO local ,
SQLTBOO over );
typedef byte2 (SBSTDCALL *sqlbef_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlber_t)(SQLTCUR cur , SQLTRCD PTR rcd ,
SQLTBIR PTR errrow , SQLTRBF PTR rbf ,
SQLTBIR errseq );
typedef byte2 (SBSTDCALL *sqlbkp_t)(SQLTCUR cur , SQLTBOO defalt ,
SQLTBOO overwrt , SQLTFNP bkfname ,
SQLTFNL bkfnlen );
typedef byte2 (SBSTDCALL *sqlbld_t)(SQLTCUR cur , SQLTBNP bnp ,
SQLTBNL bnl );
typedef byte2 (SBSTDCALL *sqlblf_t)(SQLTSVH shandle , SQLTDAP dbname ,
SQLTDAL dbnamel , SQLTFNP bkpdir ,
SQLTFNL bkpdirl , SQLTBOO local ,
SQLTBOO over );
typedef byte2 (SBSTDCALL *sqlblk_t)(SQLTCUR cur , SQLTFLG blkflg );
typedef byte2 (SBSTDCALL *sqlbln_t)(SQLTCUR cur , SQLTBNN bnn );
typedef byte2 (SBSTDCALL *sqlbna_t)(SQLTCUR cur , SQLTBNP bnp ,
SQLTBNL bnl , SQLTDAP dap ,
SQLTDAL dal , SQLTSCA sca ,
SQLTPDT pdt , SQLTNUL nli );
typedef byte2 (SBSTDCALL *sqlbnd_t)(SQLTCUR cur , SQLTBNP bnp ,
SQLTBNL bnl , SQLTDAP dap ,
SQLTDAL dal , SQLTSCA sca ,
SQLTPDT pdt );
typedef byte2 (SBSTDCALL *sqlbnn_t)(SQLTCUR cur , SQLTBNN bnn ,
SQLTDAP dap , SQLTDAL dal ,
SQLTSCA sca , SQLTPDT pdt );
typedef byte2 (SBSTDCALL *sqlbnu_t)(SQLTCUR cur , SQLTBNN bnn ,
SQLTDAP dap , SQLTDAL dal ,
SQLTSCA sca , SQLTPDT pdt ,
SQLTNUL nli );
typedef byte2 (SBSTDCALL *sqlbss_t)(SQLTSVH shandle , SQLTDAP dbname ,
SQLTDAL dbnamel , SQLTFNP bkpdir ,
SQLTFNL bkpdirl , SQLTBOO local ,
SQLTBOO over );
typedef byte2 (SBSTDCALL *sqlcan_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlcbv_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlcdr_t)(SQLTSVH shandle, SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlcex_t)(SQLTCUR cur , SQLTDAP dap ,
SQLTDAL dal );
typedef byte2 (SBSTDCALL *sqlclf_t)(SQLTSVH cur , SQLTDAP logfile ,
SQLTFMD startflag);
typedef byte2 (SBSTDCALL *sqlcmt_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlcnc_t)(SQLTCUR PTR curp , SQLTDAP dbnamp ,
SQLTDAL dbnaml );
typedef byte2 (SBSTDCALL *sqlcnr_t)(SQLTCUR PTR curp , SQLTDAP dbnamp ,
SQLTDAL dbnaml );
typedef byte2 (SBSTDCALL *sqlcom_t)(SQLTCUR cur , SQLTDAP cmdp ,
SQLTDAL cmdl );
typedef byte2 (SBSTDCALL *sqlcon_t)(SQLTCUR PTR curp , SQLTDAP dbnamp ,
SQLTDAL dbnaml , SQLTWSI cursiz ,
SQLTNPG pages , SQLTRCF recovr ,
SQLTDAL outsize , SQLTDAL insize );
typedef byte2 (SBSTDCALL *sqlcpy_t)(SQLTCUR fcur , SQLTDAP selp ,
SQLTDAL sell , SQLTCUR tcur ,
SQLTDAP isrtp , SQLTDAL isrtl );
typedef byte2 (SBSTDCALL *sqlcre_t)(SQLTSVH shandle , SQLTDAP dbnamp ,
SQLTDAL dbnaml );
typedef byte2 (SBSTDCALL *sqlcrf_t)(SQLTSVH shandle , SQLTDAP dbname ,
SQLTDAL dbnamel );
typedef byte2 (SBSTDCALL *sqlcrs_t)(SQLTCUR cur , SQLTDAP rsp ,
SQLTDAL rsl );
typedef byte2 (SBSTDCALL *sqlcsv_t)(SQLTSVH PTR shandlep, SQLTDAP serverid,
SQLTDAP password);
typedef byte2 (SBSTDCALL *sqlcty_t)(SQLTCUR cur , SQLTCTY PTR cty );
typedef byte2 (SBSTDCALL *sqldbn_t)(SQLTDAP serverid, SQLTDAP buffer ,
SQLTDAL length );
typedef byte2 (SBSTDCALL *sqlded_t)(SQLTSVH shandle , SQLTDAP dbnamp ,
SQLTDAL dbnaml );
typedef byte2 (SBSTDCALL *sqldel_t)(SQLTSVH shandle , SQLTDAP dbnamp ,
SQLTDAL dbnaml );
typedef byte2 (SBSTDCALL *sqldes_t)(SQLTCUR cur , SQLTSLC slc ,
SQLTDDT PTR ddt , SQLTDDL PTR ddl ,
SQLTCHP chp , SQLTCHL PTR chlp ,
SQLTPRE PTR prep , SQLTSCA PTR scap );
typedef byte2 (SBSTDCALL *sqldid_t)(SQLTDAP dbname , SQLTDAL dbnamel );
typedef byte2 (SBSTDCALL *sqldii_t)(SQLTCUR cur , SQLTSLC ivn ,
SQLTDAP inp , SQLTCHL* inlp );
typedef byte2 (SBSTDCALL *sqldin_t)(SQLTDAP dbnamp , SQLTDAL dbnaml );
typedef byte2 (SBSTDCALL *sqldir_t)(SQLTSVN srvno , SQLTDAP buffer ,
SQLTDAL length );
typedef byte2 (SBSTDCALL *sqldis_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqldon_t)(void);
typedef byte2 (SBSTDCALL *sqldox_t)(SQLTSVH shandle , SQLTDAP dirnamep,
SQLTFAT fattr );
typedef byte2 (SBSTDCALL *sqldrc_t)(SQLTSVH cur );
typedef byte2 (SBSTDCALL *sqldro_t)(SQLTSVH shandle , SQLTDAP dirname );
typedef byte2 (SBSTDCALL *sqldrr_t)(SQLTSVH shandle , SQLTDAP filename);
typedef byte2 (SBSTDCALL *sqldrs_t)(SQLTCUR cur , SQLTDAP rsp ,
SQLTDAL rsl );
typedef byte2 (SBSTDCALL *sqldsc_t)(SQLTCUR cur , SQLTSLC slc ,
SQLTDDT PTR edt , SQLTDDL PTR edl ,
SQLTCHP chp , SQLTCHL PTR chlp ,
SQLTPRE PTR prep , SQLTSCA PTR scap );
typedef byte2 (SBSTDCALL *sqldst_t)(SQLTCUR cur , SQLTDAP cnp ,
SQLTDAL cnl );
typedef byte2 (SBSTDCALL *sqldsv_t)(SQLTSVH shandle );
typedef byte2 (SBSTDCALL *sqlebk_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlefb_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlelo_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlenr_t)(SQLTSVH shandle , SQLTDAP dbname ,
SQLTDAL dbnamel );
typedef byte2 (SBSTDCALL *sqlepo_t)(SQLTCUR cur , SQLTEPO PTR epo );
typedef byte2 (SBSTDCALL *sqlerf_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlerr_t)(SQLTRCD error , SQLTDAP msg );
typedef byte2 (SBSTDCALL *sqlers_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqletx_t)(SQLTRCD error , SQLTPTY msgtyp ,
SQLTDAP bfp , SQLTDAL bfl ,
SQLTDAL PTR txtlen );
typedef byte2 (SBSTDCALL *sqlexe_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlexp_t)(SQLTCUR cur , SQLTDAP buffer ,
SQLTDAL length );
typedef byte2 (SBSTDCALL *sqlfbk_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlfer_t)(SQLTRCD error , SQLTDAP msg );
typedef byte2 (SBSTDCALL *sqlfet_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlfgt_t)(SQLTSVH cur , SQLTDAP srvfile ,
SQLTDAP lclfile );
typedef byte2 (SBSTDCALL *sqlfpt_t)(SQLTSVH cur , SQLTDAP srvfile ,
SQLTDAP lclfile );
typedef byte2 (SBSTDCALL *sqlfqn_t)(SQLTCUR cur , SQLTFLD field ,
SQLTDAP nameptr , SQLTDAL PTR namelen );
typedef byte2 (SBSTDCALL *sqlgbi_t)(SQLTCUR cur , SQLTCUR PTR pcur ,
SQLTPNM PTR ppnm );
typedef byte2 (SBSTDCALL *sqlgdi_t)(SQLTCUR cur , SQLTPGD gdi );
typedef byte2 (SBSTDCALL *sqlget_t)(SQLTCUR cur , SQLTPTY parm ,
SQLTDAP p , SQLTDAL PTR l );
typedef byte2 (SBSTDCALL *sqlgfi_t)(SQLTCUR cur , SQLTSLC slc ,
SQLTCDL PTR cvl , SQLTFSC PTR fsc );
typedef byte2 (SBSTDCALL *sqlgls_t)(SQLTCUR cur , SQLTSLC slc ,
SQLTLSI PTR size );
typedef byte2 (SBSTDCALL *sqlgnl_t)(SQLTSVH shandle , SQLTDAP dbname ,
SQLTDAL dbnamel , SQLTLNG PTR lognum );
typedef byte2 (SBSTDCALL *sqlgnr_t)(SQLTCUR cur , SQLTDAP tbnam ,
SQLTDAL tbnaml , SQLTROW PTR rows );
typedef byte2 (SBSTDCALL *sqlgsi_t)(SQLTSVH shandle , SQLTFLG infoflags,
SQLTDAP buffer , SQLTDAL buflen ,
SQLTDAL PTR rbuflen );
typedef byte2 (SBSTDCALL *sqlidb_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlims_t)(SQLTCUR cur , SQLTDAL insize );
typedef byte2 (SBSTDCALL *sqlind_t)(SQLTSVH shandle , SQLTDAP dbnamp ,
SQLTDAL dbnaml );
typedef byte2 (SBSTDCALL *sqlini_t)(SQLTPFP callback);
typedef byte2 (SBSTDCALL *sqlins_t)(SQLTSVN srvno , SQLTDAP dbnamp ,
SQLTDAL dbnaml , SQLTFLG createflag,
SQLTFLG overwrite);
typedef byte2 (SBSTDCALL *sqllab_t)(SQLTCUR cur , SQLTSLC slc ,
SQLTCHP lbp , SQLTCHL PTR lblp );
typedef byte2 (SBSTDCALL *sqlldp_t)(SQLTCUR cur , SQLTDAP cmdp ,
SQLTDAL cmdl );
typedef byte2 (SBSTDCALL *sqllsk_t)(SQLTCUR cur , SQLTSLC slc ,
SQLTLSI pos );
typedef byte2 (SBSTDCALL *sqlmcl_t)(SQLTSVH shandle , SQLTFLH fd );
typedef byte2 (SBSTDCALL *sqlmdl_t)(SQLTSVH shandle , SQLTDAP filename);
typedef byte2 (SBSTDCALL *sqlmop_t)(SQLTSVH shandle , SQLTFLH PTR fdp ,
SQLTDAP filename, SQLTFMD openmode);
typedef byte2 (SBSTDCALL *sqlmrd_t)(SQLTSVH shandle , SQLTFLH fd ,
SQLTDAP buffer , SQLTDAL len ,
SQLTDAL PTR rlen );
typedef byte2 (SBSTDCALL *sqlmsk_t)(SQLTSVH shandle , SQLTFLH fd ,
SQLTLNG offset , SQLTWNC whence ,
SQLTLNG PTR roffset );
typedef byte2 (SBSTDCALL *sqlmwr_t)(SQLTSVH shandle , SQLTFLH fd ,
SQLTDAP buffer , SQLTDAL len ,
SQLTDAL PTR rlen );
typedef byte2 (SBSTDCALL *sqlnbv_t)(SQLTCUR cur , SQLTNBV PTR nbv );
typedef byte2 (SBSTDCALL *sqlnii_t)(SQLTCUR cur , SQLTNSI PTR nii );
typedef byte2 (SBSTDCALL *sqlnrr_t)(SQLTCUR cur , SQLTROW PTR rcountp );
typedef byte2 (SBSTDCALL *sqlnsi_t)(SQLTCUR cur , SQLTNSI PTR nsi );
typedef byte2 (SBSTDCALL *sqloms_t)(SQLTCUR cur , SQLTDAL outsize );
typedef byte2 (SBSTDCALL *sqlprs_t)(SQLTCUR cur , SQLTROW row );
typedef byte2 (SBSTDCALL *sqlrbf_t)(SQLTCUR cur , SQLTRBF PTR rbf );
typedef byte2 (SBSTDCALL *sqlrbk_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlrcd_t)(SQLTCUR cur , SQLTRCD PTR rcd );
typedef byte2 (SBSTDCALL *sqlrdb_t)(SQLTSVH shandle , SQLTDAP dbname ,
SQLTDAL dbnamel , SQLTFNP bkpdir ,
SQLTFNL bkpdirl , SQLTBOO local ,
SQLTBOO over );
typedef byte2 (SBSTDCALL *sqlrdc_t)(SQLTCUR cur , SQLTDAP bufp ,
SQLTDAL bufl , SQLTDAL PTR readl );
typedef byte2 (SBSTDCALL *sqlrel_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlres_t)(SQLTCUR PTR curptr , SQLTFNP bkfname ,
SQLTFNL bkfnlen , SQLTSVN bkfserv ,
SQLTBOO overwrt , SQLTDAP dbname ,
SQLTDAL dbnlen , SQLTSVN dbserv );
typedef byte2 (SBSTDCALL *sqlret_t)(SQLTCUR cur , SQLTDAP cnp ,
SQLTDAL cnl );
typedef byte2 (SBSTDCALL *sqlrlf_t)(SQLTSVH shandle , SQLTDAP dbname ,
SQLTDAL dbnamel , SQLTFNP bkpdir ,
SQLTFNL bkpdirl , SQLTBOO local ,
SQLTBOO over );
typedef byte2 (SBSTDCALL *sqlrlo_t)(SQLTCUR cur , SQLTSLC slc ,
SQLTDAP bufp , SQLTDAL bufl ,
SQLTDAL PTR readl );
typedef byte2 (SBSTDCALL *sqlrof_t)(SQLTSVH shandle , SQLTDAP dbname ,
SQLTDAL dbnamel , SQLTRFM mode ,
SQLTDAP datetime, SQLTDAL datetimel);
typedef byte2 (SBSTDCALL *sqlrow_t)(SQLTCUR cur , SQLTROW PTR row );
typedef byte2 (SBSTDCALL *sqlrrd_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlrrs_t)(SQLTCUR cur , SQLTDAP rsp ,
SQLTDAL rsl );
typedef byte2 (SBSTDCALL *sqlrsi_t)(SQLTSVH shandle );
typedef byte2 (SBSTDCALL *sqlrss_t)(SQLTSVH shandle , SQLTDAP dbname ,
SQLTDAL dbnamel , SQLTFNP bkpdir ,
SQLTFNL bkpdirl , SQLTBOO local ,
SQLTBOO over );
typedef byte2 (SBSTDCALL *sqlsab_t)(SQLTSVH shandle , SQLTPNM pnum );
typedef byte2 (SBSTDCALL *sqlsap_t)(SQLTSVN srvno , SQLTDAP password,
SQLTPNM pnum );
typedef byte2 (SBSTDCALL *sqlscl_t)(SQLTCUR cur , SQLTDAP namp ,
SQLTDAL naml );
typedef byte2 (SBSTDCALL *sqlscn_t)(SQLTCUR cur , SQLTDAP namp ,
SQLTDAL naml );
typedef byte2 (SBSTDCALL *sqlscp_t)(SQLTNPG pages );
typedef byte2 (SBSTDCALL *sqlsdn_t)(SQLTDAP dbnamp , SQLTDAL dbnaml );
typedef byte2 (SBSTDCALL *sqlsds_t)(SQLTSVH shandle, SQLTFLG shutdownflg);
typedef byte2 (SBSTDCALL *sqlsdx_t)(SQLTSVH shandle, SQLTDAP dbnamp,
SQLTDAL dbnaml , SQLTFLG shutdownflg);
typedef byte2 (SBSTDCALL *sqlset_t)(SQLTCUR cur , SQLTPTY parm ,
SQLTDAP p , SQLTDAL l );
typedef byte2 (SBSTDCALL *sqlsil_t)(SQLTCUR cur , SQLTILV isolation);
typedef byte2 (SBSTDCALL *sqlslp_t)(SQLTCUR cur , SQLTNPG lpt ,
SQLTNPG lpm );
typedef byte2 (SBSTDCALL *sqlspr_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlsrf_t)(SQLTCUR cur , SQLTDAP fnp ,
SQLTDAL fnl );
typedef byte2 (SBSTDCALL *sqlsrs_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlssb_t)(SQLTCUR cur , SQLTSLC slc ,
SQLTPDT pdt , SQLTDAP pbp ,
SQLTPDL pdl , SQLTSCA sca ,
SQLTCDL PTR pcv , SQLTFSC PTR pfc );
typedef byte2 (SBSTDCALL *sqlsss_t)(SQLTCUR cur , SQLTDAL size );
typedef byte2 (SBSTDCALL *sqlsta_t)(SQLTCUR cur , SQLTSTC PTR svr ,
SQLTSTC PTR svw , SQLTSTC PTR spr ,
SQLTSTC PTR spw );
typedef byte2 (SBSTDCALL *sqlstm_t)(SQLTSVH shandle );
typedef byte2 (SBSTDCALL *sqlsto_t)(SQLTCUR cur , SQLTDAP cnp ,
SQLTDAL cnl , SQLTDAP ctp ,
SQLTDAL ctl );
typedef byte2 (SBSTDCALL *sqlstr_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlsxt_t)(SQLTSVN srvno , SQLTDAP password);
typedef byte2 (SBSTDCALL *sqlsys_t)(SQLTCUR cur , SQLTSYS PTR sys );
typedef byte2 (SBSTDCALL *sqltec_t)(SQLTRCD rcd , SQLTRCD PTR np );
typedef byte2 (SBSTDCALL *sqltem_t)(SQLTCUR cur , SQLTXER PTR xer ,
SQLTPTY msgtyp , SQLTDAP bfp ,
SQLTDAL bfl , SQLTDAL PTR txtlen );
typedef byte2 (SBSTDCALL *sqltio_t)(SQLTCUR cur , SQLTTIV _timeout);
typedef byte2 (SBSTDCALL *sqlunl_t)(SQLTCUR cur , SQLTDAP cmdp ,
SQLTDAL cmdl );
typedef byte2 (SBSTDCALL *sqlurs_t)(SQLTCUR cur );
typedef byte2 (SBSTDCALL *sqlwdc_t)(SQLTCUR cur , SQLTDAP bufp ,
SQLTDAL bufl );
typedef byte2 (SBSTDCALL *sqlwlo_t)(SQLTCUR cur , SQLTDAP bufp ,
SQLTDAL bufl );
typedef byte2 (SBSTDCALL *sqlxad_t)(SQLTNMP op , SQLTNMP np1 ,
SQLTNML nl1 , SQLTNMP np2 ,
SQLTNML nl2 );
typedef byte2 (SBSTDCALL *sqlxcn_t)(SQLTNMP op , SQLTDAP ip ,
SQLTDAL il );
typedef byte2 (SBSTDCALL *sqlxda_t)(SQLTNMP op , SQLTNMP dp ,
SQLTNML dl , SQLTDAY days );
typedef byte2 (SBSTDCALL *sqlxdp_t)(SQLTDAP op , SQLTDAL ol ,
SQLTNMP ip , SQLTNML il ,
SQLTDAP pp , SQLTDAL pl );
typedef byte2 (SBSTDCALL *sqlxdv_t)(SQLTNMP op , SQLTNMP np1 ,
SQLTNML nl1 , SQLTNMP np2 ,
SQLTNML nl2 );
typedef byte2 (SBSTDCALL *sqlxer_t)(SQLTCUR cur , SQLTXER PTR errnum,
SQLTDAP errbuf , SQLTDAL PTR buflen );
typedef byte2 (SBSTDCALL *sqlxml_t)(SQLTNMP op , SQLTNMP np1 ,
SQLTNML nl1 , SQLTNMP np2 ,
SQLTNML nl2 );
typedef byte2 (SBSTDCALL *sqlxnp_t)(SQLTDAP outp , SQLTDAL outl ,
SQLTNMP isnp , SQLTNML isnl ,
SQLTDAP picp , SQLTDAL picl );
typedef byte2 (SBSTDCALL *sqlxpd_t)(SQLTNMP op , SQLTNML PTR olp ,
SQLTDAP ip , SQLTDAP pp ,
SQLTDAL pl );
typedef byte2 (SBSTDCALL *sqlxsb_t)(SQLTNMP op , SQLTNMP np1 ,
SQLTNML nl1 , SQLTNMP np2 ,
SQLTNML nl2 );
// version 7 specific
typedef byte2 (SBSTDCALL *sqlcch_t)(SQLTCON PTR hConp , SQLTDAP dbnamp ,
SQLTDAL dbnaml , SQLTMOD fType );
typedef byte2 (SBSTDCALL *sqldch_t)(SQLTCON hCon );
typedef byte2 (SBSTDCALL *sqlopc_t)(SQLTCUR PTR curp , SQLTCON hCon ,
SQLTMOD fType );
// API declarations
class SQLAPI_API sb6API : public saAPI
{
public:
sb6API();
sqlarf_t sqlarf;
sqlbbr_t sqlbbr;
sqlbdb_t sqlbdb;
sqlbef_t sqlbef;
sqlber_t sqlber;
sqlbkp_t sqlbkp;
sqlbld_t sqlbld;
sqlblf_t sqlblf;
sqlblk_t sqlblk;
sqlbln_t sqlbln;
sqlbna_t sqlbna;
sqlbnd_t sqlbnd;
sqlbnn_t sqlbnn;
sqlbnu_t sqlbnu;
sqlbss_t sqlbss;
sqlcan_t sqlcan;
sqlcbv_t sqlcbv;
sqlcdr_t sqlcdr;
sqlcex_t sqlcex;
sqlclf_t sqlclf;
sqlcmt_t sqlcmt;
sqlcnc_t sqlcnc;
sqlcnr_t sqlcnr;
sqlcom_t sqlcom;
sqlcon_t sqlcon;
sqlcpy_t sqlcpy;
sqlcre_t sqlcre;
sqlcrf_t sqlcrf;
sqlcrs_t sqlcrs;
sqlcsv_t sqlcsv;
sqlcty_t sqlcty;
sqldbn_t sqldbn;
sqlded_t sqlded;
sqldel_t sqldel;
sqldes_t sqldes;
sqldid_t sqldid;
sqldii_t sqldii;
sqldin_t sqldin;
sqldir_t sqldir;
sqldis_t sqldis;
sqldon_t sqldon;
sqldox_t sqldox;
sqldrc_t sqldrc;
sqldro_t sqldro;
sqldrr_t sqldrr;
sqldrs_t sqldrs;
sqldsc_t sqldsc;
sqldst_t sqldst;
sqldsv_t sqldsv;
sqlebk_t sqlebk;
sqlefb_t sqlefb;
sqlelo_t sqlelo;
sqlenr_t sqlenr;
sqlepo_t sqlepo;
sqlerf_t sqlerf;
sqlerr_t sqlerr;
sqlers_t sqlers;
sqletx_t sqletx;
sqlexe_t sqlexe;
sqlexp_t sqlexp;
sqlfbk_t sqlfbk;
sqlfer_t sqlfer;
sqlfet_t sqlfet;
sqlfgt_t sqlfgt;
sqlfpt_t sqlfpt;
sqlfqn_t sqlfqn;
sqlgbi_t sqlgbi;
sqlgdi_t sqlgdi;
sqlget_t sqlget;
sqlgfi_t sqlgfi;
sqlgls_t sqlgls;
sqlgnl_t sqlgnl;
sqlgnr_t sqlgnr;
sqlgsi_t sqlgsi;
sqlidb_t sqlidb;
sqlims_t sqlims;
sqlind_t sqlind;
sqlini_t sqlini;
sqlins_t sqlins;
sqllab_t sqllab;
sqlldp_t sqlldp;
sqllsk_t sqllsk;
sqlmcl_t sqlmcl;
sqlmdl_t sqlmdl;
sqlmop_t sqlmop;
sqlmrd_t sqlmrd;
sqlmsk_t sqlmsk;
sqlmwr_t sqlmwr;
sqlnbv_t sqlnbv;
sqlnii_t sqlnii;
sqlnrr_t sqlnrr;
sqlnsi_t sqlnsi;
sqloms_t sqloms;
sqlprs_t sqlprs;
sqlrbf_t sqlrbf;
sqlrbk_t sqlrbk;
sqlrcd_t sqlrcd;
sqlrdb_t sqlrdb;
sqlrdc_t sqlrdc;
sqlrel_t sqlrel;
sqlres_t sqlres;
sqlret_t sqlret;
sqlrlf_t sqlrlf;
sqlrlo_t sqlrlo;
sqlrof_t sqlrof;
sqlrow_t sqlrow;
sqlrrd_t sqlrrd;
sqlrrs_t sqlrrs;
sqlrsi_t sqlrsi;
sqlrss_t sqlrss;
sqlsab_t sqlsab;
sqlsap_t sqlsap;
sqlscl_t sqlscl;
sqlscn_t sqlscn;
sqlscp_t sqlscp;
sqlsdn_t sqlsdn;
sqlsds_t sqlsds;
sqlsdx_t sqlsdx;
sqlset_t sqlset;
sqlsil_t sqlsil;
sqlslp_t sqlslp;
sqlspr_t sqlspr;
sqlsrf_t sqlsrf;
sqlsrs_t sqlsrs;
sqlssb_t sqlssb;
sqlsss_t sqlsss;
sqlsta_t sqlsta;
sqlstm_t sqlstm;
sqlsto_t sqlsto;
sqlstr_t sqlstr;
sqlsxt_t sqlsxt;
sqlsys_t sqlsys;
sqltec_t sqltec;
sqltem_t sqltem;
sqltio_t sqltio;
sqlunl_t sqlunl;
sqlurs_t sqlurs;
sqlwdc_t sqlwdc;
sqlwlo_t sqlwlo;
sqlxad_t sqlxad;
sqlxcn_t sqlxcn;
sqlxda_t sqlxda;
sqlxdp_t sqlxdp;
sqlxdv_t sqlxdv;
sqlxer_t sqlxer;
sqlxml_t sqlxml;
sqlxnp_t sqlxnp;
sqlxpd_t sqlxpd;
sqlxsb_t sqlxsb;
};
// version 7 specific
class SQLAPI_API sb7API : public sb6API
{
public:
sb7API();
sqlcch_t sqlcch;
sqldch_t sqldch;
sqlopc_t sqlopc;
};
class SQLAPI_API sb6ConnectionHandles : public saConnectionHandles
{
public:
sb6ConnectionHandles();
SQLTCUR m_cur; // SQLBase cursor number
};
class SQLAPI_API sb7ConnectionHandles : public sb6ConnectionHandles
{
public:
sb7ConnectionHandles();
SQLTCON m_hCon;
};
class SQLAPI_API sbCommandHandles : public saCommandHandles
{
public:
sbCommandHandles();
SQLTCUR m_cur;
};
extern sb7API g_sb7API;
extern sb6API &g_sb6API;
#endif // !defined(__SB7API_H__)

View File

@ -0,0 +1,262 @@
//////////////////////////////////////////////////////////////////////
// slAPI.h
//////////////////////////////////////////////////////////////////////
#if !defined(__SLAPI_H__)
#define __SLAPI_H__
#include <SQLAPI.h>
#include <sqlite3.h>
extern void AddSQLite3Support(const SAConnection * pCon);
extern void ReleaseSQLite3Support();
typedef int (*sqlite3_open_t)(const void *filename, sqlite3 **ppDb);
typedef const char * (*sqlite3_libversion_t)(void);
typedef int (*sqlite3_libversion_number_t)(void);
typedef int (*sqlite3_threadsafe_t)(void);
typedef int (*sqlite3_close_t)(sqlite3 *);
typedef int (*sqlite3_extended_result_codes_t)(sqlite3*, int onoff);
typedef sqlite3_int64 (*sqlite3_last_insert_rowid_t)(sqlite3*);
typedef int (*sqlite3_changes_t)(sqlite3*);
typedef int (*sqlite3_total_changes_t)(sqlite3*);
typedef void (*sqlite3_interrupt_t)(sqlite3*);
typedef int (*sqlite3_complete_t)(const char *sql);
typedef int (*sqlite3_complete16_t)(const void *sql);
typedef int (*sqlite3_busy_handler_t)(sqlite3*, int(*)(void*,int), void*);
typedef int (*sqlite3_busy_timeout_t)(sqlite3*, int ms);
typedef void (*sqlite3_free_table_t)(char **result);
typedef char *(*sqlite3_mprintf_t)(const char*,...);
typedef char *(*sqlite3_vmprintf_t)(const char*, va_list);
typedef char *(*sqlite3_snprintf_t)(int,char*,const char*, ...);
typedef void *(*sqlite3_malloc_t)(int);
typedef void *(*sqlite3_realloc_t)(void*, int);
typedef void (*sqlite3_free_t)(void*);
typedef sqlite3_int64 (*sqlite3_memory_used_t)(void);
typedef sqlite3_int64 (*sqlite3_memory_highwater_t)(int resetFlag);
typedef void *(*sqlite3_trace_t)(sqlite3*, void(*xTrace)(void*,const char*), void*);
typedef void (*sqlite3_progress_handler_t)(sqlite3*, int, int(*)(void*), void*);
typedef int (*sqlite3_errcode_t)(sqlite3 *db);
typedef const void *(*sqlite3_errmsg_t)(sqlite3*);
typedef int (*sqlite3_bind_blob_t)(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
typedef int (*sqlite3_bind_double_t)(sqlite3_stmt*, int, double);
typedef int (*sqlite3_bind_int_t)(sqlite3_stmt*, int, int);
typedef int (*sqlite3_bind_int64_t)(sqlite3_stmt*, int, sqlite3_int64);
typedef int (*sqlite3_bind_null_t)(sqlite3_stmt*, int);
typedef int (*sqlite3_bind_text_t)(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
typedef int (*sqlite3_bind_value_t)(sqlite3_stmt*, int, const sqlite3_value*);
typedef int (*sqlite3_bind_zeroblob_t)(sqlite3_stmt*, int, int n);
typedef int (*sqlite3_bind_parameter_count_t)(sqlite3_stmt*);
typedef const char *(*sqlite3_bind_parameter_name_t)(sqlite3_stmt*, int);
typedef int (*sqlite3_bind_parameter_index_t)(sqlite3_stmt*, const char *zName);
typedef int (*sqlite3_clear_bindings_t)(sqlite3_stmt*);
typedef int (*sqlite3_column_count_t)(sqlite3_stmt *pStmt);
typedef const void *(*sqlite3_column_name_t)(sqlite3_stmt*, int N);
typedef const char *(*sqlite3_column_database_name_t)(sqlite3_stmt*,int);
typedef const void *(*sqlite3_column_database_name16_t)(sqlite3_stmt*,int);
typedef const char *(*sqlite3_column_table_name_t)(sqlite3_stmt*,int);
typedef const void *(*sqlite3_column_table_name16_t)(sqlite3_stmt*,int);
typedef const char *(*sqlite3_column_origin_name_t)(sqlite3_stmt*,int);
typedef const void *(*sqlite3_column_origin_name16_t)(sqlite3_stmt*,int);
typedef const void *(*sqlite3_column_decltype_t)(sqlite3_stmt *, int);
typedef int (*sqlite3_step_t)(sqlite3_stmt*);
typedef int (*sqlite3_data_count_t)(sqlite3_stmt *pStmt);
typedef const void *(*sqlite3_column_blob_t)(sqlite3_stmt*, int iCol);
typedef int (*sqlite3_column_bytes_t)(sqlite3_stmt*, int iCol);
typedef double (*sqlite3_column_double_t)(sqlite3_stmt*, int iCol);
typedef int (*sqlite3_column_int_t)(sqlite3_stmt*, int iCol);
typedef sqlite3_int64 (*sqlite3_column_int64_t)(sqlite3_stmt*, int iCol);
typedef const void *(*sqlite3_column_text_t)(sqlite3_stmt*, int iCol);
typedef int (*sqlite3_column_type_t)(sqlite3_stmt*, int iCol);
typedef sqlite3_value *(*sqlite3_column_value_t)(sqlite3_stmt*, int iCol);
typedef int (*sqlite3_finalize_t)(sqlite3_stmt *pStmt);
typedef int (*sqlite3_reset_t)(sqlite3_stmt *pStmt);
typedef int (*sqlite3_aggregate_count_t)(sqlite3_context*);
typedef int (*sqlite3_expired_t)(sqlite3_stmt*);
typedef int (*sqlite3_transfer_bindings_t)(sqlite3_stmt*, sqlite3_stmt*);
typedef int (*sqlite3_global_recover_t)(void);
typedef void (*sqlite3_thread_cleanup_t)(void);
typedef const void *(*sqlite3_value_blob_t)(sqlite3_value*);
typedef int (*sqlite3_value_bytes_t)(sqlite3_value*);
typedef int (*sqlite3_value_bytes16_t)(sqlite3_value*);
typedef double (*sqlite3_value_double_t)(sqlite3_value*);
typedef int (*sqlite3_value_int_t)(sqlite3_value*);
typedef sqlite3_int64 (*sqlite3_value_int64_t)(sqlite3_value*);
typedef const unsigned char *(*sqlite3_value_text_t)(sqlite3_value*);
typedef const void *(*sqlite3_value_text16_t)(sqlite3_value*);
typedef const void *(*sqlite3_value_text16le_t)(sqlite3_value*);
typedef const void *(*sqlite3_value_text16be_t)(sqlite3_value*);
typedef int (*sqlite3_value_type_t)(sqlite3_value*);
typedef int (*sqlite3_value_numeric_type_t)(sqlite3_value*);
typedef void *(*sqlite3_aggregate_context_t)(sqlite3_context*, int nBytes);
typedef void *(*sqlite3_user_data_t)(sqlite3_context*);
typedef void *(*sqlite3_get_auxdata_t)(sqlite3_context*, int);
typedef void (*sqlite3_set_auxdata_t)(sqlite3_context*, int, void*, void (*)(void*));
typedef void (*sqlite3_result_blob_t)(sqlite3_context*, const void*, int, void(*)(void*));
typedef void (*sqlite3_result_double_t)(sqlite3_context*, double);
typedef void (*sqlite3_result_error_t)(sqlite3_context*, const char*, int);
typedef void (*sqlite3_result_error16_t)(sqlite3_context*, const void*, int);
typedef void (*sqlite3_result_error_toobig_t)(sqlite3_context*);
typedef void (*sqlite3_result_error_nomem_t)(sqlite3_context*);
typedef void (*sqlite3_result_int_t)(sqlite3_context*, int);
typedef void (*sqlite3_result_int64_t)(sqlite3_context*, sqlite3_int64);
typedef void (*sqlite3_result_null_t)(sqlite3_context*);
typedef void (*sqlite3_result_text_t)(sqlite3_context*, const char*, int, void(*)(void*));
typedef void (*sqlite3_result_text16_t)(sqlite3_context*, const void*, int, void(*)(void*));
typedef void (*sqlite3_result_text16le_t)(sqlite3_context*, const void*, int,void(*)(void*));
typedef void (*sqlite3_result_text16be_t)(sqlite3_context*, const void*, int,void(*)(void*));
typedef void (*sqlite3_result_value_t)(sqlite3_context*, sqlite3_value*);
typedef void (*sqlite3_result_zeroblob_t)(sqlite3_context*, int n);
typedef int (*sqlite3_sleep_t)(int);
typedef int (*sqlite3_get_autocommit_t)(sqlite3*);
typedef sqlite3 *(*sqlite3_db_handle_t)(sqlite3_stmt*);
typedef void *(*sqlite3_commit_hook_t)(sqlite3*, int(*)(void*), void*);
typedef void *(*sqlite3_rollback_hook_t)(sqlite3*, void(*)(void *), void*);
typedef int (*sqlite3_enable_shared_cache_t)(int);
typedef int (*sqlite3_release_memory_t)(int);
typedef void (*sqlite3_soft_heap_limit_t)(int);
typedef int (*sqlite3_enable_load_extension_t)(sqlite3 *db, int onoff);
typedef int (*sqlite3_auto_extension_t)(void *xEntryPoint);
typedef void (*sqlite3_reset_auto_extension_t)(void);
typedef int (*sqlite3_declare_vtab_t)(sqlite3*, const char *zCreateTable);
typedef int (*sqlite3_overload_function_t)(sqlite3*, const char *zFuncName, int nArg);
typedef int (*sqlite3_blob_close_t)(sqlite3_blob *);
typedef int (*sqlite3_blob_bytes_t)(sqlite3_blob *);
typedef int (*sqlite3_blob_read_t)(sqlite3_blob *, void *z, int n, int iOffset);
typedef int (*sqlite3_blob_write_t)(sqlite3_blob *, const void *z, int n, int iOffset);
typedef sqlite3_vfs *(*sqlite3_vfs_find_t)(const char *zVfsName);
typedef int (*sqlite3_vfs_register_t)(sqlite3_vfs*, int makeDflt);
typedef int (*sqlite3_vfs_unregister_t)(sqlite3_vfs*);
typedef sqlite3_mutex *(*sqlite3_mutex_alloc_t)(int);
typedef void (*sqlite3_mutex_free_t)(sqlite3_mutex*);
typedef void (*sqlite3_mutex_enter_t)(sqlite3_mutex*);
typedef int (*sqlite3_mutex_try_t)(sqlite3_mutex*);
typedef void (*sqlite3_mutex_leave_t)(sqlite3_mutex*);
typedef int (*sqlite3_mutex_held_t)(sqlite3_mutex*);
typedef int (*sqlite3_mutex_notheld_t)(sqlite3_mutex*);
typedef int (*sqlite3_file_control_t)(sqlite3*, const char *zDbName, int op, void*);
typedef int (*sqlite3_exec_t)(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluted */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
typedef int (*sqlite3_prepare_t)(
sqlite3 *db, /* Database handle */
const void *zSql, /* SQL statement, UTF-16 encoded */
int nByte, /* Maximum length of zSql in bytes. */
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
const void **pzTail /* OUT: Pointer to unused portion of zSql */
);
typedef int (*sqlite3_open_v2_t)(const char *filename, sqlite3 **ppDb, int flags, const char *zVfs);
typedef sqlite3_backup *(*sqlite3_backup_init_t)(
sqlite3 *pDest, /* Destination database handle */
const char *zDestName, /* Destination database name */
sqlite3 *pSource, /* Source database handle */
const char *zSourceName /* Source database name */
);
typedef int (*sqlite3_backup_step_t)(sqlite3_backup *p, int nPage);
typedef int (*sqlite3_backup_finish_t)(sqlite3_backup *p);
typedef int (*sqlite3_backup_remaining_t)(sqlite3_backup *p);
typedef int (*sqlite3_backup_pagecount_t)(sqlite3_backup *p);
typedef int (*sqlite3_table_column_metadata_t)(
sqlite3 *db, /* Connection handle */
const char *zDbName, /* Database name or NULL */
const char *zTableName, /* Table name */
const char *zColumnName, /* Column name */
char const **pzDataType, /* OUTPUT: Declared data type */
char const **pzCollSeq, /* OUTPUT: Collation sequence name */
int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
int *pPrimaryKey, /* OUTPUT: True if column part of PK */
int *pAutoinc /* OUTPUT: True if column is auto-increment */
);
typedef void *(*sqlite3_update_hook_t)(
sqlite3*,
void(*)(void *,int ,char const *,char const *,sqlite3_int64),
void*
);
// API declarations
class SQLAPI_API sl3API : public saAPI
{
public:
sl3API();
sqlite3_open_t sqlite3_open;
sqlite3_libversion_t sqlite3_libversion;
sqlite3_libversion_number_t sqlite3_libversion_number;
sqlite3_errcode_t sqlite3_errcode;
sqlite3_errmsg_t sqlite3_errmsg;
sqlite3_close_t sqlite3_close;
sqlite3_exec_t sqlite3_exec;
sqlite3_prepare_t sqlite3_prepare;
sqlite3_bind_parameter_index_t sqlite3_bind_parameter_index;
sqlite3_column_count_t sqlite3_column_count;
sqlite3_column_name_t sqlite3_column_name;
sqlite3_column_type_t sqlite3_column_type;
sqlite3_column_bytes_t sqlite3_column_bytes;
sqlite3_step_t sqlite3_step;
sqlite3_db_handle_t sqlite3_db_handle;
sqlite3_reset_t sqlite3_reset;
sqlite3_clear_bindings_t sqlite3_clear_bindings;
sqlite3_finalize_t sqlite3_finalize;
sqlite3_interrupt_t sqlite3_interrupt;
sqlite3_changes_t sqlite3_changes;
sqlite3_column_int64_t sqlite3_column_int64;
sqlite3_column_double_t sqlite3_column_double;
sqlite3_column_blob_t sqlite3_column_blob;
sqlite3_column_text_t sqlite3_column_text;
sqlite3_bind_blob_t sqlite3_bind_blob;
sqlite3_bind_double_t sqlite3_bind_double;
sqlite3_bind_int_t sqlite3_bind_int;
sqlite3_bind_int64_t sqlite3_bind_int64;
sqlite3_bind_null_t sqlite3_bind_null;
sqlite3_bind_text_t sqlite3_bind_text;
sqlite3_busy_handler_t sqlite3_busy_handler;
sqlite3_busy_timeout_t sqlite3_busy_timeout;
sqlite3_threadsafe_t sqlite3_threadsafe;
sqlite3_last_insert_rowid_t sqlite3_last_insert_rowid;
sqlite3_column_decltype_t sqlite3_column_decltype;
sqlite3_open_v2_t sqlite3_open_v2;
sqlite3_backup_init_t sqlite3_backup_init;
sqlite3_backup_step_t sqlite3_backup_step;
sqlite3_backup_finish_t sqlite3_backup_finish;
sqlite3_backup_remaining_t sqlite3_backup_remaining;
sqlite3_backup_pagecount_t sqlite3_backup_pagecount;
sqlite3_table_column_metadata_t sqlite3_table_column_metadata;
sqlite3_column_value_t sqlite3_column_value;
sqlite3_value_type_t sqlite3_value_type;
sqlite3_update_hook_t sqlite3_update_hook;
sqlite3_enable_load_extension_t sqlite3_enable_load_extension;
};
class SQLAPI_API sl3ConnectionHandles : public saConnectionHandles
{
public:
sl3ConnectionHandles();
sqlite3 *pDb;
};
class SQLAPI_API sl3CommandHandles : public saCommandHandles
{
public:
sl3CommandHandles();
sqlite3_stmt *pStmt;
};
extern sl3API g_sl3API;
#endif //__SLAPI_H__

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,375 @@
// ss6API.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__SS6API_H__)
#define __SS6API_H__
#include "SQLAPI.h"
// API header(s)
#define DBNTWIN32
#include "./ss_win/sqlfront.h"
#include "./ss_win/sqldb.h"
extern long g_nSSDBLibDLLVersionLoaded;
extern void AddSSDbLibSupport();
extern void ReleaseSSDbLibSupport();
typedef DBERRHANDLE_PROC (SQLAPI *dberrhandle_t)(DBERRHANDLE_PROC);
typedef DBMSGHANDLE_PROC (SQLAPI *dbmsghandle_t)(DBMSGHANDLE_PROC);
typedef DBERRHANDLE_PROC (SQLAPI *dbprocerrhandle_t)(PDBHANDLE, DBERRHANDLE_PROC);
typedef DBMSGHANDLE_PROC (SQLAPI *dbprocmsghandle_t)(PDBHANDLE, DBMSGHANDLE_PROC);
// Two-phase commit functions
typedef RETCODE (SQLAPI *abort_xact_t) (PDBPROCESS, DBINT);
typedef void (SQLAPI *build_xact_string_t) (LPCSTR, LPCSTR, DBINT, LPSTR);
typedef void (SQLAPI *close_commit_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *commit_xact_t) (PDBPROCESS, DBINT);
typedef PDBPROCESS (SQLAPI *open_commit_t) (PLOGINREC, LPCSTR);
typedef RETCODE (SQLAPI *remove_xact_t) (PDBPROCESS, DBINT, INT);
typedef RETCODE (SQLAPI *scan_xact_t) (PDBPROCESS, DBINT);
typedef DBINT (SQLAPI *start_xact_t) (PDBPROCESS, LPCSTR, LPCSTR, INT);
typedef INT (SQLAPI *stat_xact_t) (PDBPROCESS, DBINT);
// BCP functions
typedef DBINT (SQLAPI *bcp_batch_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *bcp_bind_t) (PDBPROCESS, LPCBYTE, INT, DBINT, LPCBYTE, INT, INT, INT);
typedef RETCODE (SQLAPI *bcp_colfmt_t) (PDBPROCESS, INT, BYTE, INT, DBINT, LPCBYTE, INT, INT);
typedef RETCODE (SQLAPI *bcp_collen_t) (PDBPROCESS, DBINT, INT);
typedef RETCODE (SQLAPI *bcp_colptr_t) (PDBPROCESS, LPCBYTE, INT);
typedef RETCODE (SQLAPI *bcp_columns_t) (PDBPROCESS, INT);
typedef RETCODE (SQLAPI *bcp_control_t) (PDBPROCESS, INT, DBINT);
typedef DBINT (SQLAPI *bcp_done_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *bcp_exec_t) (PDBPROCESS, LPDBINT);
typedef RETCODE (SQLAPI *bcp_init_t) (PDBPROCESS, LPCSTR, LPCSTR, LPCSTR, INT);
typedef RETCODE (SQLAPI *bcp_moretext_t) (PDBPROCESS, DBINT, LPCBYTE);
typedef RETCODE (SQLAPI *bcp_readfmt_t) (PDBPROCESS, LPCSTR);
typedef RETCODE (SQLAPI *bcp_sendrow_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *bcp_setl_t) (PLOGINREC, BOOL);
typedef RETCODE (SQLAPI *bcp_writefmt_t) (PDBPROCESS, LPCSTR);
// Standard DB-Library functions
typedef LPCBYTE (SQLAPI *dbadata_t) (PDBPROCESS, INT, INT);
typedef DBINT (SQLAPI *dbadlen_t) (PDBPROCESS, INT, INT);
typedef RETCODE (SQLAPI *dbaltbind_t) (PDBPROCESS, INT, INT, INT, DBINT, LPCBYTE);
typedef INT (SQLAPI *dbaltcolid_t) (PDBPROCESS, INT, INT);
typedef DBINT (SQLAPI *dbaltlen_t) (PDBPROCESS, INT, INT);
typedef INT (SQLAPI *dbaltop_t) (PDBPROCESS, INT, INT);
typedef INT (SQLAPI *dbalttype_t) (PDBPROCESS, INT, INT);
typedef DBINT (SQLAPI *dbaltutype_t) (PDBPROCESS, INT, INT);
typedef RETCODE (SQLAPI *dbanullbind_t) (PDBPROCESS, INT, INT, LPCDBINT);
typedef RETCODE (SQLAPI *dbbind_t) (PDBPROCESS, INT, INT, DBINT, LPBYTE);
typedef LPCBYTE (SQLAPI *dbbylist_t) (PDBPROCESS, INT, LPINT);
typedef RETCODE (SQLAPI *dbcancel_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbcanquery_t) (PDBPROCESS);
typedef LPCSTR (SQLAPI *dbchange_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbclose_t) (PDBPROCESS);
typedef void (SQLAPI *dbclrbuf_t) (PDBPROCESS, DBINT);
typedef RETCODE (SQLAPI *dbclropt_t) (PDBPROCESS, INT, LPCSTR);
typedef RETCODE (SQLAPI *dbcmd_t) (PDBPROCESS, LPCSTR);
typedef RETCODE (SQLAPI *dbcmdrow_t) (PDBPROCESS);
typedef BOOL (SQLAPI *dbcolbrowse_t) (PDBPROCESS, INT);
typedef RETCODE (SQLAPI *dbcolinfo_t) (PDBHANDLE, INT, INT, INT, LPDBCOL);
typedef DBINT (SQLAPI *dbcollen_t) (PDBPROCESS, INT);
typedef LPCSTR (SQLAPI *dbcolname_t) (PDBPROCESS, INT);
typedef LPCSTR (SQLAPI *dbcolsource_t) (PDBPROCESS, INT);
typedef INT (SQLAPI *dbcoltype_t) (PDBPROCESS, INT);
typedef DBINT (SQLAPI *dbcolutype_t) (PDBPROCESS, INT);
typedef INT (SQLAPI *dbconvert_t) (PDBPROCESS, INT, LPCBYTE, DBINT, INT, LPBYTE, DBINT);
typedef DBINT (SQLAPI *dbcount_t) (PDBPROCESS);
typedef INT (SQLAPI *dbcurcmd_t) (PDBPROCESS);
typedef DBINT (SQLAPI *dbcurrow_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbcursor_t) (PDBCURSOR, INT, INT, LPCSTR, LPCSTR);
typedef RETCODE (SQLAPI *dbcursorbind_t) (PDBCURSOR, INT, INT, DBINT, LPDBINT, LPBYTE);
typedef RETCODE (SQLAPI *dbcursorclose_t) (PDBHANDLE);
typedef RETCODE (SQLAPI *dbcursorcolinfo_t) (PDBCURSOR, INT, LPSTR, LPINT, LPDBINT, LPINT);
typedef RETCODE (SQLAPI *dbcursorfetch_t) (PDBCURSOR, INT, INT);
typedef RETCODE (SQLAPI *dbcursorfetchex_t) (PDBCURSOR, INT, DBINT, DBINT, DBINT);
typedef RETCODE (SQLAPI *dbcursorinfo_t) (PDBCURSOR, LPINT, LPDBINT);
typedef RETCODE (SQLAPI *dbcursorinfoex_t) (PDBCURSOR, LPDBCURSORINFO);
typedef PDBCURSOR (SQLAPI *dbcursoropen_t) (PDBPROCESS, LPCSTR, INT, INT,UINT, LPDBINT);
typedef LPCBYTE (SQLAPI *dbdata_t) (PDBPROCESS, INT);
typedef BOOL (SQLAPI *dbdataready_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbdatecrack_t) (PDBPROCESS, LPDBDATEREC, LPCDBDATETIME);
typedef DBINT (SQLAPI *dbdatlen_t) (PDBPROCESS, INT);
typedef BOOL (SQLAPI *dbdead_t) (PDBPROCESS);
typedef void (SQLAPI *dbexit_t) (void);
typedef RETCODE (SQLAPI *dbenlisttrans_t) (PDBPROCESS, LPVOID);
typedef RETCODE (SQLAPI *dbenlistxatrans_t) (PDBPROCESS, BOOL);
typedef RETCODE (SQLAPI *dbfcmd_t) (PDBPROCESS, LPCSTR, ...);
typedef DBINT (SQLAPI *dbfirstrow_t) (PDBPROCESS);
typedef void (SQLAPI *dbfreebuf_t) (PDBPROCESS);
typedef void (SQLAPI *dbfreelogin_t) (PLOGINREC);
typedef void (SQLAPI *dbfreequal_t) (LPCSTR);
typedef LPSTR (SQLAPI *dbgetchar_t) (PDBPROCESS, INT);
typedef SHORT (SQLAPI *dbgetmaxprocs_t) (void);
typedef INT (SQLAPI *dbgetoff_t) (PDBPROCESS, DBUSMALLINT, INT);
typedef UINT (SQLAPI *dbgetpacket_t) (PDBPROCESS);
typedef STATUS (SQLAPI *dbgetrow_t) (PDBPROCESS, DBINT);
typedef INT (SQLAPI *dbgettime_t) (void);
typedef LPVOID (SQLAPI *dbgetuserdata_t) (PDBPROCESS);
typedef BOOL (SQLAPI *dbhasretstat_t) (PDBPROCESS);
typedef LPCSTR (SQLAPI *dbinit_t) (void);
typedef BOOL (SQLAPI *dbisavail_t) (PDBPROCESS);
typedef BOOL (SQLAPI *dbiscount_t) (PDBPROCESS);
typedef BOOL (SQLAPI *dbisopt_t) (PDBPROCESS, INT, LPCSTR);
typedef DBINT (SQLAPI *dblastrow_t) (PDBPROCESS);
typedef PLOGINREC (SQLAPI *dblogin_t) (void);
typedef RETCODE (SQLAPI *dbmorecmds_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbmoretext_t) (PDBPROCESS, DBINT, LPCBYTE);
typedef LPCSTR (SQLAPI *dbname_t) (PDBPROCESS);
typedef STATUS (SQLAPI *dbnextrow_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbnullbind_t) (PDBPROCESS, INT, LPCDBINT);
typedef INT (SQLAPI *dbnumalts_t) (PDBPROCESS, INT);
typedef INT (SQLAPI *dbnumcols_t) (PDBPROCESS);
typedef INT (SQLAPI *dbnumcompute_t) (PDBPROCESS);
typedef INT (SQLAPI *dbnumorders_t) (PDBPROCESS);
typedef INT (SQLAPI *dbnumrets_t) (PDBPROCESS);
typedef PDBPROCESS (SQLAPI *dbopen_t) (PLOGINREC, LPCSTR);
typedef INT (SQLAPI *dbordercol_t) (PDBPROCESS, INT);
typedef RETCODE (SQLAPI *dbprocinfo_t) (PDBPROCESS, LPDBPROCINFO);
typedef void (SQLAPI *dbprhead_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbprrow_t) (PDBPROCESS);
typedef LPCSTR (SQLAPI *dbprtype_t) (INT);
typedef LPCSTR (SQLAPI *dbqual_t) (PDBPROCESS, INT, LPCSTR);
typedef DBINT (SQLAPI *dbreadpage_t) (PDBPROCESS, LPCSTR, DBINT, LPBYTE);
typedef DBINT (SQLAPI *dbreadtext_t) (PDBPROCESS, LPVOID, DBINT);
typedef RETCODE (SQLAPI *dbresults_t) (PDBPROCESS);
typedef LPCBYTE (SQLAPI *dbretdata_t) (PDBPROCESS, INT);
typedef DBINT (SQLAPI *dbretlen_t) (PDBPROCESS, INT);
typedef LPCSTR (SQLAPI *dbretname_t) (PDBPROCESS, INT);
typedef DBINT (SQLAPI *dbretstatus_t) (PDBPROCESS);
typedef INT (SQLAPI *dbrettype_t) (PDBPROCESS, INT);
typedef RETCODE (SQLAPI *dbrows_t) (PDBPROCESS);
typedef STATUS (SQLAPI *dbrowtype_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbrpcinit_t) (PDBPROCESS, LPCSTR, DBSMALLINT);
typedef RETCODE (SQLAPI *dbrpcparam_t) (PDBPROCESS, LPCSTR, BYTE, INT, DBINT, DBINT, LPCBYTE);
typedef RETCODE (SQLAPI *dbrpcsend_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbrpcexec_t) (PDBPROCESS);
typedef void (SQLAPI *dbrpwclr_t) (PLOGINREC);
typedef RETCODE (SQLAPI *dbrpwset_t) (PLOGINREC, LPCSTR, LPCSTR, INT);
typedef INT (SQLAPI *dbserverenum_t) (USHORT, LPSTR, USHORT, LPUSHORT);
typedef void (SQLAPI *dbsetavail_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbsetmaxprocs_t) (SHORT);
typedef RETCODE (SQLAPI *dbsetlname_t) (PLOGINREC, LPCSTR, INT);
typedef RETCODE (SQLAPI *dbsetlogintime_t) (INT);
typedef RETCODE (SQLAPI *dbsetlpacket_t) (PLOGINREC, USHORT);
typedef RETCODE (SQLAPI *dbsetnull_t) (PDBPROCESS, INT, INT, LPCBYTE);
typedef RETCODE (SQLAPI *dbsetopt_t) (PDBPROCESS, INT, LPCSTR);
typedef RETCODE (SQLAPI *dbsettime_t) (INT);
typedef void (SQLAPI *dbsetuserdata_t) (PDBPROCESS, LPVOID);
typedef RETCODE (SQLAPI *dbsqlexec_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbsqlok_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbsqlsend_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbstrcpy_t) (PDBPROCESS, INT, INT, LPSTR);
typedef INT (SQLAPI *dbstrlen_t) (PDBPROCESS);
typedef BOOL (SQLAPI *dbtabbrowse_t) (PDBPROCESS, INT);
typedef INT (SQLAPI *dbtabcount_t) (PDBPROCESS);
typedef LPCSTR (SQLAPI *dbtabname_t) (PDBPROCESS, INT);
typedef LPCSTR (SQLAPI *dbtabsource_t) (PDBPROCESS, INT, LPINT);
typedef INT (SQLAPI *dbtsnewlen_t) (PDBPROCESS);
typedef LPCDBBINARY (SQLAPI *dbtsnewval_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbtsput_t) (PDBPROCESS, LPCDBBINARY, INT, INT, LPCSTR);
typedef LPCDBBINARY (SQLAPI *dbtxptr_t) (PDBPROCESS, INT);
typedef LPCDBBINARY (SQLAPI *dbtxtimestamp_t) (PDBPROCESS, INT);
typedef LPCDBBINARY (SQLAPI *dbtxtsnewval_t) (PDBPROCESS);
typedef RETCODE (SQLAPI *dbtxtsput_t) (PDBPROCESS, LPCDBBINARY, INT);
typedef RETCODE (SQLAPI *dbuse_t) (PDBPROCESS, LPCSTR);
typedef BOOL (SQLAPI *dbvarylen_t) (PDBPROCESS, INT);
typedef BOOL (SQLAPI *dbwillconvert_t) (INT, INT);
typedef RETCODE (SQLAPI *dbwritepage_t) (PDBPROCESS, LPCSTR, DBINT, DBINT, LPBYTE);
typedef RETCODE (SQLAPI *dbwritetext_t) (PDBPROCESS, LPCSTR, LPCDBBINARY, DBTINYINT, LPCDBBINARY, BOOL, DBINT, LPCBYTE);
typedef RETCODE (SQLAPI *dbupdatetext_t) (PDBPROCESS, LPCSTR, LPCDBBINARY, LPCDBBINARY, INT, DBINT, DBINT, LPCSTR, DBINT, LPCDBBINARY);
// API declarations
class ssAPI : public saAPI
{
public:
ssAPI();
dberrhandle_t dberrhandle;
dbmsghandle_t dbmsghandle;
dbprocerrhandle_t dbprocerrhandle;
dbprocmsghandle_t dbprocmsghandle;
// Two-phase commit functions
abort_xact_t abort_xact;
build_xact_string_t build_xact_string;
close_commit_t close_commit;
commit_xact_t commit_xact;
open_commit_t open_commit;
remove_xact_t remove_xact;
scan_xact_t scan_xact;
start_xact_t start_xact;
stat_xact_t stat_xact;
// BCP functions
bcp_batch_t bcp_batch;
bcp_bind_t bcp_bind;
bcp_colfmt_t bcp_colfmt;
bcp_collen_t bcp_collen;
bcp_colptr_t bcp_colptr;
bcp_columns_t bcp_columns;
bcp_control_t bcp_control;
bcp_done_t bcp_done;
bcp_exec_t bcp_exec;
bcp_init_t bcp_init;
bcp_moretext_t bcp_moretext;
bcp_readfmt_t bcp_readfmt;
bcp_sendrow_t bcp_sendrow;
bcp_setl_t bcp_setl;
bcp_writefmt_t bcp_writefmt;
// Standard DB-Library functions
dbadata_t dbadata;
dbadlen_t dbadlen;
dbaltbind_t dbaltbind;
dbaltcolid_t dbaltcolid;
dbaltlen_t dbaltlen;
dbaltop_t dbaltop;
dbalttype_t dbalttype;
dbaltutype_t dbaltutype;
dbanullbind_t dbanullbind;
dbbind_t dbbind;
dbbylist_t dbbylist;
dbcancel_t dbcancel;
dbcanquery_t dbcanquery;
dbchange_t dbchange;
dbclose_t dbclose;
dbclrbuf_t dbclrbuf;
dbclropt_t dbclropt;
dbcmd_t dbcmd;
dbcmdrow_t dbcmdrow;
dbcolbrowse_t dbcolbrowse;
dbcolinfo_t dbcolinfo;
dbcollen_t dbcollen;
dbcolname_t dbcolname;
dbcolsource_t dbcolsource;
dbcoltype_t dbcoltype;
dbcolutype_t dbcolutype;
dbconvert_t dbconvert;
dbcount_t dbcount;
dbcurcmd_t dbcurcmd;
dbcurrow_t dbcurrow;
dbcursor_t dbcursor;
dbcursorbind_t dbcursorbind;
dbcursorclose_t dbcursorclose;
dbcursorcolinfo_t dbcursorcolinfo;
dbcursorfetch_t dbcursorfetch;
dbcursorfetchex_t dbcursorfetchex;
dbcursorinfo_t dbcursorinfo;
dbcursorinfoex_t dbcursorinfoex;
dbcursoropen_t dbcursoropen;
dbdata_t dbdata;
dbdataready_t dbdataready;
dbdatecrack_t dbdatecrack;
dbdatlen_t dbdatlen;
dbdead_t dbdead;
dbexit_t dbexit;
dbenlisttrans_t dbenlisttrans;
dbenlistxatrans_t dbenlistxatrans;
dbfcmd_t dbfcmd;
dbfirstrow_t dbfirstrow;
dbfreebuf_t dbfreebuf;
dbfreelogin_t dbfreelogin;
dbfreequal_t dbfreequal;
dbgetchar_t dbgetchar;
dbgetmaxprocs_t dbgetmaxprocs;
dbgetoff_t dbgetoff;
dbgetpacket_t dbgetpacket;
dbgetrow_t dbgetrow;
dbgettime_t dbgettime;
dbgetuserdata_t dbgetuserdata;
dbhasretstat_t dbhasretstat;
dbinit_t dbinit;
dbisavail_t dbisavail;
dbiscount_t dbiscount;
dbisopt_t dbisopt;
dblastrow_t dblastrow;
dblogin_t dblogin;
dbmorecmds_t dbmorecmds;
dbmoretext_t dbmoretext;
dbname_t dbname;
dbnextrow_t dbnextrow;
dbnullbind_t dbnullbind;
dbnumalts_t dbnumalts;
dbnumcols_t dbnumcols;
dbnumcompute_t dbnumcompute;
dbnumorders_t dbnumorders;
dbnumrets_t dbnumrets;
dbopen_t dbopen;
dbordercol_t dbordercol;
dbprocinfo_t dbprocinfo;
dbprhead_t dbprhead;
dbprrow_t dbprrow;
dbprtype_t dbprtype;
dbqual_t dbqual;
dbreadpage_t dbreadpage;
dbreadtext_t dbreadtext;
dbresults_t dbresults;
dbretdata_t dbretdata;
dbretlen_t dbretlen;
dbretname_t dbretname;
dbretstatus_t dbretstatus;
dbrettype_t dbrettype;
dbrows_t dbrows;
dbrowtype_t dbrowtype;
dbrpcinit_t dbrpcinit;
dbrpcparam_t dbrpcparam;
dbrpcsend_t dbrpcsend;
dbrpcexec_t dbrpcexec;
dbrpwclr_t dbrpwclr;
dbrpwset_t dbrpwset;
dbserverenum_t dbserverenum;
dbsetavail_t dbsetavail;
dbsetmaxprocs_t dbsetmaxprocs;
dbsetlname_t dbsetlname;
dbsetlogintime_t dbsetlogintime;
dbsetlpacket_t dbsetlpacket;
dbsetnull_t dbsetnull;
dbsetopt_t dbsetopt;
dbsettime_t dbsettime;
dbsetuserdata_t dbsetuserdata;
dbsqlexec_t dbsqlexec;
dbsqlok_t dbsqlok;
dbsqlsend_t dbsqlsend;
dbstrcpy_t dbstrcpy;
dbstrlen_t dbstrlen;
dbtabbrowse_t dbtabbrowse;
dbtabcount_t dbtabcount;
dbtabname_t dbtabname;
dbtabsource_t dbtabsource;
dbtsnewlen_t dbtsnewlen;
dbtsnewval_t dbtsnewval;
dbtsput_t dbtsput;
dbtxptr_t dbtxptr;
dbtxtimestamp_t dbtxtimestamp;
dbtxtsnewval_t dbtxtsnewval;
dbtxtsput_t dbtxtsput;
dbuse_t dbuse;
dbvarylen_t dbvarylen;
dbwillconvert_t dbwillconvert;
dbwritepage_t dbwritepage;
dbwritetext_t dbwritetext;
dbupdatetext_t dbupdatetext;
};
class SQLAPI_API ssConnectionHandles : public saConnectionHandles
{
public:
ssConnectionHandles();
PDBPROCESS m_dbproc;
};
class SQLAPI_API ssCommandHandles : public saCommandHandles
{
public:
ssCommandHandles();
};
extern ssAPI g_ssAPI;
#endif // !defined(__SS6API_H__)

View File

@ -0,0 +1,561 @@
// SQL Server Native API
//
//////////////////////////////////////////////////////////////////////
#if !defined(__SSNCLIAPI_H__)
#define __SSNCLIAPI_H__
#include "SQLAPI.h"
// MSVC++ 6.0 doesn't have this
#ifdef SQLAPI_WINDOWS
#ifndef DBROWCOUNT
#ifdef _WIN64
typedef LONGLONG DBROWCOUNT;
#else
typedef LONG DBROWCOUNT;
#endif
#endif
#ifndef DBCOUNTITEM
#ifdef _WIN64
typedef ULONGLONG DBCOUNTITEM;
#else
typedef ULONG DBCOUNTITEM;
#endif
#endif
#ifndef DBORDINAL
#ifdef _WIN64
typedef ULONGLONG DBORDINAL;
#else
typedef ULONG DBORDINAL;
#endif
#endif
#ifndef DB_UPARAMS
#ifdef _WIN64
typedef ULONGLONG DB_UPARAMS;
#else
typedef ULONG DB_UPARAMS;
#endif
#endif
#ifndef SQLLEN
#ifdef _WIN64
typedef INT64 SQLLEN;
#else
#define SQLLEN SQLINTEGER
#endif
#endif
#ifndef SQLULEN
#ifdef _WIN64
typedef UINT64 SQLULEN;
#else
#define SQLULEN SQLUINTEGER
#endif
#endif
#ifndef SQLSETPOSIROW
#ifdef _WIN64
typedef UINT64 SQLSETPOSIROW;
#else
#define SQLSETPOSIROW SQLUSMALLINT
#endif
#endif
#endif
#define SQLNCLI_NO_BCP
#define _SQLNCLI_OLEDB_IGNORE_DEPRECATION_WARNING_
#define _SQLUSERINSTANCE_H_
#ifndef __deref_out
#define __deref_out
#define __in_bcount
#define __in_z
#define __in
#endif
// API header(s)
#include <sql.h>
#include <sqlext.h>
#ifdef SQLAPI_WINDOWS
#include <sqlncli.h>
#else
#include <msodbcsql.h>
#endif
extern void AddNCliSupport(const SAConnection *pCon);
extern void ReleaseNCliSupport();
typedef SQLRETURN (SQL_API *SQLAllocHandle_t)(SQLSMALLINT HandleType,
SQLHANDLE InputHandle, SQLHANDLE *OutputHandle);
typedef SQLRETURN (SQL_API *SQLBindCol_t)(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLSMALLINT TargetType,
SQLPOINTER TargetValue,
SQLLEN BufferLength,
SQLLEN *StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLBindParameter_t)(
SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT fParamType,
SQLSMALLINT fCType,
SQLSMALLINT fSqlType,
SQLULEN cbColDef,
SQLSMALLINT ibScale,
SQLPOINTER rgbValue,
SQLLEN cbValueMax,
SQLLEN *pcbValue);
typedef SQLRETURN (SQL_API *SQLBulkOperations_t)(
SQLHSTMT StatementHandle,
SQLSMALLINT Operation);
typedef SQLRETURN (SQL_API *SQLBrowseConnectW_t)(
SQLHDBC hdbc,
SQLWCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLWCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut);
typedef SQLRETURN (SQL_API *SQLCancel_t)(SQLHSTMT StatementHandle);
typedef SQLRETURN (SQL_API *SQLCloseCursor_t)(SQLHSTMT StatementHandle);
#if defined(_WIN64) || defined(SA_64BIT)
typedef SQLRETURN (SQL_API *SQLColAttributeW_t)(
SQLHSTMT hstmt,
SQLUSMALLINT iCol,
SQLUSMALLINT iField,
SQLPOINTER pCharAttr,
SQLSMALLINT cbCharAttrMax,
SQLSMALLINT *pcbCharAttr,
SQLLEN *pNumAttr);
#else
typedef SQLRETURN (SQL_API *SQLColAttributeW_t)(
SQLHSTMT hstmt,
SQLUSMALLINT iCol,
SQLUSMALLINT iField,
SQLPOINTER pCharAttr,
SQLSMALLINT cbCharAttrMax,
SQLSMALLINT *pcbCharAttr,
SQLPOINTER pNumAttr);
#endif
typedef SQLRETURN (SQL_API *SQLColumnPrivilegesW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLWCHAR *szColumnName,
SQLSMALLINT cbColumnName);
typedef SQLRETURN (SQL_API *SQLColumnsW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLWCHAR *szColumnName,
SQLSMALLINT cbColumnName);
typedef SQLRETURN (SQL_API *SQLConnectW_t)(
SQLHDBC hdbc,
SQLWCHAR *szDSN,
SQLSMALLINT cbDSN,
SQLWCHAR *szUID,
SQLSMALLINT cbUID,
SQLWCHAR *szAuthStr,
SQLSMALLINT cbAuthStr);
typedef SQLRETURN (SQL_API *SQLCopyDesc_t)(SQLHDESC SourceDescHandle,
SQLHDESC TargetDescHandle);
typedef SQLRETURN (SQL_API *SQLDescribeColW_t)(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLWCHAR *szColName,
SQLSMALLINT cbColNameMax,
SQLSMALLINT *pcbColName,
SQLSMALLINT *pfSqlType,
SQLULEN *pcbColDef,
SQLSMALLINT *pibScale,
SQLSMALLINT *pfNullable);
typedef SQLRETURN (SQL_API *SQLDescribeParam_t)(
SQLHSTMT hstmt,
SQLUSMALLINT ipar,
SQLSMALLINT *pfSqlType,
SQLULEN *pcbParamDef,
SQLSMALLINT *pibScale,
SQLSMALLINT *pfNullable);
typedef SQLRETURN (SQL_API *SQLDisconnect_t)(SQLHDBC ConnectionHandle);
typedef SQLRETURN (SQL_API *SQLDriverConnectW_t)(
SQLHDBC hdbc,
SQLHWND hwnd,
SQLWCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLWCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut,
SQLUSMALLINT fDriverCompletion);
typedef SQLRETURN (SQL_API *SQLEndTran_t)(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT CompletionType);
typedef SQLRETURN (SQL_API *SQLExecDirectW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szSqlStr,
SQLINTEGER cbSqlStr);
typedef SQLRETURN (SQL_API *SQLExecute_t)(SQLHSTMT StatementHandle);
typedef SQLRETURN (SQL_API *SQLExtendedFetch_t)(
SQLHSTMT hstmt,
SQLUSMALLINT fFetchType,
SQLLEN irow,
SQLULEN *pcrow,
SQLUSMALLINT *rgfRowStatus);
typedef SQLRETURN (SQL_API *SQLFetch_t)(SQLHSTMT StatementHandle);
typedef SQLRETURN (SQL_API *SQLFetchScroll_t)(
SQLHSTMT StatementHandle,
SQLSMALLINT FetchOrientation,
SQLLEN FetchOffset);
typedef SQLRETURN (SQL_API *SQLFreeHandle_t)(SQLSMALLINT HandleType, SQLHANDLE Handle);
typedef SQLRETURN (SQL_API *SQLFreeStmt_t)(SQLHSTMT StatementHandle,
SQLUSMALLINT Option);
typedef SQLRETURN (SQL_API *SQLForeignKeysW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szPkCatalogName,
SQLSMALLINT cbPkCatalogName,
SQLWCHAR *szPkSchemaName,
SQLSMALLINT cbPkSchemaName,
SQLWCHAR *szPkTableName,
SQLSMALLINT cbPkTableName,
SQLWCHAR *szFkCatalogName,
SQLSMALLINT cbFkCatalogName,
SQLWCHAR *szFkSchemaName,
SQLSMALLINT cbFkSchemaName,
SQLWCHAR *szFkTableName,
SQLSMALLINT cbFkTableName);
typedef SQLRETURN (SQL_API *SQLGetConnectAttrW_t)(
SQLHDBC hdbc,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue);
typedef SQLRETURN (SQL_API *SQLGetConnectOptionW_t)(
SQLHDBC hdbc,
SQLUSMALLINT fOption,
SQLPOINTER pvParam);
typedef SQLRETURN (SQL_API *SQLGetCursorNameW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szCursor,
SQLSMALLINT cbCursorMax,
SQLSMALLINT *pcbCursor);
typedef SQLRETURN (SQL_API *SQLGetData_t)(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLSMALLINT TargetType,
SQLPOINTER TargetValue,
SQLLEN BufferLength,
SQLLEN *StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLGetDescFieldW_t)(
SQLHDESC hdesc,
SQLSMALLINT iRecord,
SQLSMALLINT iField,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue);
typedef SQLRETURN (SQL_API *SQLGetDescRecW_t)(
SQLHDESC hdesc,
SQLSMALLINT iRecord,
SQLWCHAR *szName,
SQLSMALLINT cbNameMax,
SQLSMALLINT *pcbName,
SQLSMALLINT *pfType,
SQLSMALLINT *pfSubType,
SQLLEN *pLength,
SQLSMALLINT *pPrecision,
SQLSMALLINT *pScale,
SQLSMALLINT *pNullable);
typedef SQLRETURN (SQL_API *SQLGetDiagFieldW_t)(
SQLSMALLINT fHandleType,
SQLHANDLE handle,
SQLSMALLINT iRecord,
SQLSMALLINT fDiagField,
SQLPOINTER rgbDiagInfo,
SQLSMALLINT cbDiagInfoMax,
SQLSMALLINT *pcbDiagInfo);
typedef SQLRETURN (SQL_API *SQLGetDiagRecW_t)(
SQLSMALLINT fHandleType,
SQLHANDLE handle,
SQLSMALLINT iRecord,
SQLWCHAR *szSqlState,
SQLINTEGER *pfNativeError,
SQLWCHAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT *pcbErrorMsg);
typedef SQLRETURN (SQL_API *SQLGetEnvAttr_t)(
SQLHENV EnvironmentHandle,
SQLINTEGER Attribute,
SQLPOINTER Value,
SQLINTEGER BufferLength,
SQLINTEGER *StringLength);
typedef SQLRETURN (SQL_API *SQLGetFunctions_t)(
SQLHDBC ConnectionHandle,
SQLUSMALLINT FunctionId,
SQLUSMALLINT *Supported);
typedef SQLRETURN (SQL_API *SQLGetInfoW_t)(
SQLHDBC hdbc,
SQLUSMALLINT fInfoType,
SQLPOINTER rgbInfoValue,
SQLSMALLINT cbInfoValueMax,
SQLSMALLINT *pcbInfoValue);
typedef SQLRETURN (SQL_API *SQLGetTypeInfoW_t)(
SQLHSTMT StatementHandle,
SQLSMALLINT DataType);
typedef SQLRETURN (SQL_API *SQLGetStmtAttrW_t)(
SQLHSTMT hstmt,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue);
typedef SQLRETURN (SQL_API *SQLMoreResults_t)(
SQLHSTMT hstmt);
typedef SQLRETURN (SQL_API *SQLNativeSqlW_t)(
SQLHDBC hdbc,
SQLWCHAR *szSqlStrIn,
SQLINTEGER cbSqlStrIn,
SQLWCHAR *szSqlStr,
SQLINTEGER cbSqlStrMax,
SQLINTEGER *pcbSqlStr);
typedef SQLRETURN (SQL_API *SQLNumParams_t)(
SQLHSTMT hstmt,
SQLSMALLINT *pcpar);
typedef SQLRETURN (SQL_API *SQLNumResultCols_t)(
SQLHSTMT StatementHandle,
SQLSMALLINT *ColumnCount);
typedef SQLRETURN (SQL_API *SQLParamData_t)(
SQLHSTMT StatementHandle,
SQLPOINTER *Value);
typedef SQLRETURN (SQL_API *SQLParamOptions_t)(
SQLHSTMT hstmt,
SQLULEN crow,
SQLULEN *pirow);
typedef SQLRETURN (SQL_API *SQLPrepareW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szSqlStr,
SQLINTEGER cbSqlStr);
typedef SQLRETURN (SQL_API *SQLPrimaryKeysW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName);
typedef SQLRETURN (SQL_API *SQLProcedureColumnsW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szProcName,
SQLSMALLINT cbProcName,
SQLWCHAR *szColumnName,
SQLSMALLINT cbColumnName);
typedef SQLRETURN (SQL_API *SQLProceduresW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szProcName,
SQLSMALLINT cbProcName);
typedef SQLRETURN (SQL_API *SQLPutData_t)(
SQLHSTMT StatementHandle,
SQLPOINTER Data,
SQLLEN StrLen_or_Ind);
typedef SQLRETURN (SQL_API *SQLRowCount_t)(
SQLHSTMT StatementHandle,
SQLLEN *RowCount);
typedef SQLRETURN (SQL_API *SQLSetConnectAttrW_t)(
SQLHDBC hdbc,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValue);
typedef SQLRETURN (SQL_API *SQLSetConnectOptionW_t)(
SQLHDBC hdbc,
SQLUSMALLINT fOption,
SQLULEN vParam);
typedef SQLRETURN (SQL_API *SQLSetCursorNameW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szCursor,
SQLSMALLINT cbCursor);
typedef SQLRETURN (SQL_API *SQLSetDescFieldW_t)(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT FieldIdentifier,
SQLPOINTER Value,
SQLINTEGER BufferLength);
typedef SQLRETURN (SQL_API *SQLSetDescRec_t)(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT Type,
SQLSMALLINT SubType,
SQLLEN Length,
SQLSMALLINT Precision,
SQLSMALLINT Scale,
SQLPOINTER Data,
SQLLEN *StringLength,
SQLLEN *Indicator);
typedef SQLRETURN (SQL_API *SQLSetEnvAttr_t)(SQLHENV EnvironmentHandle,
SQLINTEGER Attribute, SQLPOINTER Value,
SQLINTEGER StringLength);
typedef SQLRETURN (SQL_API *SQLSetPos_t)(
SQLHSTMT hstmt,
SQLSETPOSIROW irow,
SQLUSMALLINT fOption,
SQLUSMALLINT fLock);
typedef SQLRETURN (SQL_API *SQLSetScrollOptions_t)(
SQLHSTMT hstmt,
SQLUSMALLINT fConcurrency,
SQLLEN crowKeyset,
SQLUSMALLINT crowRowset);
typedef SQLRETURN (SQL_API *SQLSetStmtAttrW_t)(
SQLHSTMT hstmt,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax);
typedef SQLRETURN (SQL_API *SQLSpecialColumnsW_t)(
SQLHSTMT hstmt,
SQLUSMALLINT fColType,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT fScope,
SQLUSMALLINT fNullable);
typedef SQLRETURN (SQL_API *SQLStatisticsW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT fUnique,
SQLUSMALLINT fAccuracy);
typedef SQLRETURN (SQL_API *SQLTablePrivilegesW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName);
typedef SQLRETURN (SQL_API *SQLTablesW_t)(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLWCHAR *szTableType,
SQLSMALLINT cbTableType);
#ifdef SQLAPI_WINDOWS
typedef HANDLE (_stdcall *OpenSqlFilestream_t) (
LPCWSTR FilestreamPath,
SQL_FILESTREAM_DESIRED_ACCESS DesiredAccess,
ULONG OpenOptions,
LPBYTE FilestreamTransactionContext,
SSIZE_T FilestreamTransactionContextLength,
PLARGE_INTEGER AllocationSize);
#endif
class SQLAPI_API ssNCliAPI : public saAPI
{
public:
ssNCliAPI();
SQLAllocHandle_t SQLAllocHandle; // 3.0
SQLBindCol_t SQLBindCol; // 1.0
SQLBindParameter_t SQLBindParameter; // 2.0
SQLBulkOperations_t SQLBulkOperations; // 3.0
SQLBrowseConnectW_t SQLBrowseConnectW; // 3.0
SQLCancel_t SQLCancel; // 1.0
SQLCloseCursor_t SQLCloseCursor; // 3.0
SQLColAttributeW_t SQLColAttributeW;
SQLColumnPrivilegesW_t SQLColumnPrivilegesW;
SQLColumnsW_t SQLColumnsW;
SQLConnectW_t SQLConnectW;
SQLCopyDesc_t SQLCopyDesc; // 3.0
SQLDescribeColW_t SQLDescribeColW; // 1.0
SQLDescribeParam_t SQLDescribeParam; // 1.0
SQLDisconnect_t SQLDisconnect; // 1.0
SQLDriverConnectW_t SQLDriverConnectW; // 1.0
SQLEndTran_t SQLEndTran; // 3.0
SQLExecDirectW_t SQLExecDirectW;
SQLExecute_t SQLExecute; // 1.0
SQLExtendedFetch_t SQLExtendedFetch; // 1.0
SQLFetch_t SQLFetch; // 1.0
SQLFetchScroll_t SQLFetchScroll; // 1.0
SQLForeignKeysW_t SQLForeignKeysW;
SQLFreeHandle_t SQLFreeHandle; // 3.0
SQLFreeStmt_t SQLFreeStmt; // 1.0
SQLGetConnectAttrW_t SQLGetConnectAttrW; // 3.0
SQLGetConnectOptionW_t SQLGetConnectOptionW;
SQLGetCursorNameW_t SQLGetCursorNameW;
SQLGetData_t SQLGetData; // 1.0
SQLGetDescFieldW_t SQLGetDescFieldW;
SQLGetDescRecW_t SQLGetDescRecW;
SQLGetDiagFieldW_t SQLGetDiagFieldW;
SQLGetDiagRecW_t SQLGetDiagRecW; // 3.0
SQLGetEnvAttr_t SQLGetEnvAttr; // 3.0
SQLGetFunctions_t SQLGetFunctions; // 1.0
SQLGetInfoW_t SQLGetInfoW; // 1.0
SQLGetStmtAttrW_t SQLGetStmtAttrW; // 3.0
SQLGetTypeInfoW_t SQLGetTypeInfoW;
SQLMoreResults_t SQLMoreResults; // 1.0
SQLNativeSqlW_t SQLNativeSqlW;
SQLNumParams_t SQLNumParams; // 1.0
SQLNumResultCols_t SQLNumResultCols; // 1.0
SQLParamData_t SQLParamData; // 1.0
SQLParamOptions_t SQLParamOptions; // 1.0
SQLPrepareW_t SQLPrepareW; // 1.0
SQLPrimaryKeysW_t SQLPrimaryKeysW;
SQLProcedureColumnsW_t SQLProcedureColumnsW;// 1.0
SQLProceduresW_t SQLProceduresW; // 1.0
SQLPutData_t SQLPutData; // 1.0
SQLRowCount_t SQLRowCount; // 1.0
SQLSetConnectAttrW_t SQLSetConnectAttrW; // 3.0
SQLSetConnectOptionW_t SQLSetConnectOptionW;// 1.0
SQLSetCursorNameW_t SQLSetCursorNameW; // 1.0
SQLSetDescFieldW_t SQLSetDescFieldW; // 3.0
SQLSetDescRec_t SQLSetDescRec; // 3.0
SQLSetEnvAttr_t SQLSetEnvAttr; // 3.0
SQLSetPos_t SQLSetPos; // 1.0
SQLSetScrollOptions_t SQLSetScrollOptions;// 1.0
SQLSetStmtAttrW_t SQLSetStmtAttrW; // 3.0
SQLSpecialColumnsW_t SQLSpecialColumnsW; // 1.0
SQLStatisticsW_t SQLStatisticsW; // 1.0
SQLTablePrivilegesW_t SQLTablePrivilegesW;// 1.0
SQLTablesW_t SQLTablesW; // 1.0
#ifdef SQLAPI_WINDOWS
OpenSqlFilestream_t OpenSqlFilestream;
#endif
};
class SQLAPI_API ssNCliConnectionHandles : public saConnectionHandles
{
public:
ssNCliConnectionHandles();
SQLHENV m_hevn;
SQLHDBC m_hdbc;
};
class SQLAPI_API ssNCliCommandHandles : public saCommandHandles
{
public:
ssNCliCommandHandles();
SQLHSTMT m_hstmt;
};
extern ssNCliAPI g_ssNCliAPI;
#endif // !defined(__SSNCLIAPI_H__)

View File

@ -0,0 +1,46 @@
// ssOleDbAPI.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__SSOLEDBAPI_H__)
#define __SSOLEDBAPI_H__
#include "SQLAPI.h"
// API header(s)
#include <oledb.h>
extern void AddSSOleDbSupport();
extern void ReleaseSSOleDbSupport();
// API declarations
class ssOleDbAPI : public saAPI
{
public:
ssOleDbAPI();
};
class SQLAPI_API ssOleDbConnectionHandles : public saConnectionHandles
{
public:
ssOleDbConnectionHandles();
IDBInitialize *pIDBInitialize;
IDBCreateCommand *pIDBCreateCommand;
ITransactionLocal *pITransactionLocal;
IDBDataSourceAdmin *pIDBDataSourceAdmin;
};
class SQLAPI_API ssOleDbCommandHandles : public saCommandHandles
{
public:
ssOleDbCommandHandles();
ICommandText *pICommandText;
IMultipleResults *pIMultipleResults;
IRowset *pIRowset;
};
extern ssOleDbAPI g_ssOleDbAPI;
#endif // !defined(__SSOLEDBAPI_H__)

View File

@ -0,0 +1,255 @@
#ifndef _INC_SQLDB
#define _INC_SQLDB
#ifdef __cplusplus
extern "C" {
#endif
/*****************************************************************************
* *
* SQLDB.H - DB-Library header file for the Microsoft SQL Server. *
* *
* Copyright (c) 1989 - 1995 by Microsoft Corp. All rights reserved. *
* *
*****************************************************************************/
// Macros for setting the PLOGINREC
#define DBSETLHOST(a,b) dbsetlname ((a), (b), DBSETHOST)
#define DBSETLUSER(a,b) dbsetlname ((a), (b), DBSETUSER)
#define DBSETLPWD(a,b) dbsetlname ((a), (b), DBSETPWD)
#define DBSETLAPP(a,b) dbsetlname ((a), (b), DBSETAPP)
#define BCP_SETL(a,b) bcp_setl ((a), (b))
#define DBSETLNATLANG(a,b) dbsetlname ((a), (b), DBSETLANG)
#define DBSETLPACKET(a,b) dbsetlpacket ((a), (b))
#define DBSETLSECURE(a) dbsetlname ((a), 0, DBSETSECURE)
#define DBSETLVERSION(a,b) dbsetlname ((a), 0, (b))
#define DBSETLTIME(a,b) dbsetlname ((a), (LPCSTR)(ULONG)(b), DBSETLOGINTIME)
#define DBSETLFALLBACK(a,b) dbsetlname ((a), (b), DBSETFALLBACK)
/*****************************************************************************
* Windows 3.x and Non-Windows 3.x differences. *
*****************************************************************************/
#ifdef DBMSWIN
extern void SQLAPI dbwinexit(void);
void SQLAPI dblocklib (void);
void SQLAPI dbunlocklib (void);
#define DBLOCKLIB() dblocklib()
#define DBUNLOCKLIB() dbunlocklib()
#define DBERRHANDLE_PROC FARPROC
#define DBMSGHANDLE_PROC FARPROC
extern DBERRHANDLE_PROC dberrhandle (DBERRHANDLE_PROC);
extern DBMSGHANDLE_PROC dbmsghandle (DBMSGHANDLE_PROC);
#else
#define dbwinexit()
#define DBLOCKLIB()
#define DBUNLOCKLIB()
typedef INT (SQLAPI *DBERRHANDLE_PROC)(PDBPROCESS, INT, INT, INT, LPCSTR, LPCSTR);
typedef INT (SQLAPI *DBMSGHANDLE_PROC)(PDBPROCESS, DBINT, INT, INT, LPCSTR, LPCSTR, LPCSTR, DBUSMALLINT);
extern DBERRHANDLE_PROC SQLAPI dberrhandle(DBERRHANDLE_PROC);
extern DBMSGHANDLE_PROC SQLAPI dbmsghandle(DBMSGHANDLE_PROC);
extern DBERRHANDLE_PROC SQLAPI dbprocerrhandle(PDBHANDLE, DBERRHANDLE_PROC);
extern DBMSGHANDLE_PROC SQLAPI dbprocmsghandle(PDBHANDLE, DBMSGHANDLE_PROC);
#endif
/*****************************************************************************
* Function Prototypes *
*****************************************************************************/
// Functions macros
#define DBCMDROW(a) dbcmdrow(a)
#define DBCOUNT(a) dbcount (a)
#define DBCURCMD(a) dbcurcmd(a)
#define DBCURROW(a) dbcurrow(a)
#define DBDEAD(a) dbdead(a)
#define DBFIRSTROW(a) dbfirstrow(a)
#define DBGETTIME() dbgettime()
#define DBISAVAIL(a) dbisavail(a)
#define DBLASTROW(a) dblastrow(a)
#define DBMORECMDS(a) dbmorecmds(a)
#define DBNUMORDERS(a) dbnumorders(a)
#define dbrbuf(a) ((DBINT)dbdataready(a))
#define DBRBUF(a) ((DBINT)dbdataready(a))
#define DBROWS(a) dbrows (a)
#define DBROWTYPE(a) dbrowtype (a)
// Two-phase commit functions
extern RETCODE SQLAPI abort_xact (PDBPROCESS, DBINT);
extern void SQLAPI build_xact_string (LPCSTR, LPCSTR, DBINT, LPSTR);
extern void SQLAPI close_commit (PDBPROCESS);
extern RETCODE SQLAPI commit_xact (PDBPROCESS, DBINT);
extern PDBPROCESS SQLAPI open_commit (PLOGINREC, LPCSTR);
extern RETCODE SQLAPI remove_xact (PDBPROCESS, DBINT, INT);
extern RETCODE SQLAPI scan_xact (PDBPROCESS, DBINT);
extern DBINT SQLAPI start_xact (PDBPROCESS, LPCSTR, LPCSTR, INT);
extern INT SQLAPI stat_xact (PDBPROCESS, DBINT);
// BCP functions
extern DBINT SQLAPI bcp_batch (PDBPROCESS);
extern RETCODE SQLAPI bcp_bind (PDBPROCESS, LPCBYTE, INT, DBINT, LPCBYTE, INT, INT, INT);
extern RETCODE SQLAPI bcp_colfmt (PDBPROCESS, INT, BYTE, INT, DBINT, LPCBYTE, INT, INT);
extern RETCODE SQLAPI bcp_collen (PDBPROCESS, DBINT, INT);
extern RETCODE SQLAPI bcp_colptr (PDBPROCESS, LPCBYTE, INT);
extern RETCODE SQLAPI bcp_columns (PDBPROCESS, INT);
extern RETCODE SQLAPI bcp_control (PDBPROCESS, INT, DBINT);
extern DBINT SQLAPI bcp_done (PDBPROCESS);
extern RETCODE SQLAPI bcp_exec (PDBPROCESS, LPDBINT);
extern RETCODE SQLAPI bcp_init (PDBPROCESS, LPCSTR, LPCSTR, LPCSTR, INT);
extern RETCODE SQLAPI bcp_moretext (PDBPROCESS, DBINT, LPCBYTE);
extern RETCODE SQLAPI bcp_readfmt (PDBPROCESS, LPCSTR);
extern RETCODE SQLAPI bcp_sendrow (PDBPROCESS);
extern RETCODE SQLAPI bcp_setl (PLOGINREC, BOOL);
extern RETCODE SQLAPI bcp_writefmt (PDBPROCESS, LPCSTR);
// Standard DB-Library functions
extern LPCBYTE SQLAPI dbadata (PDBPROCESS, INT, INT);
extern DBINT SQLAPI dbadlen (PDBPROCESS, INT, INT);
extern RETCODE SQLAPI dbaltbind (PDBPROCESS, INT, INT, INT, DBINT, LPCBYTE);
extern INT SQLAPI dbaltcolid (PDBPROCESS, INT, INT);
extern DBINT SQLAPI dbaltlen (PDBPROCESS, INT, INT);
extern INT SQLAPI dbaltop (PDBPROCESS, INT, INT);
extern INT SQLAPI dbalttype (PDBPROCESS, INT, INT);
extern DBINT SQLAPI dbaltutype (PDBPROCESS, INT, INT);
extern RETCODE SQLAPI dbanullbind (PDBPROCESS, INT, INT, LPCDBINT);
extern RETCODE SQLAPI dbbind (PDBPROCESS, INT, INT, DBINT, LPBYTE);
extern LPCBYTE SQLAPI dbbylist (PDBPROCESS, INT, LPINT);
extern RETCODE SQLAPI dbcancel (PDBPROCESS);
extern RETCODE SQLAPI dbcanquery (PDBPROCESS);
extern LPCSTR SQLAPI dbchange (PDBPROCESS);
extern RETCODE SQLAPI dbclose (PDBPROCESS);
extern void SQLAPI dbclrbuf (PDBPROCESS, DBINT);
extern RETCODE SQLAPI dbclropt (PDBPROCESS, INT, LPCSTR);
extern RETCODE SQLAPI dbcmd (PDBPROCESS, LPCSTR);
extern RETCODE SQLAPI dbcmdrow (PDBPROCESS);
extern BOOL SQLAPI dbcolbrowse (PDBPROCESS, INT);
extern RETCODE SQLAPI dbcolinfo (PDBHANDLE, INT, INT, INT, LPDBCOL);
extern DBINT SQLAPI dbcollen (PDBPROCESS, INT);
extern LPCSTR SQLAPI dbcolname (PDBPROCESS, INT);
extern LPCSTR SQLAPI dbcolsource (PDBPROCESS, INT);
extern INT SQLAPI dbcoltype (PDBPROCESS, INT);
extern DBINT SQLAPI dbcolutype (PDBPROCESS, INT);
extern INT SQLAPI dbconvert (PDBPROCESS, INT, LPCBYTE, DBINT, INT, LPBYTE, DBINT);
extern DBINT SQLAPI dbcount (PDBPROCESS);
extern INT SQLAPI dbcurcmd (PDBPROCESS);
extern DBINT SQLAPI dbcurrow (PDBPROCESS);
extern RETCODE SQLAPI dbcursor (PDBCURSOR, INT, INT, LPCSTR, LPCSTR);
extern RETCODE SQLAPI dbcursorbind (PDBCURSOR, INT, INT, DBINT, LPDBINT, LPBYTE);
extern RETCODE SQLAPI dbcursorclose (PDBHANDLE);
extern RETCODE SQLAPI dbcursorcolinfo (PDBCURSOR, INT, LPSTR, LPINT, LPDBINT, LPINT);
extern RETCODE SQLAPI dbcursorfetch (PDBCURSOR, INT, INT);
extern RETCODE SQLAPI dbcursorfetchex (PDBCURSOR, INT, DBINT, DBINT, DBINT);
extern RETCODE SQLAPI dbcursorinfo (PDBCURSOR, LPINT, LPDBINT);
extern RETCODE SQLAPI dbcursorinfoex (PDBCURSOR, LPDBCURSORINFO);
extern PDBCURSOR SQLAPI dbcursoropen (PDBPROCESS, LPCSTR, INT, INT,UINT, LPDBINT);
extern LPCBYTE SQLAPI dbdata (PDBPROCESS, INT);
extern BOOL SQLAPI dbdataready (PDBPROCESS);
extern RETCODE SQLAPI dbdatecrack (PDBPROCESS, LPDBDATEREC, LPCDBDATETIME);
extern DBINT SQLAPI dbdatlen (PDBPROCESS, INT);
extern BOOL SQLAPI dbdead (PDBPROCESS);
extern void SQLAPI dbexit (void);
extern RETCODE SQLAPI dbenlisttrans(PDBPROCESS, LPVOID);
extern RETCODE SQLAPI dbenlistxatrans(PDBPROCESS, BOOL);
extern RETCODE SQLAPI dbfcmd (PDBPROCESS, LPCSTR, ...);
extern DBINT SQLAPI dbfirstrow (PDBPROCESS);
extern void SQLAPI dbfreebuf (PDBPROCESS);
extern void SQLAPI dbfreelogin (PLOGINREC);
extern void SQLAPI dbfreequal (LPCSTR);
extern LPSTR SQLAPI dbgetchar (PDBPROCESS, INT);
extern SHORT SQLAPI dbgetmaxprocs (void);
extern INT SQLAPI dbgetoff (PDBPROCESS, DBUSMALLINT, INT);
extern UINT SQLAPI dbgetpacket (PDBPROCESS);
extern STATUS SQLAPI dbgetrow (PDBPROCESS, DBINT);
extern INT SQLAPI dbgettime (void);
extern LPVOID SQLAPI dbgetuserdata (PDBPROCESS);
extern BOOL SQLAPI dbhasretstat (PDBPROCESS);
extern LPCSTR SQLAPI dbinit (void);
extern BOOL SQLAPI dbisavail (PDBPROCESS);
extern BOOL SQLAPI dbiscount (PDBPROCESS);
extern BOOL SQLAPI dbisopt (PDBPROCESS, INT, LPCSTR);
extern DBINT SQLAPI dblastrow (PDBPROCESS);
extern PLOGINREC SQLAPI dblogin (void);
extern RETCODE SQLAPI dbmorecmds (PDBPROCESS);
extern RETCODE SQLAPI dbmoretext (PDBPROCESS, DBINT, LPCBYTE);
extern LPCSTR SQLAPI dbname (PDBPROCESS);
extern STATUS SQLAPI dbnextrow (PDBPROCESS);
extern RETCODE SQLAPI dbnullbind (PDBPROCESS, INT, LPCDBINT);
extern INT SQLAPI dbnumalts (PDBPROCESS, INT);
extern INT SQLAPI dbnumcols (PDBPROCESS);
extern INT SQLAPI dbnumcompute (PDBPROCESS);
extern INT SQLAPI dbnumorders (PDBPROCESS);
extern INT SQLAPI dbnumrets (PDBPROCESS);
extern PDBPROCESS SQLAPI dbopen (PLOGINREC, LPCSTR);
extern INT SQLAPI dbordercol (PDBPROCESS, INT);
extern RETCODE SQLAPI dbprocinfo (PDBPROCESS, LPDBPROCINFO);
extern void SQLAPI dbprhead (PDBPROCESS);
extern RETCODE SQLAPI dbprrow (PDBPROCESS);
extern LPCSTR SQLAPI dbprtype (INT);
extern LPCSTR SQLAPI dbqual (PDBPROCESS, INT, LPCSTR);
extern DBINT SQLAPI dbreadpage (PDBPROCESS, LPCSTR, DBINT, LPBYTE);
extern DBINT SQLAPI dbreadtext (PDBPROCESS, LPVOID, DBINT);
extern RETCODE SQLAPI dbresults (PDBPROCESS);
extern LPCBYTE SQLAPI dbretdata (PDBPROCESS, INT);
extern DBINT SQLAPI dbretlen (PDBPROCESS, INT);
extern LPCSTR SQLAPI dbretname (PDBPROCESS, INT);
extern DBINT SQLAPI dbretstatus (PDBPROCESS);
extern INT SQLAPI dbrettype (PDBPROCESS, INT);
extern RETCODE SQLAPI dbrows (PDBPROCESS);
extern STATUS SQLAPI dbrowtype (PDBPROCESS);
extern RETCODE SQLAPI dbrpcinit (PDBPROCESS, LPCSTR, DBSMALLINT);
extern RETCODE SQLAPI dbrpcparam (PDBPROCESS, LPCSTR, BYTE, INT, DBINT, DBINT, LPCBYTE);
extern RETCODE SQLAPI dbrpcsend (PDBPROCESS);
extern RETCODE SQLAPI dbrpcexec (PDBPROCESS);
extern void SQLAPI dbrpwclr (PLOGINREC);
extern RETCODE SQLAPI dbrpwset (PLOGINREC, LPCSTR, LPCSTR, INT);
extern INT SQLAPI dbserverenum (USHORT, LPSTR, USHORT, LPUSHORT);
extern void SQLAPI dbsetavail (PDBPROCESS);
extern RETCODE SQLAPI dbsetmaxprocs (SHORT);
extern RETCODE SQLAPI dbsetlname (PLOGINREC, LPCSTR, INT);
extern RETCODE SQLAPI dbsetlogintime (INT);
extern RETCODE SQLAPI dbsetlpacket (PLOGINREC, USHORT);
extern RETCODE SQLAPI dbsetnull (PDBPROCESS, INT, INT, LPCBYTE);
extern RETCODE SQLAPI dbsetopt (PDBPROCESS, INT, LPCSTR);
extern RETCODE SQLAPI dbsettime (INT);
extern void SQLAPI dbsetuserdata (PDBPROCESS, LPVOID);
extern RETCODE SQLAPI dbsqlexec (PDBPROCESS);
extern RETCODE SQLAPI dbsqlok (PDBPROCESS);
extern RETCODE SQLAPI dbsqlsend (PDBPROCESS);
extern RETCODE SQLAPI dbstrcpy (PDBPROCESS, INT, INT, LPSTR);
extern INT SQLAPI dbstrlen (PDBPROCESS);
extern BOOL SQLAPI dbtabbrowse (PDBPROCESS, INT);
extern INT SQLAPI dbtabcount (PDBPROCESS);
extern LPCSTR SQLAPI dbtabname (PDBPROCESS, INT);
extern LPCSTR SQLAPI dbtabsource (PDBPROCESS, INT, LPINT);
extern INT SQLAPI dbtsnewlen (PDBPROCESS);
extern LPCDBBINARY SQLAPI dbtsnewval (PDBPROCESS);
extern RETCODE SQLAPI dbtsput (PDBPROCESS, LPCDBBINARY, INT, INT, LPCSTR);
extern LPCDBBINARY SQLAPI dbtxptr (PDBPROCESS, INT);
extern LPCDBBINARY SQLAPI dbtxtimestamp (PDBPROCESS, INT);
extern LPCDBBINARY SQLAPI dbtxtsnewval (PDBPROCESS);
extern RETCODE SQLAPI dbtxtsput (PDBPROCESS, LPCDBBINARY, INT);
extern RETCODE SQLAPI dbuse (PDBPROCESS, LPCSTR);
extern BOOL SQLAPI dbvarylen (PDBPROCESS, INT);
extern BOOL SQLAPI dbwillconvert (INT, INT);
extern RETCODE SQLAPI dbwritepage (PDBPROCESS, LPCSTR, DBINT, DBINT, LPBYTE);
extern RETCODE SQLAPI dbwritetext (PDBPROCESS, LPCSTR, LPCDBBINARY, DBTINYINT, LPCDBBINARY, BOOL, DBINT, LPCBYTE);
extern RETCODE SQLAPI dbupdatetext(PDBPROCESS, LPCSTR, LPCDBBINARY, LPCDBBINARY, INT, DBINT, DBINT, LPCSTR, DBINT, LPCDBBINARY);
#ifdef __cplusplus
}
#endif
#endif // _INC_SQLDB

View File

@ -0,0 +1,795 @@
#ifndef _INC_SQLFRONT
#define _INC_SQLFRONT
#ifdef DBNTWIN32
#ifndef _WINDOWS_
#pragma message (__FILE__ " : db-library error: windows.h must be included before sqlfront.h.")
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*****************************************************************************
* *
* SQLFRONT.H - DB-Library header file for the Microsoft SQL Server. *
* *
* Copyright (c) 1989 - 1995 by Microsoft Corp. All rights reserved. *
* *
* All constant and macro definitions for DB-Library applications programming *
* are contained in this file. This file must be included before SQLDB.H and *
* one of the following #defines must be made, depending on the operating *
* system: DBMSDOS, DBMSWIN or DBNTWIN32. *
* *
*****************************************************************************/
/*****************************************************************************
* Datatype definitions *
*****************************************************************************/
// Note this has changed because Windows 3.1 defines API as 'pascal far'
#if !defined(M_I86SM) && !defined(DBNTWIN32)
#define SQLAPI cdecl far
#else
#define SQLAPI _cdecl
#endif
#ifndef API
#define API SQLAPI
#endif
#ifndef DOUBLE
typedef double DOUBLE;
#endif
/*****************************************************************************
* DBPROCESS, LOGINREC and DBCURSOR *
*****************************************************************************/
#define DBPROCESS void // dbprocess structure type
#define LOGINREC void // login record type
#define DBCURSOR void // cursor record type
#define DBHANDLE void // generic handle
// DOS Specific
#ifdef DBMSDOS
typedef DBPROCESS * PDBPROCESS;
typedef LOGINREC * PLOGINREC;
typedef DBCURSOR * PDBCURSOR;
typedef DBHANDLE * PDBHANDLE;
#define PTR *
#endif
// WIN 3.x Specific. The handle pointers are near for Windows 3.x
#ifdef DBMSWIN
typedef DBPROCESS near * PDBPROCESS;
typedef LOGINREC near * PLOGINREC;
typedef DBCURSOR near * PDBCURSOR;
typedef DBHANDLE near * PDBHANDLE;
#define PTR far *
#endif
// Windows NT Specific
#ifdef DBNTWIN32
typedef DBPROCESS * PDBPROCESS;
typedef LOGINREC * PLOGINREC;
typedef DBCURSOR * PDBCURSOR;
typedef DBHANDLE * PDBHANDLE;
#define PTR *
typedef int (SQLAPI *SQLFARPROC)();
#else
typedef long (far pascal *LGFARPROC)(); // Windows loadable driver fp
#endif
/*****************************************************************************
* Win32 compatibility datatype definitions *
* Note: The following datatypes are provided for Win32 compatibility. *
* Since some of the datatypes are already defined in unrelated include files *
* there may definition duplication. Every attempt has been made to check *
* for such problems. *
*****************************************************************************/
#ifndef DBNTWIN32
#ifndef SHORT
typedef short SHORT;
#endif
#ifndef INT
typedef int INT;
#endif
#ifndef UINT
typedef unsigned int UINT;
#endif
#ifndef USHORT
typedef unsigned short USHORT;
#endif
#ifndef ULONG
typedef unsigned long ULONG;
#endif
#ifndef CHAR
typedef char CHAR;
#endif
#ifndef LPINT
typedef INT PTR LPINT;
#endif
typedef unsigned char BYTE;
typedef CHAR PTR LPSTR;
typedef BYTE PTR LPBYTE;
typedef void PTR LPVOID;
typedef const CHAR PTR LPCSTR;
typedef int BOOL;
#endif
/*****************************************************************************
* DB-Library datatype definitions *
*****************************************************************************/
#define DBMAXCHAR 256 // Max length of DBVARBINARY and DBVARCHAR, etc.
#ifndef DBTYPEDEFS // srv.h (Open Server include) not already included
#define DBTYPEDEFS
#define RETCODE INT
#define STATUS INT
// DB-Library datatypes
typedef char DBCHAR;
typedef unsigned char DBBINARY;
typedef unsigned char DBTINYINT;
typedef short DBSMALLINT;
typedef unsigned short DBUSMALLINT;
typedef long DBINT;
typedef double DBFLT8;
typedef unsigned char DBBIT;
typedef unsigned char DBBOOL;
typedef float DBFLT4;
typedef long DBMONEY4;
typedef DBFLT4 DBREAL;
typedef UINT DBUBOOL;
typedef struct dbdatetime4
{
USHORT numdays; // No of days since Jan-1-1900
USHORT nummins; // No. of minutes since midnight
} DBDATETIM4;
typedef struct dbvarychar
{
DBSMALLINT len;
DBCHAR str[DBMAXCHAR];
} DBVARYCHAR;
typedef struct dbvarybin
{
DBSMALLINT len;
BYTE array[DBMAXCHAR];
} DBVARYBIN;
typedef struct dbmoney
{
DBINT mnyhigh;
ULONG mnylow;
} DBMONEY;
typedef struct dbdatetime
{
DBINT dtdays;
ULONG dttime;
} DBDATETIME;
// DBDATEREC structure used by dbdatecrack
typedef struct dbdaterec
{
INT year; // 1753 - 9999
INT quarter; // 1 - 4
INT month; // 1 - 12
INT dayofyear; // 1 - 366
INT day; // 1 - 31
INT week; // 1 - 54 (for leap years)
INT weekday; // 1 - 7 (Mon - Sun)
INT hour; // 0 - 23
INT minute; // 0 - 59
INT second; // 0 - 59
INT millisecond; // 0 - 999
} DBDATEREC;
#define MAXNUMERICLEN 16
#define MAXNUMERICDIG 38
#define DEFAULTPRECISION 18
#define DEFAULTSCALE 0
typedef struct dbnumeric
{
BYTE precision;
BYTE scale;
BYTE sign; // 1 = Positive, 0 = Negative
BYTE val[MAXNUMERICLEN];
} DBNUMERIC;
typedef DBNUMERIC DBDECIMAL;
// Pack the following structures on a word boundary
#ifdef __BORLANDC__
#pragma option -a2
#else
#ifndef DBLIB_SKIP_PRAGMA_PACK // Define this if your compiler does not support #pragma pack()
#pragma pack(2)
#endif
#endif
#define MAXCOLNAMELEN 30
#define MAXTABLENAME 30
typedef struct
{
DBINT SizeOfStruct;
CHAR Name[MAXCOLNAMELEN+1];
CHAR ActualName[MAXCOLNAMELEN+1];
CHAR TableName[MAXTABLENAME+1];
SHORT Type;
DBINT UserType;
DBINT MaxLength;
BYTE Precision;
BYTE Scale;
BOOL VarLength; // TRUE, FALSE
BYTE Null; // TRUE, FALSE or DBUNKNOWN
BYTE CaseSensitive; // TRUE, FALSE or DBUNKNOWN
BYTE Updatable; // TRUE, FALSE or DBUNKNOWN
BOOL Identity; // TRUE, FALSE
} DBCOL, PTR LPDBCOL;
#define MAXSERVERNAME 30
#define MAXNETLIBNAME 255
#define MAXNETLIBCONNSTR 255
typedef struct
{
DBINT SizeOfStruct;
BYTE ServerType;
USHORT ServerMajor;
USHORT ServerMinor;
USHORT ServerRevision;
CHAR ServerName[MAXSERVERNAME+1];
CHAR NetLibName[MAXNETLIBNAME+1];
CHAR NetLibConnStr[MAXNETLIBCONNSTR+1];
} DBPROCINFO, PTR LPDBPROCINFO;
typedef struct
{
DBINT SizeOfStruct; // Use sizeof(DBCURSORINFO)
ULONG TotCols; // Total Columns in cursor
ULONG TotRows; // Total Rows in cursor
ULONG CurRow; // Current actual row in server
ULONG TotRowsFetched; // Total rows actually fetched
ULONG Type; // See CU_...
ULONG Status; // See CU_...
} DBCURSORINFO, PTR LPDBCURSORINFO;
#define INVALID_UROWNUM ((ULONG)(-1))
// Reset default alignment
#ifdef __BORLANDC__
#pragma option -a-
#else
#ifndef DBLIB_SKIP_PRAGMA_PACK // Define this if your compiler does not support #pragma pack()
#pragma pack()
#endif
#endif
#endif // End DBTYPEDEFS
/*****************************************************************************
* Pointer Datatypes *
*****************************************************************************/
typedef const LPINT LPCINT;
typedef const LPBYTE LPCBYTE ;
typedef USHORT PTR LPUSHORT;
typedef const LPUSHORT LPCUSHORT;
typedef DBINT PTR LPDBINT;
typedef const LPDBINT LPCDBINT;
typedef DBBINARY PTR LPDBBINARY;
typedef const LPDBBINARY LPCDBBINARY;
typedef DBDATEREC PTR LPDBDATEREC;
typedef const LPDBDATEREC LPCDBDATEREC;
typedef DBDATETIME PTR LPDBDATETIME;
typedef const LPDBDATETIME LPCDBDATETIME;
/*****************************************************************************
* General #defines *
*****************************************************************************/
#define TIMEOUT_IGNORE (ULONG)-1
#define TIMEOUT_INFINITE (ULONG)0
#define TIMEOUT_MAXIMUM (ULONG)1200 // 20 minutes maximum timeout value
// Used for ServerType in dbgetprocinfo
#define SERVTYPE_UNKNOWN 0
#define SERVTYPE_MICROSOFT 1
// Used by dbcolinfo
enum CI_TYPES { CI_REGULAR=1, CI_ALTERNATE=2, CI_CURSOR=3 };
// Bulk Copy Definitions (bcp)
#define DB_IN 1 // Transfer from client to server
#define DB_OUT 2 // Transfer from server to client
#define BCPMAXERRS 1 // bcp_control parameter
#define BCPFIRST 2 // bcp_control parameter
#define BCPLAST 3 // bcp_control parameter
#define BCPBATCH 4 // bcp_control parameter
#define BCPKEEPNULLS 5 // bcp_control parameter
#define BCPABORT 6 // bcp_control parameter
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#define TINYBIND 1
#define SMALLBIND 2
#define INTBIND 3
#define CHARBIND 4
#define BINARYBIND 5
#define BITBIND 6
#define DATETIMEBIND 7
#define MONEYBIND 8
#define FLT8BIND 9
#define STRINGBIND 10
#define NTBSTRINGBIND 11
#define VARYCHARBIND 12
#define VARYBINBIND 13
#define FLT4BIND 14
#define SMALLMONEYBIND 15
#define SMALLDATETIBIND 16
#define DECIMALBIND 17
#define NUMERICBIND 18
#define SRCDECIMALBIND 19
#define SRCNUMERICBIND 20
#define MAXBIND SRCNUMERICBIND
#define DBSAVE 1
#define DBNOSAVE 0
#define DBNOERR -1
#define DBFINDONE 0x04 // Definately done
#define DBMORE 0x10 // Maybe more commands waiting
#define DBMORE_ROWS 0x20 // This command returned rows
#define MAXNAME 31
#define DBTXTSLEN 8 // Timestamp length
#define DBTXPLEN 16 // Text pointer length
// Error code returns
#define INT_EXIT 0
#define INT_CONTINUE 1
#define INT_CANCEL 2
// dboptions
#define DBBUFFER 0
#define DBOFFSET 1
#define DBROWCOUNT 2
#define DBSTAT 3
#define DBTEXTLIMIT 4
#define DBTEXTSIZE 5
#define DBARITHABORT 6
#define DBARITHIGNORE 7
#define DBNOAUTOFREE 8
#define DBNOCOUNT 9
#define DBNOEXEC 10
#define DBPARSEONLY 11
#define DBSHOWPLAN 12
#define DBSTORPROCID 13
#if defined(DBMSWIN) || defined(DBNTWIN32)
#define DBANSItoOEM 14
#endif
#ifdef DBNTWIN32
#define DBOEMtoANSI 15
#endif
#define DBCLIENTCURSORS 16
#define DBSETTIME 17
#define DBQUOTEDIDENT 18
// Data Type Tokens
#define SQLVOID 0x1f
#define SQLTEXT 0x23
#define SQLVARBINARY 0x25
#define SQLINTN 0x26
#define SQLVARCHAR 0x27
#define SQLBINARY 0x2d
#define SQLIMAGE 0x22
#define SQLCHAR 0x2f
#define SQLINT1 0x30
#define SQLBIT 0x32
#define SQLINT2 0x34
#define SQLINT4 0x38
#define SQLMONEY 0x3c
#define SQLDATETIME 0x3d
#define SQLFLT8 0x3e
#define SQLFLTN 0x6d
#define SQLMONEYN 0x6e
#define SQLDATETIMN 0x6f
#define SQLFLT4 0x3b
#define SQLMONEY4 0x7a
#define SQLDATETIM4 0x3a
#define SQLDECIMAL 0x6a
#define SQLNUMERIC 0x6c
// Data stream tokens
#define SQLCOLFMT 0xa1
#define OLD_SQLCOLFMT 0x2a
#define SQLPROCID 0x7c
#define SQLCOLNAME 0xa0
#define SQLTABNAME 0xa4
#define SQLCOLINFO 0xa5
#define SQLALTNAME 0xa7
#define SQLALTFMT 0xa8
#define SQLERROR 0xaa
#define SQLINFO 0xab
#define SQLRETURNVALUE 0xac
#define SQLRETURNSTATUS 0x79
#define SQLRETURN 0xdb
#define SQLCONTROL 0xae
#define SQLALTCONTROL 0xaf
#define SQLROW 0xd1
#define SQLALTROW 0xd3
#define SQLDONE 0xfd
#define SQLDONEPROC 0xfe
#define SQLDONEINPROC 0xff
#define SQLOFFSET 0x78
#define SQLORDER 0xa9
#define SQLLOGINACK 0xad // NOTICE: change to real value
// Ag op tokens
#define SQLAOPCNT 0x4b
#define SQLAOPSUM 0x4d
#define SQLAOPAVG 0x4f
#define SQLAOPMIN 0x51
#define SQLAOPMAX 0x52
#define SQLAOPANY 0x53
#define SQLAOPNOOP 0x56
// Error numbers (dberrs) DB-Library error codes
#define SQLEMEM 10000
#define SQLENULL 10001
#define SQLENLOG 10002
#define SQLEPWD 10003
#define SQLECONN 10004
#define SQLEDDNE 10005
#define SQLENULLO 10006
#define SQLESMSG 10007
#define SQLEBTOK 10008
#define SQLENSPE 10009
#define SQLEREAD 10010
#define SQLECNOR 10011
#define SQLETSIT 10012
#define SQLEPARM 10013
#define SQLEAUTN 10014
#define SQLECOFL 10015
#define SQLERDCN 10016
#define SQLEICN 10017
#define SQLECLOS 10018
#define SQLENTXT 10019
#define SQLEDNTI 10020
#define SQLETMTD 10021
#define SQLEASEC 10022
#define SQLENTLL 10023
#define SQLETIME 10024
#define SQLEWRIT 10025
#define SQLEMODE 10026
#define SQLEOOB 10027
#define SQLEITIM 10028
#define SQLEDBPS 10029
#define SQLEIOPT 10030
#define SQLEASNL 10031
#define SQLEASUL 10032
#define SQLENPRM 10033
#define SQLEDBOP 10034
#define SQLENSIP 10035
#define SQLECNULL 10036
#define SQLESEOF 10037
#define SQLERPND 10038
#define SQLECSYN 10039
#define SQLENONET 10040
#define SQLEBTYP 10041
#define SQLEABNC 10042
#define SQLEABMT 10043
#define SQLEABNP 10044
#define SQLEBNCR 10045
#define SQLEAAMT 10046
#define SQLENXID 10047
#define SQLEIFNB 10048
#define SQLEKBCO 10049
#define SQLEBBCI 10050
#define SQLEKBCI 10051
#define SQLEBCWE 10052
#define SQLEBCNN 10053
#define SQLEBCOR 10054
#define SQLEBCPI 10055
#define SQLEBCPN 10056
#define SQLEBCPB 10057
#define SQLEVDPT 10058
#define SQLEBIVI 10059
#define SQLEBCBC 10060
#define SQLEBCFO 10061
#define SQLEBCVH 10062
#define SQLEBCUO 10063
#define SQLEBUOE 10064
#define SQLEBWEF 10065
#define SQLEBTMT 10066
#define SQLEBEOF 10067
#define SQLEBCSI 10068
#define SQLEPNUL 10069
#define SQLEBSKERR 10070
#define SQLEBDIO 10071
#define SQLEBCNT 10072
#define SQLEMDBP 10073
#define SQLINIT 10074
#define SQLCRSINV 10075
#define SQLCRSCMD 10076
#define SQLCRSNOIND 10077
#define SQLCRSDIS 10078
#define SQLCRSAGR 10079
#define SQLCRSORD 10080
#define SQLCRSMEM 10081
#define SQLCRSBSKEY 10082
#define SQLCRSNORES 10083
#define SQLCRSVIEW 10084
#define SQLCRSBUFR 10085
#define SQLCRSFROWN 10086
#define SQLCRSBROL 10087
#define SQLCRSFRAND 10088
#define SQLCRSFLAST 10089
#define SQLCRSRO 10090
#define SQLCRSTAB 10091
#define SQLCRSUPDTAB 10092
#define SQLCRSUPDNB 10093
#define SQLCRSVIIND 10094
#define SQLCRSNOUPD 10095
#define SQLCRSOS2 10096
#define SQLEBCSA 10097
#define SQLEBCRO 10098
#define SQLEBCNE 10099
#define SQLEBCSK 10100
#define SQLEUVBF 10101
#define SQLEBIHC 10102
#define SQLEBWFF 10103
#define SQLNUMVAL 10104
#define SQLEOLDVR 10105
#define SQLEBCPS 10106
#define SQLEDTC 10107
#define SQLENOTIMPL 10108
#define SQLENONFLOAT 10109
#define SQLECONNFB 10110
// The severity levels are defined here
#define EXINFO 1 // Informational, non-error
#define EXUSER 2 // User error
#define EXNONFATAL 3 // Non-fatal error
#define EXCONVERSION 4 // Error in DB-LIBRARY data conversion
#define EXSERVER 5 // The Server has returned an error flag
#define EXTIME 6 // We have exceeded our timeout period while
// waiting for a response from the Server - the
// DBPROCESS is still alive
#define EXPROGRAM 7 // Coding error in user program
#define EXRESOURCE 8 // Running out of resources - the DBPROCESS may be dead
#define EXCOMM 9 // Failure in communication with Server - the DBPROCESS is dead
#define EXFATAL 10 // Fatal error - the DBPROCESS is dead
#define EXCONSISTENCY 11 // Internal software error - notify MS Technical Supprt
// Offset identifiers
#define OFF_SELECT 0x16d
#define OFF_FROM 0x14f
#define OFF_ORDER 0x165
#define OFF_COMPUTE 0x139
#define OFF_TABLE 0x173
#define OFF_PROCEDURE 0x16a
#define OFF_STATEMENT 0x1cb
#define OFF_PARAM 0x1c4
#define OFF_EXEC 0x12c
// Print lengths for certain fixed length data types
#define PRINT4 11
#define PRINT2 6
#define PRINT1 3
#define PRFLT8 20
#define PRMONEY 26
#define PRBIT 3
#define PRDATETIME 27
#define PRDECIMAL (MAXNUMERICDIG + 2)
#define PRNUMERIC (MAXNUMERICDIG + 2)
#define SUCCEED 1
#define FAIL 0
#define SUCCEED_ABORT 2
#define DBUNKNOWN 2
#define MORE_ROWS -1
#define NO_MORE_ROWS -2
#define REG_ROW MORE_ROWS
#define BUF_FULL -3
// Status code for dbresults(). Possible return values are
// SUCCEED, FAIL, and NO_MORE_RESULTS.
#define NO_MORE_RESULTS 2
#define NO_MORE_RPC_RESULTS 3
// Macros for dbsetlname()
#define DBSETHOST 1
#define DBSETUSER 2
#define DBSETPWD 3
#define DBSETAPP 4
#define DBSETID 5
#define DBSETLANG 6
#define DBSETSECURE 7
#define DBVER42 8
#define DBVER60 9
#define DBSETLOGINTIME 10
#define DBSETFALLBACK 12
// Standard exit and error values
#define STDEXIT 0
#define ERREXIT -1
// dbrpcinit flags
#define DBRPCRECOMPILE 0x0001
#define DBRPCRESET 0x0004
#define DBRPCCURSOR 0x0008
// dbrpcparam flags
#define DBRPCRETURN 0x1
#define DBRPCDEFAULT 0x2
// Cursor related constants
// Following flags are used in the concuropt parameter in the dbcursoropen function
#define CUR_READONLY 1 // Read only cursor, no data modifications
#define CUR_LOCKCC 2 // Intent to update, all fetched data locked when
// dbcursorfetch is called inside a transaction block
#define CUR_OPTCC 3 // Optimistic concurrency control, data modifications
// succeed only if the row hasn't been updated since
// the last fetch.
#define CUR_OPTCCVAL 4 // Optimistic concurrency control based on selected column values
// Following flags are used in the scrollopt parameter in dbcursoropen
#define CUR_FORWARD 0 // Forward only scrolling
#define CUR_KEYSET -1 // Keyset driven scrolling
#define CUR_DYNAMIC 1 // Fully dynamic
#define CUR_INSENSITIVE -2 // Server-side cursors only
// Following flags define the fetchtype in the dbcursorfetch function
#define FETCH_FIRST 1 // Fetch first n rows
#define FETCH_NEXT 2 // Fetch next n rows
#define FETCH_PREV 3 // Fetch previous n rows
#define FETCH_RANDOM 4 // Fetch n rows beginning with given row #
#define FETCH_RELATIVE 5 // Fetch relative to previous fetch row #
#define FETCH_LAST 6 // Fetch the last n rows
// Following flags define the per row status as filled by dbcursorfetch and/or dbcursorfetchex
#define FTC_EMPTY 0x00 // No row available
#define FTC_SUCCEED 0x01 // Fetch succeeded, (failed if not set)
#define FTC_MISSING 0x02 // The row is missing
#define FTC_ENDOFKEYSET 0x04 // End of the keyset reached
#define FTC_ENDOFRESULTS 0x08 // End of results set reached
// Following flags define the operator types for the dbcursor function
#define CRS_UPDATE 1 // Update operation
#define CRS_DELETE 2 // Delete operation
#define CRS_INSERT 3 // Insert operation
#define CRS_REFRESH 4 // Refetch given row
#define CRS_LOCKCC 5 // Lock given row
// Following value can be passed to the dbcursorbind function for NOBIND type
#define NOBIND -2 // Return length and pointer to data
// Following are values used by DBCURSORINFO's Type parameter
#define CU_CLIENT 0x00000001
#define CU_SERVER 0x00000002
#define CU_KEYSET 0x00000004
#define CU_MIXED 0x00000008
#define CU_DYNAMIC 0x00000010
#define CU_FORWARD 0x00000020
#define CU_INSENSITIVE 0x00000040
#define CU_READONLY 0x00000080
#define CU_LOCKCC 0x00000100
#define CU_OPTCC 0x00000200
#define CU_OPTCCVAL 0x00000400
// Following are values used by DBCURSORINFO's Status parameter
#define CU_FILLING 0x00000001
#define CU_FILLED 0x00000002
// Following are values used by dbupdatetext's type parameter
#define UT_TEXTPTR 0x0001
#define UT_TEXT 0x0002
#define UT_MORETEXT 0x0004
#define UT_DELETEONLY 0x0008
#define UT_LOG 0x0010
// The following values are passed to dbserverenum for searching criteria.
#define NET_SEARCH 0x0001
#define LOC_SEARCH 0x0002
// These constants are the possible return values from dbserverenum.
#define ENUM_SUCCESS 0x0000
#define MORE_DATA 0x0001
#define NET_NOT_AVAIL 0x0002
#define OUT_OF_MEMORY 0x0004
#define NOT_SUPPORTED 0x0008
#define ENUM_INVALID_PARAM 0x0010
// Netlib Error problem codes. ConnectionError() should return one of
// these as the dblib-mapped problem code, so the corresponding string
// is sent to the dblib app's error handler as dberrstr. Return NE_E_NOMAP
// for a generic DB-Library error string (as in prior versions of dblib).
#define NE_E_NOMAP 0 // No string; uses dblib default.
#define NE_E_NOMEMORY 1 // Insufficient memory.
#define NE_E_NOACCESS 2 // Access denied.
#define NE_E_CONNBUSY 3 // Connection is busy.
#define NE_E_CONNBROKEN 4 // Connection broken.
#define NE_E_TOOMANYCONN 5 // Connection limit exceeded.
#define NE_E_SERVERNOTFOUND 6 // Specified SQL server not found.
#define NE_E_NETNOTSTARTED 7 // The network has not been started.
#define NE_E_NORESOURCE 8 // Insufficient network resources.
#define NE_E_NETBUSY 9 // Network is busy.
#define NE_E_NONETACCESS 10 // Network access denied.
#define NE_E_GENERAL 11 // General network error. Check your documentation.
#define NE_E_CONNMODE 12 // Incorrect connection mode.
#define NE_E_NAMENOTFOUND 13 // Name not found in directory service.
#define NE_E_INVALIDCONN 14 // Invalid connection.
#define NE_E_NETDATAERR 15 // Error reading or writing network data.
#define NE_E_TOOMANYFILES 16 // Too many open file handles.
#define NE_E_CANTCONNECT 17 // SQL Server does not exist or access denied.
#define NE_MAX_NETERROR 17
#ifdef __cplusplus
}
#endif
#endif // _INC_SQLFRONT

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,867 @@
//--------------------------------------------------------------------
// Microsoft OLE DB Provider for SQL Server
// (C) Copyright 1997 By Microsoft Corporation.
//
// @doc
//
// @module SQLOLEDB.H | Provider Specific definitions
//
//--------------------------------------------------------------------
#ifndef _SQLOLEDB_H_
#define _SQLOLEDB_H_
#ifndef __oledb_h__
#include "oledb.h"
#endif /* __oledb_h__ */
//----------------------------------------------------------------------------
// Provider-specific Class Ids
#ifdef DBINITCONSTANTS
// Provider CLSID {0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}
extern const GUID CLSID_SQLOLEDB = {0xc7ff16cL,0x38e3,0x11d0,{0x97,0xab,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
// Error Lookup CLSID {C0932C62-38E5-11d0-97AB-00C04FC2AD98}
extern const GUID CLSID_SQLOLEDB_ERROR = {0xc0932c62L,0x38e5,0x11d0,{0x97,0xab,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
// Enumerator CLSID {DFA22B8E-E68D-11d0-97E4-00C04FC2AD98}
extern const GUID CLSID_SQLOLEDB_ENUMERATOR = {0xdfa22b8eL,0xe68d,0x11d0,{0x97,0xe4,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
#else // !DBINITCONSTANTS
extern const GUID CLSID_SQLOLEDB;
extern const GUID CLSID_SQLOLEDB_ERROR;
extern const GUID CLSID_SQLOLEDB_ENUMERATOR;
#endif // DBINITCONSTANTS
//----------------------------------------------------------------------------
// Provider-specific Interface Ids
#ifdef DBINITCONSTANTS
extern const GUID IID_ISQLServerErrorInfo = {0x5cf4ca12,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
extern const GUID IID_IRowsetFastLoad = {0x5cf4ca13,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
extern const GUID IID_IUMSInitialize = {0x5cf4ca14,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
// {4C2389FB-2511-11d4-B258-00C04F7971CE}
extern const GUID IID_ISchemaLock = {0x4c2389fb,0x2511,0x11d4,{0xb2,0x58,0x0,0xc0,0x4f,0x79,0x71,0xce}};
extern const GUID DBGUID_MSSQLXML = {0x5d531cb2L,0xe6ed,0x11d2,{0xb2,0x52,0x00,0xc0,0x4f,0x68,0x1b,0x71}};
extern const GUID DBGUID_XPATH = {0xec2a4293L,0xe898,0x11d2,{0xb1,0xb7,0x00,0xc0,0x4f,0x68,0x0c,0x56}};
// This IID_ICommandStream definition is available in later versions of
// UUID.LIB. It is also already an extern defined in oledb.h.
//
#if _MSC_VER < 1300
extern const IID IID_ICommandStream = {0x0c733abfL,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
#endif // _MSC_VER
extern const IID IID_ISQLXMLHelper = {0xd22a7678L,0xf860,0x40cd,{0xa5,0x67,0x15,0x63,0xde,0xb4,0x6d,0x49}};
#else // !DBINITCONSTANTS
extern const GUID IID_ISQLServerErrorInfo;
extern const GUID IID_IRowsetFastLoad;
extern const GUID IID_IUMSInitialize;
extern const GUID IID_ISchemaLock;
extern const GUID DBGUID_MSSQLXML;
extern const GUID DBGUID_XPATH;
extern const IID IID_ISQLXMLHelper;
#endif // DBINITCONSTANTS
//----------------------------------------------------------------------------
// Provider-specific schema rowsets
#ifdef DBINITCONSTANTS
extern const GUID DBSCHEMA_LINKEDSERVERS = {0x9093caf4,0x2eac,0x11d1,{0x98,0x9,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
#else // !DBINITCONSTANTS
extern const GUID DBSCHEMA_LINKEDSERVERS;
#endif // DBINITCONSTANTS
#define CRESTRICTIONS_DBSCHEMA_LINKEDSERVERS 1
//----------------------------------------------------------------------------
// Provider-specific property sets
#ifdef DBINITCONSTANTS
extern const GUID DBPROPSET_SQLSERVERDATASOURCE = {0x28efaee4,0x2d2c,0x11d1,{0x98,0x7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
extern const GUID DBPROPSET_SQLSERVERDATASOURCEINFO = {0xdf10cb94,0x35f6,0x11d2,{0x9c,0x54,0x0,0xc0,0x4f,0x79,0x71,0xd3}};
extern const GUID DBPROPSET_SQLSERVERDBINIT = {0x5cf4ca10,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
extern const GUID DBPROPSET_SQLSERVERROWSET = {0x5cf4ca11,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
extern const GUID DBPROPSET_SQLSERVERSESSION = {0x28efaee5,0x2d2c,0x11d1,{0x98,0x7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
extern const GUID DBPROPSET_SQLSERVERCOLUMN = {0x3b63fb5e,0x3fbb,0x11d3,{0x9f,0x29,0x0,0xc0,0x4f,0x8e,0xe9,0xdc}};
extern const GUID DBPROPSET_SQLSERVERSTREAM = {0x9f79c073,0x8a6d,0x4bca,{0xa8,0xa8,0xc9,0xb7,0x9a,0x9b,0x96,0x2d}};
#else // !DBINITCONSTANTS
extern const GUID DBPROPSET_SQLSERVERDATASOURCE;
extern const GUID DBPROPSET_SQLSERVERDATASOURCEINFO;
extern const GUID DBPROPSET_SQLSERVERDBINIT;
extern const GUID DBPROPSET_SQLSERVERROWSET;
extern const GUID DBPROPSET_SQLSERVERSESSION;
extern const GUID DBPROPSET_SQLSERVERCOLUMN;
extern const GUID DBPROPSET_SQLSERVERSTREAM;
#endif // DBINITCONSTANTS
//This is a guid candidate : ;
//----------------------------------------------------------------------------
// Provider-specific columns for IColumnsRowset
#ifdef DBINITCONSTANTS
extern const DBID DBCOLUMN_SS_COMPFLAGS = {{0x627bd890,0xed54,0x11d2,{0xb9,0x94,0x0,0xc0,0x4f,0x8c,0xa8,0x2c}}, DBKIND_GUID_PROPID, (LPOLESTR)100};
extern const DBID DBCOLUMN_SS_SORTID = {{0x627bd890,0xed54,0x11d2,{0xb9,0x94,0x0,0xc0,0x4f,0x8c,0xa8,0x2c}}, DBKIND_GUID_PROPID, (LPOLESTR)101};
extern const DBID DBCOLUMN_BASETABLEINSTANCE = {{0x627bd890,0xed54,0x11d2,{0xb9,0x94,0x0,0xc0,0x4f,0x8c,0xa8,0x2c}}, DBKIND_GUID_PROPID, (LPOLESTR)102};
extern const DBID DBCOLUMN_SS_TDSCOLLATION = {{0x627bd890,0xed54,0x11d2,{0xb9,0x94,0x0,0xc0,0x4f,0x8c,0xa8,0x2c}}, DBKIND_GUID_PROPID, (LPOLESTR)103};
#else // !DBINITCONSTANTS
extern const DBID DBCOLUMN_SS_COMPFLAGS;
extern const DBID DBCOLUMN_SS_SORTID;
extern const DBID DBCOLUMN_BASETABLEINSTANCE;
extern const DBID DBCOLUMN_SS_TDSCOLLATION;
#endif // DBINITCONSTANTS
//----------------------------------------------------------------------------
// PropIds for DBPROP_INIT_GENERALTIMEOUT
#if ( OLEDBVER == 0x0210 )
#define DBPROP_INIT_GENERALTIMEOUT 0x11cL
#endif
//----------------------------------------------------------------------------
// PropIds for DBPROPSET_SQLSERVERDATASOURCE
#define SSPROP_ENABLEFASTLOAD 2
//----------------------------------------------------------------------------
// PropIds for DBPROPSET_SQLSERVERDATASOURCEINFO
#define SSPROP_UNICODELCID 2
#define SSPROP_UNICODECOMPARISONSTYLE 3
#define SSPROP_COLUMNLEVELCOLLATION 4
#define SSPROP_CHARACTERSET 5
#define SSPROP_SORTORDER 6
#define SSPROP_CURRENTCOLLATION 7
//----------------------------------------------------------------------------
// PropIds for DBPROPSET_SQLSERVERDBINIT
#define SSPROP_INIT_CURRENTLANGUAGE 4
#define SSPROP_INIT_NETWORKADDRESS 5
#define SSPROP_INIT_NETWORKLIBRARY 6
#define SSPROP_INIT_USEPROCFORPREP 7
#define SSPROP_INIT_AUTOTRANSLATE 8
#define SSPROP_INIT_PACKETSIZE 9
#define SSPROP_INIT_APPNAME 10
#define SSPROP_INIT_WSID 11
#define SSPROP_INIT_FILENAME 12
#define SSPROP_INIT_ENCRYPT 13
#define SSPROP_AUTH_REPL_SERVER_NAME 14
#define SSPROP_INIT_TAGCOLUMNCOLLATION 15
//-----------------------------------------------------------------------------
// Values for SSPROP_USEPROCFORPREP
#define SSPROPVAL_USEPROCFORPREP_OFF 0
#define SSPROPVAL_USEPROCFORPREP_ON 1
#define SSPROPVAL_USEPROCFORPREP_ON_DROP 2
//----------------------------------------------------------------------------
// PropIds for DBPROPSET_SQLSERVERSESSION
#define SSPROP_QUOTEDCATALOGNAMES 2
#define SSPROP_ALLOWNATIVEVARIANT 3
#define SSPROP_SQLXMLXPROGID 4
//----------------------------------------------------------------------------
// PropIds for DBPROPSET_SQLSERVERROWSET
#define SSPROP_MAXBLOBLENGTH 8
#define SSPROP_FASTLOADOPTIONS 9
#define SSPROP_FASTLOADKEEPNULLS 10
#define SSPROP_FASTLOADKEEPIDENTITY 11
#define SSPROP_CURSORAUTOFETCH 12
#define SSPROP_DEFERPREPARE 13
#define SSPROP_IRowsetFastLoad 14
//----------------------------------------------------------------------------
// PropIds for DBPROPSET_SQLSERVERCOLUMN
#define SSPROP_COL_COLLATIONNAME 14
//----------------------------------------------------------------------------
// PropIds for DBPROPSET_SQLSERVERSTREAM
#define SSPROP_STREAM_MAPPINGSCHEMA 15
#define SSPROP_STREAM_XSL 16
#define SSPROP_STREAM_BASEPATH 17
#define SSPROP_STREAM_COMMANDTYPE 18
#define SSPROP_STREAM_XMLROOT 19
#define SSPROP_STREAM_FLAGS 20
#define SSPROP_STREAM_CONTENTTYPE 23
//----------------------------------------------------------------------------
// Possible values for SSPROP_STREAM_FLAGS
#define STREAM_FLAGS_DISALLOW_URL 0x00000001
#define STREAM_FLAGS_DISALLOW_ABSOLUTE_PATH 0x00000002
#define STREAM_FLAGS_DISALLOW_QUERY 0x00000004
#define STREAM_FLAGS_DONTCACHEMAPPINGSCHEMA 0x00000008
#define STREAM_FLAGS_DONTCACHETEMPLATE 0x00000010
#define STREAM_FLAGS_DONTCACHEXSL 0x00000020
#define STREAM_FLAGS_DISALLOW_UPDATEGRAMS 0x00000040
#define STREAM_FLAGS_RESERVED 0xffff0000
// Values for SSPROPVAL_COMMANDTYPE
#define SSPROPVAL_COMMANDTYPE_REGULAR 21
#define SSPROPVAL_COMMANDTYPE_BULKLOAD 22
//-------------------------------------------------------------------
// Variant Access macros, similar to ole automation.
//-------------------------------------------------------------------
#define V_SS_VT(X) ((X)->vt)
#define V_SS_UNION(X, Y) ((X)->Y)
#define V_SS_UI1(X) V_SS_UNION(X, bTinyIntVal)
#define V_SS_I2(X) V_SS_UNION(X, sShortIntVal)
#define V_SS_I4(X) V_SS_UNION(X, lIntVal)
#define V_SS_I8(X) V_SS_UNION(X, llBigIntVal)
#define V_SS_R4(X) V_SS_UNION(X, fltRealVal)
#define V_SS_R8(X) V_SS_UNION(X, dblFloatVal)
#define V_SS_UI4(X) V_SS_UNION(X, ulVal)
#define V_SS_MONEY(X) V_SS_UNION(X, cyMoneyVal)
#define V_SS_SMALLMONEY(X) V_SS_UNION(X, cyMoneyVal)
#define V_SS_WSTRING(X) V_SS_UNION(X, NCharVal)
#define V_SS_WVARSTRING(X) V_SS_UNION(X, NCharVal)
#define V_SS_STRING(X) V_SS_UNION(X, CharVal)
#define V_SS_VARSTRING(X) V_SS_UNION(X, CharVal)
#define V_SS_BIT(X) V_SS_UNION(X, fBitVal)
#define V_SS_GUID(X) V_SS_UNION(X, rgbGuidVal)
#define V_SS_NUMERIC(X) V_SS_UNION(X, numNumericVal)
#define V_SS_DECIMAL(X) V_SS_UNION(X, numNumericVal)
#define V_SS_BINARY(X) V_SS_UNION(X, BinaryVal)
#define V_SS_VARBINARY(X) V_SS_UNION(X, BinaryVal)
#define V_SS_DATETIME(X) V_SS_UNION(X, tsDateTimeVal)
#define V_SS_SMALLDATETIME(X) V_SS_UNION(X, tsDateTimeVal)
#define V_SS_UNKNOWN(X) V_SS_UNION(X, UnknownType)
//For next release.
#define V_SS_IMAGE(X) V_SS_UNION(X, ImageVal)
#define V_SS_TEXT(X) V_SS_UNION(X, TextVal)
#define V_SS_NTEXT(X) V_SS_UNION(X, NTextVal)
//-------------------------------------------------------------------
// define SQL Server Spefific Variant Type
//-------------------------------------------------------------------
#define DBTYPE_SQLVARIANT 144
enum SQLVARENUM
{
VT_SS_EMPTY = DBTYPE_EMPTY,
VT_SS_NULL = DBTYPE_NULL,
VT_SS_UI1 = DBTYPE_UI1,
VT_SS_I2 = DBTYPE_I2,
VT_SS_I4 = DBTYPE_I4,
VT_SS_I8 = DBTYPE_I8,
//Floats
VT_SS_R4 = DBTYPE_R4,
VT_SS_R8 = DBTYPE_R8,
//Money
VT_SS_MONEY = DBTYPE_CY,
VT_SS_SMALLMONEY = 200,
//Strings
VT_SS_WSTRING = 201,
VT_SS_WVARSTRING = 202,
VT_SS_STRING =203,
VT_SS_VARSTRING =204,
//Bit
VT_SS_BIT =DBTYPE_BOOL,
//Guid
VT_SS_GUID =DBTYPE_GUID,
//Exact precision
VT_SS_NUMERIC =DBTYPE_NUMERIC,
VT_SS_DECIMAL =205,
//Datetime
VT_SS_DATETIME = DBTYPE_DBTIMESTAMP,
VT_SS_SMALLDATETIME =206,
//Binary
VT_SS_BINARY =207,
VT_SS_VARBINARY =208,
//Future
VT_SS_UNKNOWN = 209,
};
typedef unsigned short SSVARTYPE;
//Hungarian : ssv (Sql Server Variant)
struct SSVARIANT
{
SSVARTYPE vt;
DWORD dwReserved1;
DWORD dwReserved2;
union
{
BYTE bTinyIntVal;
SHORT sShortIntVal;
LONG lIntVal;
LONGLONG llBigIntVal;
FLOAT fltRealVal;
DOUBLE dblFloatVal;
CY cyMoneyVal;
struct _NCharVal
{
SHORT sActualLength;
SHORT sMaxLength;
WCHAR * pwchNCharVal;
BYTE rgbReserved[5];
DWORD dwReserved;
WCHAR * pwchReserved;
} NCharVal;
struct _CharVal
{
SHORT sActualLength;
SHORT sMaxLength;
CHAR * pchCharVal;
BYTE rgbReserved[5];
DWORD dwReserved;
WCHAR * pwchReserved;
} CharVal;
VARIANT_BOOL fBitVal;
BYTE rgbGuidVal [16];
DB_NUMERIC numNumericVal;
struct _BinaryVal
{
SHORT sActualLength;
SHORT sMaxLength;
BYTE * prgbBinaryVal;
DWORD dwReserved;
} BinaryVal;
DBTIMESTAMP tsDateTimeVal;
struct _UnknownType
{
DWORD dwActualLength;
BYTE rgMetadata [16];
BYTE * pUnknownData;
} UnknownType;
struct _BLOBType
{
DBOBJECT dbobj;
IUnknown * pUnk;
} BLOBType;
};
};
#if defined(__cplusplus) && !defined(CINTERFACE)
//-----------------------------------------------------------------
// Class Factory Interface used to initialize pointer to UMS.
//
interface IUMSInitialize : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE Initialize (VOID * pUMS) = 0;
};
//-----------------------------------------------------------------
// Interface used to communicate with UMS.
//
interface IUMS
{
public:
virtual VOID STDMETHODCALLTYPE SqlUmsSuspend (ULONG ticks) = 0;
virtual VOID STDMETHODCALLTYPE SqlUmsYield (ULONG ticks) = 0;
virtual VOID STDMETHODCALLTYPE SqlUmsSwitchPremptive () = 0;
virtual VOID STDMETHODCALLTYPE SqlUmsSwitchNonPremptive() = 0;
virtual BOOL STDMETHODCALLTYPE SqlUmsFIsPremptive() = 0;
};
#endif
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 3.03.0110 */
/* at Tue May 09 16:41:59 2000
*/
/* Compiler settings for sqloledb.idl:
Os (OptLev=s), W1, Zp8, env=Win32, ms_ext, c_ext
error checks: none
*/
//@@MIDL_FILE_HEADING( )
/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 440
#endif
#include "rpc.h"
#include "rpcndr.h"
#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__
#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/
#ifndef __sqloledb_h__
#define __sqloledb_h__
#ifdef __cplusplus
extern "C"{
#endif
/* Forward Declarations */
#ifndef __ISQLServerErrorInfo_FWD_DEFINED__
#define __ISQLServerErrorInfo_FWD_DEFINED__
typedef interface ISQLServerErrorInfo ISQLServerErrorInfo;
#endif /* __ISQLServerErrorInfo_FWD_DEFINED__ */
#ifndef __IRowsetFastLoad_FWD_DEFINED__
#define __IRowsetFastLoad_FWD_DEFINED__
typedef interface IRowsetFastLoad IRowsetFastLoad;
#endif /* __IRowsetFastLoad_FWD_DEFINED__ */
#ifndef __ISchemaLock_FWD_DEFINED__
#define __ISchemaLock_FWD_DEFINED__
typedef interface ISchemaLock ISchemaLock;
#endif /* __ISchemaLock_FWD_DEFINED__ */
/* header files for imported files */
#include "unknwn.h"
void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void __RPC_FAR * );
/****************************************
* Generated header for interface: __MIDL_itf_sqloledb_0000
* at Tue May 09 16:41:59 2000
* using MIDL 3.03.0110
****************************************/
/* [local] */
// the structure returned by ISQLServerErrorInfo::GetSQLServerInfo
typedef struct tagSSErrorInfo
{
LPOLESTR pwszMessage;
LPOLESTR pwszServer;
LPOLESTR pwszProcedure;
LONG lNative;
BYTE bState;
BYTE bClass;
WORD wLineNumber;
} SSERRORINFO;
extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0000_v0_0_s_ifspec;
#ifndef __ISQLServerErrorInfo_INTERFACE_DEFINED__
#define __ISQLServerErrorInfo_INTERFACE_DEFINED__
/****************************************
* Generated header for interface: ISQLServerErrorInfo
* at Tue May 09 16:41:59 2000
* using MIDL 3.03.0110
****************************************/
/* [unique][object][local][uuid] */
EXTERN_C const IID IID_ISQLServerErrorInfo;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5CF4CA12-EF21-11d0-97E7-00C04FC2AD98")
ISQLServerErrorInfo : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE GetErrorInfo(
/* [out] */ SSERRORINFO __RPC_FAR *__RPC_FAR *ppErrorInfo,
/* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer) = 0;
};
#else /* C style interface */
typedef struct ISQLServerErrorInfoVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
ISQLServerErrorInfo __RPC_FAR * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
ISQLServerErrorInfo __RPC_FAR * This);
ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
ISQLServerErrorInfo __RPC_FAR * This);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetErrorInfo )(
ISQLServerErrorInfo __RPC_FAR * This,
/* [out] */ SSERRORINFO __RPC_FAR *__RPC_FAR *ppErrorInfo,
/* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);
END_INTERFACE
} ISQLServerErrorInfoVtbl;
interface ISQLServerErrorInfo
{
CONST_VTBL struct ISQLServerErrorInfoVtbl __RPC_FAR *lpVtbl;
};
#ifdef COBJMACROS
#define ISQLServerErrorInfo_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
#define ISQLServerErrorInfo_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
#define ISQLServerErrorInfo_Release(This) \
(This)->lpVtbl -> Release(This)
#define ISQLServerErrorInfo_GetErrorInfo(This,ppErrorInfo,ppStringsBuffer) \
(This)->lpVtbl -> GetErrorInfo(This,ppErrorInfo,ppStringsBuffer)
#endif /* COBJMACROS */
#endif /* C style interface */
HRESULT STDMETHODCALLTYPE ISQLServerErrorInfo_GetErrorInfo_Proxy(
ISQLServerErrorInfo __RPC_FAR * This,
/* [out] */ SSERRORINFO __RPC_FAR *__RPC_FAR *ppErrorInfo,
/* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);
void __RPC_STUB ISQLServerErrorInfo_GetErrorInfo_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
#endif /* __ISQLServerErrorInfo_INTERFACE_DEFINED__ */
/****************************************
* Generated header for interface: __MIDL_itf_sqloledb_0006
* at Tue May 09 16:41:59 2000
* using MIDL 3.03.0110
****************************************/
/* [local] */
#ifdef _WIN64
typedef ULONG_PTR HACCESSOR;
#else
typedef ULONG HACCESSOR;
#endif
extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0006_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0006_v0_0_s_ifspec;
#ifndef __IRowsetFastLoad_INTERFACE_DEFINED__
#define __IRowsetFastLoad_INTERFACE_DEFINED__
/****************************************
* Generated header for interface: IRowsetFastLoad
* at Tue May 09 16:41:59 2000
* using MIDL 3.03.0110
****************************************/
/* [unique][object][local][uuid] */
EXTERN_C const IID IID_IRowsetFastLoad;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5CF4CA13-EF21-11d0-97E7-00C04FC2AD98")
IRowsetFastLoad : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE InsertRow(
/* [in] */ HACCESSOR hAccessor,
/* [in] */ void __RPC_FAR *pData) = 0;
virtual HRESULT STDMETHODCALLTYPE Commit(
/* [in] */ BOOL fDone) = 0;
};
#else /* C style interface */
typedef struct IRowsetFastLoadVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
IRowsetFastLoad __RPC_FAR * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
IRowsetFastLoad __RPC_FAR * This);
ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
IRowsetFastLoad __RPC_FAR * This);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InsertRow )(
IRowsetFastLoad __RPC_FAR * This,
/* [in] */ HACCESSOR hAccessor,
/* [in] */ void __RPC_FAR *pData);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
IRowsetFastLoad __RPC_FAR * This,
/* [in] */ BOOL fDone);
END_INTERFACE
} IRowsetFastLoadVtbl;
interface IRowsetFastLoad
{
CONST_VTBL struct IRowsetFastLoadVtbl __RPC_FAR *lpVtbl;
};
#ifdef COBJMACROS
#define IRowsetFastLoad_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
#define IRowsetFastLoad_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
#define IRowsetFastLoad_Release(This) \
(This)->lpVtbl -> Release(This)
#define IRowsetFastLoad_InsertRow(This,hAccessor,pData) \
(This)->lpVtbl -> InsertRow(This,hAccessor,pData)
#define IRowsetFastLoad_Commit(This,fDone) \
(This)->lpVtbl -> Commit(This,fDone)
#endif /* COBJMACROS */
#endif /* C style interface */
HRESULT STDMETHODCALLTYPE IRowsetFastLoad_InsertRow_Proxy(
IRowsetFastLoad __RPC_FAR * This,
/* [in] */ HACCESSOR hAccessor,
/* [in] */ void __RPC_FAR *pData);
void __RPC_STUB IRowsetFastLoad_InsertRow_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowsetFastLoad_Commit_Proxy(
IRowsetFastLoad __RPC_FAR * This,
/* [in] */ BOOL fDone);
void __RPC_STUB IRowsetFastLoad_Commit_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
#endif /* __IRowsetFastLoad_INTERFACE_DEFINED__ */
/****************************************
* Generated header for interface: __MIDL_itf_sqloledb_0007
* at Tue May 09 16:41:59 2000
* using MIDL 3.03.0110
****************************************/
/* [local] */
typedef DWORD LOCKMODE;
enum LOCKMODEENUM
{ LOCKMODE_INVALID = 0,
LOCKMODE_EXCLUSIVE = LOCKMODE_INVALID + 1,
LOCKMODE_SHARED = LOCKMODE_EXCLUSIVE + 1
};
extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0007_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0007_v0_0_s_ifspec;
#ifndef __ISchemaLock_INTERFACE_DEFINED__
#define __ISchemaLock_INTERFACE_DEFINED__
/****************************************
* Generated header for interface: ISchemaLock
* at Tue May 09 16:41:59 2000
* using MIDL 3.03.0110
****************************************/
/* [unique][object][local][uuid] */
EXTERN_C const IID IID_ISchemaLock;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4C2389FB-2511-11d4-B258-00C04F7971CE")
ISchemaLock : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE GetSchemaLock(
/* [in] */ DBID __RPC_FAR *pTableID,
/* [in] */ LOCKMODE lmMode,
/* [out] */ HANDLE __RPC_FAR *phLockHandle,
/* [out] */ ULONGLONG __RPC_FAR *pTableVersion) = 0;
virtual HRESULT STDMETHODCALLTYPE ReleaseSchemaLock(
/* [in] */ HANDLE hLockHandle) = 0;
};
#else /* C style interface */
typedef struct ISchemaLockVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
ISchemaLock __RPC_FAR * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
ISchemaLock __RPC_FAR * This);
ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
ISchemaLock __RPC_FAR * This);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSchemaLock )(
ISchemaLock __RPC_FAR * This,
/* [in] */ DBID __RPC_FAR *pTableID,
/* [in] */ LOCKMODE lmMode,
/* [out] */ HANDLE __RPC_FAR *phLockHandle,
/* [out] */ ULONGLONG __RPC_FAR *pTableVersion);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseSchemaLock )(
ISchemaLock __RPC_FAR * This,
/* [in] */ HANDLE hLockHandle);
END_INTERFACE
} ISchemaLockVtbl;
interface ISchemaLock
{
CONST_VTBL struct ISchemaLockVtbl __RPC_FAR *lpVtbl;
};
#ifdef COBJMACROS
#define ISchemaLock_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
#define ISchemaLock_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
#define ISchemaLock_Release(This) \
(This)->lpVtbl -> Release(This)
#define ISchemaLock_GetSchemaLock(This,pTableID,lmMode,phLockHandle,pTableVersion) \
(This)->lpVtbl -> GetSchemaLock(This,pTableID,lmMode,phLockHandle,pTableVersion)
#define ISchemaLock_ReleaseSchemaLock(This,hLockHandle) \
(This)->lpVtbl -> ReleaseSchemaLock(This,hLockHandle)
#endif /* COBJMACROS */
#endif /* C style interface */
HRESULT STDMETHODCALLTYPE ISchemaLock_GetSchemaLock_Proxy(
ISchemaLock __RPC_FAR * This,
/* [in] */ DBID __RPC_FAR *pTableID,
/* [in] */ LOCKMODE lmMode,
/* [out] */ HANDLE __RPC_FAR *phLockHandle,
/* [out] */ ULONGLONG __RPC_FAR *pTableVersion);
void __RPC_STUB ISchemaLock_GetSchemaLock_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISchemaLock_ReleaseSchemaLock_Proxy(
ISchemaLock __RPC_FAR * This,
/* [in] */ HANDLE hLockHandle);
void __RPC_STUB ISchemaLock_ReleaseSchemaLock_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
#endif /* __ISchemaLock_INTERFACE_DEFINED__ */
/* Additional Prototypes for ALL interfaces */
/* end of Additional Prototypes */
#ifdef __cplusplus
}
#endif
#endif
#endif //_SQLOLEDB_H_

View File

@ -0,0 +1,649 @@
// sybAPI.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(__SYBAPI_H__)
#define __SYBAPI_H__
#include "SQLAPI.h"
// API header(s)
#include <ctpublic.h>
//! Sybase client and server messages handling callback
typedef void (SQLAPI_CALLBACK *saSybMsgHandler_t)(void *pMessageStruct, bool bIsServerMessage, void *pAddInfo);
class SQLAPI_API SASybErrInfo : public SAMutex
{
public:
SASybErrInfo();
public:
CS_MSGNUM msgnumber;
CS_CHAR msgstring[CS_MAX_MSG];
CS_INT line;
saSybMsgHandler_t fMsgHandler;
void * pMsgAddInfo;
} ;
extern void AddSybSupport(const SAConnection *pCon);
extern void ReleaseSybSupport();
typedef CS_RETCODE (CS_PUBLIC *ct_debug_t)(
CS_CONTEXT *context,
CS_CONNECTION *connection,
CS_INT operation,
CS_INT flag,
CS_CHAR *filename,
CS_INT fnamelen
);
typedef CS_RETCODE (CS_PUBLIC *ct_bind_t)(
CS_COMMAND *cmd,
CS_INT item,
CS_DATAFMT *datafmt,
CS_VOID *buf,
CS_INT *outputlen,
CS_SMALLINT *indicator
);
typedef CS_RETCODE (CS_PUBLIC *ct_br_column_t)(
CS_COMMAND *cmd,
CS_INT colnum,
CS_BROWSEDESC *browsedesc
);
typedef CS_RETCODE (CS_PUBLIC *ct_br_table_t)(
CS_COMMAND *cmd,
CS_INT tabnum,
CS_INT type,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_callback_t)(
CS_CONTEXT *context,
CS_CONNECTION *connection,
CS_INT action,
CS_INT type,
CS_VOID *func
);
typedef CS_RETCODE (CS_PUBLIC *ct_cancel_t)(
CS_CONNECTION *connection,
CS_COMMAND *cmd,
CS_INT type
);
typedef CS_RETCODE (CS_PUBLIC *ct_capability_t)(
CS_CONNECTION *connection,
CS_INT action,
CS_INT type,
CS_INT capability,
CS_VOID *val
);
typedef CS_RETCODE (CS_PUBLIC *ct_compute_info_t)(
CS_COMMAND *cmd,
CS_INT type,
CS_INT colnum,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_close_t)(
CS_CONNECTION *connection,
CS_INT option
);
typedef CS_RETCODE (CS_PUBLIC *ct_cmd_alloc_t)(
CS_CONNECTION *connection,
CS_COMMAND **cmdptr
);
typedef CS_RETCODE (CS_PUBLIC *ct_cmd_drop_t)(
CS_COMMAND *cmd
);
typedef CS_RETCODE (CS_PUBLIC *ct_cmd_props_t)(
CS_COMMAND *cmd,
CS_INT action,
CS_INT property,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_command_t)(
CS_COMMAND *cmd,
CS_INT type,
CS_CHAR *buf,
CS_INT buflen,
CS_INT option
);
typedef CS_RETCODE (CS_PUBLIC *ct_con_alloc_t)(
CS_CONTEXT *context,
CS_CONNECTION **connection
);
typedef CS_RETCODE (CS_PUBLIC *ct_con_drop_t)(
CS_CONNECTION *connection
);
typedef CS_RETCODE (CS_PUBLIC *ct_con_props_t)(
CS_CONNECTION *connection,
CS_INT action,
CS_INT property,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_connect_t)(
CS_CONNECTION *connection,
CS_CHAR *server_name,
CS_INT snamelen
);
typedef CS_RETCODE (CS_PUBLIC *ct_config_t)(
CS_CONTEXT *context,
CS_INT action,
CS_INT property,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_cursor_t)(
CS_COMMAND *cmd,
CS_INT type,
CS_CHAR *name,
CS_INT namelen,
CS_CHAR *text,
CS_INT tlen,
CS_INT option
);
typedef CS_RETCODE (CS_PUBLIC *ct_dyndesc_t)(
CS_COMMAND *cmd,
CS_CHAR *descriptor,
CS_INT desclen,
CS_INT operation,
CS_INT idx,
CS_DATAFMT *datafmt,
CS_VOID *buffer,
CS_INT buflen,
CS_INT *copied,
CS_SMALLINT *indicator
);
typedef CS_RETCODE (CS_PUBLIC *ct_describe_t)(
CS_COMMAND *cmd,
CS_INT item,
CS_DATAFMT *datafmt
);
typedef CS_RETCODE (CS_PUBLIC *ct_diag_t)(
CS_CONNECTION *connection,
CS_INT operation,
CS_INT type,
CS_INT idx,
CS_VOID *buffer
);
typedef CS_RETCODE (CS_PUBLIC *ct_dynamic_t)(
CS_COMMAND *cmd,
CS_INT type,
CS_CHAR *id,
CS_INT idlen,
CS_CHAR *buf,
CS_INT buflen
);
typedef CS_RETCODE (CS_PUBLIC *ct_dynsqlda_t)(
CS_COMMAND *cmd,
CS_INT type,
SQLDA *dap,
CS_INT operation
);
typedef CS_RETCODE (CS_PUBLIC *ct_exit_t)(
CS_CONTEXT *context,
CS_INT option
);
typedef CS_RETCODE (CS_PUBLIC *ct_fetch_t)(
CS_COMMAND *cmd,
CS_INT type,
CS_INT offset,
CS_INT option,
CS_INT *count
);
typedef CS_RETCODE (CS_PUBLIC *ct_getformat_t)(
CS_COMMAND *cmd,
CS_INT colnum,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_keydata_t)(
CS_COMMAND *cmd,
CS_INT action,
CS_INT colnum,
CS_VOID *buffer,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_init_t)(
CS_CONTEXT *context,
CS_INT version
);
typedef CS_RETCODE (CS_PUBLIC *ct_options_t)(
CS_CONNECTION *connection,
CS_INT action,
CS_INT option,
CS_VOID *param,
CS_INT paramlen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *syb_ct_param_t)(
CS_COMMAND *cmd,
CS_DATAFMT *datafmt,
CS_VOID *data,
CS_INT datalen,
CS_SMALLINT indicator
);
typedef CS_RETCODE (CS_PUBLIC *ct_getloginfo_t)(
CS_CONNECTION *connection,
CS_LOGINFO **logptr
);
typedef CS_RETCODE (CS_PUBLIC *ct_setloginfo_t)(
CS_CONNECTION *connection,
CS_LOGINFO *loginfo
);
typedef CS_RETCODE (CS_PUBLIC *ct_recvpassthru_t)(
CS_COMMAND *cmd,
CS_VOID **recvptr
);
typedef CS_RETCODE (CS_PUBLIC *ct_sendpassthru_t)(
CS_COMMAND *cmd,
CS_VOID *send_bufp
);
typedef CS_RETCODE (CS_PUBLIC *ct_poll_t)(
CS_CONTEXT *context,
CS_CONNECTION *connection,
CS_INT milliseconds,
CS_CONNECTION **compconn,
CS_COMMAND **compcmd,
CS_INT *compid,
CS_INT *compstatus
);
typedef CS_RETCODE (CS_PUBLIC *ct_remote_pwd_t)(
CS_CONNECTION *connection,
CS_INT action,
CS_CHAR *server_name,
CS_INT snamelen,
CS_CHAR *password,
CS_INT pwdlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_results_t)(
CS_COMMAND *cmd,
CS_INT *result_type
);
typedef CS_RETCODE (CS_PUBLIC *ct_res_info_t)(
CS_COMMAND *cmd,
CS_INT operation,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_send_t)(
CS_COMMAND *cmd
);
typedef CS_RETCODE (CS_PUBLIC *ct_get_data_t)(
CS_COMMAND *cmd,
CS_INT colnum,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_send_data_t)(
CS_COMMAND *cmd,
CS_VOID *buf,
CS_INT buflen
);
typedef CS_RETCODE (CS_PUBLIC *ct_data_info_t)(
CS_COMMAND *cmd,
CS_INT action,
CS_INT colnum,
CS_IODESC *iodesc
);
typedef CS_RETCODE (CS_PUBLIC *ct_wakeup_t)(
CS_CONNECTION *connection,
CS_COMMAND *cmd,
CS_INT func_id,
CS_RETCODE status
);
typedef CS_RETCODE (CS_PUBLIC *ct_labels_t)(
CS_CONNECTION *connection,
CS_INT action,
CS_CHAR *labelname,
CS_INT namelen,
CS_CHAR *labelvalue,
CS_INT valuelen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_ds_lookup_t)(
CS_CONNECTION *connection,
CS_INT action,
CS_INT *reqidp,
CS_DS_LOOKUP_INFO *lookupinfo,
CS_VOID *userdatap
);
typedef CS_RETCODE (CS_PUBLIC *ct_ds_dropobj_t)(
CS_CONNECTION *connection,
CS_DS_OBJECT *object
);
typedef CS_RETCODE (CS_PUBLIC *ct_ds_objinfo_t)(
CS_DS_OBJECT *objclass,
CS_INT action,
CS_INT objinfo,
CS_INT number,
CS_VOID *buffer,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *ct_setparam_t)(
CS_COMMAND *cmd,
CS_DATAFMT *datafmt,
CS_VOID *data,
CS_INT *datalenp,
CS_SMALLINT *indp
);
typedef CS_RETCODE (CS_PUBLIC *cs_calc_t)(
CS_CONTEXT *context,
CS_INT op,
CS_INT datatype,
CS_VOID *var1,
CS_VOID *var2,
CS_VOID *dest
);
typedef CS_RETCODE (CS_PUBLIC *cs_cmp_t)(
CS_CONTEXT *context,
CS_INT datatype,
CS_VOID *var1,
CS_VOID *var2,
CS_INT *result
);
typedef CS_RETCODE (CS_PUBLIC *cs_convert_t)(
CS_CONTEXT *context,
CS_DATAFMT *srcfmt,
CS_VOID *srcdata,
CS_DATAFMT *destfmt,
CS_VOID *destdata,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *cs_will_convert_t)(
CS_CONTEXT *context,
CS_INT srctype,
CS_INT desttype,
CS_BOOL *result
);
typedef CS_RETCODE (CS_PUBLIC *cs_set_convert_t)(
CS_CONTEXT *context,
CS_INT action,
CS_INT srctype,
CS_INT desttype,
CS_CONV_FUNC *buffer
);
typedef CS_RETCODE (CS_PUBLIC *cs_setnull_t)(
CS_CONTEXT *context,
CS_DATAFMT *datafmt,
CS_VOID *buf,
CS_INT buflen
);
typedef CS_RETCODE (CS_PUBLIC *cs_config_t)(
CS_CONTEXT *context,
CS_INT action,
CS_INT property,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *cs_ctx_alloc_t)(
CS_INT version,
CS_CONTEXT **outptr
);
typedef CS_RETCODE (CS_PUBLIC *cs_ctx_drop_t)(
CS_CONTEXT *context
);
typedef CS_RETCODE (CS_PUBLIC *cs_ctx_global_t)(
CS_INT version,
CS_CONTEXT **outptr
);
typedef CS_RETCODE (CS_PUBLIC *cs_objects_t)(
CS_CONTEXT *context,
CS_INT action,
CS_OBJNAME *objname,
CS_OBJDATA *objdata
);
typedef CS_RETCODE (CS_PUBLIC *cs_diag_t)(
CS_CONTEXT *context,
CS_INT operation,
CS_INT type,
CS_INT idx,
CS_VOID *buffer
);
typedef CS_RETCODE (CS_PUBLIC *cs_dt_crack_t)(
CS_CONTEXT *context,
CS_INT datetype,
CS_VOID *dateval,
CS_DATEREC *daterec
);
typedef CS_RETCODE (CS_PUBLIC *cs_dt_info_t)(
CS_CONTEXT *context,
CS_INT action,
CS_LOCALE *locale,
CS_INT type,
CS_INT item,
CS_VOID *buffer,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *cs_locale_t)(
CS_CONTEXT *context,
CS_INT action,
CS_LOCALE *locale,
CS_INT type,
CS_CHAR *buffer,
CS_INT buflen,
CS_INT *outlen
);
typedef CS_RETCODE (CS_PUBLIC *cs_loc_alloc_t)(
CS_CONTEXT *context,
CS_LOCALE **loc_pointer
);
typedef CS_RETCODE (CS_PUBLIC *cs_loc_drop_t)(
CS_CONTEXT *context,
CS_LOCALE *locale
);
#ifdef CS__INTERNAL_STRUCTS
typedef CS_RETCODE (CS_VARARGS *cs_strbuild_t)(
CS_CONTEXT *context,
...
);
#else
typedef CS_RETCODE (CS_VARARGS *cs_strbuild_t)(
CS_CONTEXT *context,
CS_CHAR *buf,
CS_INT buflen,
CS_INT *outlen,
CS_CHAR *text,
CS_INT textlen,
...
);
#endif /* CS__INTERNAL_STRUCTS */
typedef CS_RETCODE (CS_PUBLIC *cs_strcmp_t)(
CS_CONTEXT *context,
CS_LOCALE *locale,
CS_INT type,
CS_CHAR *str1,
CS_INT len1,
CS_CHAR *str2,
CS_INT len2,
CS_INT *result
);
typedef CS_RETCODE (CS_PUBLIC *cs_time_t)(
CS_CONTEXT *context,
CS_LOCALE *locale,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen,
CS_DATEREC *drec
);
typedef CS_RETCODE (CS_PUBLIC *cs_manage_convert_t)(
CS_CONTEXT *context,
CS_INT action,
CS_INT srctype,
CS_CHAR *srcname,
CS_INT srcnamelen,
CS_INT desttype,
CS_CHAR *destname,
CS_INT destnamelen,
CS_INT *maxmultiplier,
CS_CONV_FUNC *func
);
typedef CS_RETCODE (CS_PUBLIC *cs_conv_mult_t)(
CS_CONTEXT *context,
CS_LOCALE *srcloc,
CS_LOCALE *destloc,
CS_INT *multiplier
);
typedef CS_RETCODE (CS_PUBLIC *ct_scroll_fetch_t)(
CS_COMMAND *cmd,
CS_INT type,
CS_INT offset,
CS_INT option,
CS_INT *count
);
// API declarations
class SQLAPI_API sybAPI : public saAPI
{
public:
sybAPI();
ct_debug_t ct_debug;
ct_bind_t ct_bind;
ct_br_column_t ct_br_column;
ct_br_table_t ct_br_table;
ct_callback_t ct_callback;
ct_cancel_t ct_cancel;
ct_capability_t ct_capability;
ct_compute_info_t ct_compute_info;
ct_close_t ct_close;
ct_cmd_alloc_t ct_cmd_alloc;
ct_cmd_drop_t ct_cmd_drop;
ct_cmd_props_t ct_cmd_props;
ct_command_t ct_command;
ct_con_alloc_t ct_con_alloc;
ct_con_drop_t ct_con_drop;
ct_con_props_t ct_con_props;
ct_connect_t ct_connect;
ct_config_t ct_config;
ct_cursor_t ct_cursor;
ct_dyndesc_t ct_dyndesc;
ct_describe_t ct_describe;
ct_diag_t ct_diag;
ct_dynamic_t ct_dynamic;
ct_dynsqlda_t ct_dynsqlda;
ct_exit_t ct_exit;
ct_fetch_t ct_fetch;
ct_getformat_t ct_getformat;
ct_keydata_t ct_keydata;
ct_init_t ct_init;
ct_options_t ct_options;
syb_ct_param_t ct_param;
ct_getloginfo_t ct_getloginfo;
ct_setloginfo_t ct_setloginfo;
ct_recvpassthru_t ct_recvpassthru;
ct_sendpassthru_t ct_sendpassthru;
ct_poll_t ct_poll;
ct_remote_pwd_t ct_remote_pwd;
ct_results_t ct_results;
ct_res_info_t ct_res_info;
ct_send_t ct_send;
ct_get_data_t ct_get_data;
ct_send_data_t ct_send_data;
ct_data_info_t ct_data_info;
ct_wakeup_t ct_wakeup;
ct_labels_t ct_labels;
ct_ds_lookup_t ct_ds_lookup;
ct_ds_dropobj_t ct_ds_dropobj;
ct_ds_objinfo_t ct_ds_objinfo;
ct_setparam_t ct_setparam;
cs_calc_t cs_calc;
cs_cmp_t cs_cmp;
cs_convert_t cs_convert;
cs_will_convert_t cs_will_convert;
cs_set_convert_t cs_set_convert;
cs_setnull_t cs_setnull;
cs_config_t cs_config;
cs_ctx_alloc_t cs_ctx_alloc;
cs_ctx_drop_t cs_ctx_drop;
cs_ctx_global_t cs_ctx_global;
cs_objects_t cs_objects;
cs_diag_t cs_diag;
cs_dt_crack_t cs_dt_crack;
cs_dt_info_t cs_dt_info;
cs_locale_t cs_locale;
cs_loc_alloc_t cs_loc_alloc;
cs_loc_drop_t cs_loc_drop;
cs_strbuild_t cs_strbuild;
cs_strcmp_t cs_strcmp;
cs_time_t cs_time;
cs_manage_convert_t cs_manage_convert;
cs_conv_mult_t cs_conv_mult;
ct_scroll_fetch_t ct_scroll_fetch;
static void SetMessageCallback(saSybMsgHandler_t fHandler, void *pAddInfo, SAConnection *pCon = NULL);
static int& DefaultLongMaxLength();
SASybErrInfo errorInfo;
};
class SQLAPI_API sybConnectionHandles : public saConnectionHandles
{
public:
sybConnectionHandles();
CS_CONTEXT *m_context;
CS_CONNECTION *m_connection;
CS_LOCALE* m_locale;
};
class SQLAPI_API sybCommandHandles : public saCommandHandles
{
public:
sybCommandHandles();
CS_COMMAND *m_command;
};
class SQLAPI_API sybExternalConnection
{
bool m_bAttached;
SAConnection *m_pCon;
CS_CONTEXT *m_contextSaved;
CS_CONNECTION *m_connectionSaved;
CS_CONTEXT *m_context;
CS_CONNECTION *m_connection;
CS_VOID *m_ExternalContextClientMsg_cb;
CS_VOID *m_ExternalContextServerMsg_cb;
CS_VOID *m_ExternalConnectionClientMsg_cb;
CS_VOID *m_ExternalConnectionServerMsg_cb;
CS_INT m_nExternalUserDataLen;
CS_VOID *m_pExternalUserData;
CS_INT m_nExternalUserDataAllocated;
SASybErrInfo m_SybErrInfo;
public:
sybExternalConnection(
SAConnection *pCon,
CS_CONTEXT *context,
CS_CONNECTION *connection);
void Attach();
void Detach();
~sybExternalConnection();
};
extern sybAPI g_sybAPI;
#endif // !defined(__SYBAPI_H__)

View File

@ -0,0 +1,291 @@
/*
** SAP OpenClient
** Copyright (c) 2013 SAP AG or an SAP affiliate company. All rights reserved.
*/
/*
** blkpublic.h - for the bulk copy library API routines
*/
#ifndef __BKPUBLIC_H__
#define __BKPUBLIC_H__
#ifndef __NO_INCLUDE__
#include <ctpublic.h>
#endif /* __NO_INCLUDE__ */
/*****************************************************************************
**
** defines used in BLK-Lib applications
**
*****************************************************************************/
/*
** Define for a constant to differentiate the
** blklib api's/
*/
#define BLK_API_CONT (CS_INT) 500
/*
** define for each BLK-Lib API
*/
#define BLK_NOAPI ((CS_INT) 0 + BLK_API_CONT)
#define BLK_BIND ((CS_INT) 1 + BLK_API_CONT)
#define BLK_DESCRIBE ((CS_INT) 2 + BLK_API_CONT)
#define BLK_DEFAULT ((CS_INT) 3 + BLK_API_CONT)
#define BLK_INIT ((CS_INT) 4 + BLK_API_CONT)
#define BLK_DONE ((CS_INT) 5 + BLK_API_CONT)
#define BLK_ROWXFER ((CS_INT) 6 + BLK_API_CONT)
#define BLK_TEXTXFER ((CS_INT) 7 + BLK_API_CONT)
#define BLK_SENDROW ((CS_INT) 8 + BLK_API_CONT)
#define BLK_SENDTEXT ((CS_INT) 9 + BLK_API_CONT)
#define BLK_DROP ((CS_INT) 10 + BLK_API_CONT)
#define BLK_GETROW ((CS_INT) 11 + BLK_API_CONT)
#define BLK_COLVAL ((CS_INT) 12 + BLK_API_CONT)
#define BLK_GETTEXT ((CS_INT) 13 + BLK_API_CONT)
#define BLK_PROPS ((CS_INT) 14 + BLK_API_CONT)
/*
** The direction of the bulk copy - set in blk_init()
*/
#define CS_BLK_IN (CS_INT) 1
#define CS_BLK_OUT (CS_INT) 2
/*
** For the blk_done -
** just send a batch of records over
** end the bulk copy operation
** Cancel the bulk copy operation
*/
#define CS_BLK_BATCH (CS_INT) 1
#define CS_BLK_ALL (CS_INT) 2
#define CS_BLK_CANCEL (CS_INT) 3
/*
** For blk_default when there is no default value for the column
*/
#define CS_NO_DEFAULT (CS_INT) (-999)
#ifndef BLK_VERSION_100
#define BLK_VERSION_100 CS_VERSION_100
#define BLK_VERSION_100_NO_LRGID CS_VERSION_100_NO_LRGID
#endif /* BLK_VERSION_100 */
/*
** define BLK_VERSION_110 as BLK_VERSION_100
*/
#ifndef BLK_VERSION_110
#define BLK_VERSION_110 BLK_VERSION_100
#define BLK_VERSION_110_NO_LRGID BLK_VERSION_100_NO_LRGID
#endif /* BLK_VERSION_110 */
/*
** define BLK_VERSION_120 as BLK_VERSION_100
*/
#ifndef BLK_VERSION_120
#define BLK_VERSION_120 BLK_VERSION_100
#define BLK_VERSION_12_NO_LRGID0 BLK_VERSION_100_NO_LRGID
#endif /* BLK_VERSION_120 */
/*
** define BLK_VERSION_125 as CS_VERSION_125
*/
#ifndef BLK_VERSION_125
#define BLK_VERSION_125 CS_VERSION_125
#define BLK_VERSION_125_NO_LRGID CS_VERSION_125_NO_LRGID
#endif /* BLK_VERSION_125 */
/*
** define BLK_VERSION_150 as CS_VERSION_150
*/
#ifndef BLK_VERSION_150
#define BLK_VERSION_150 CS_VERSION_150
#define BLK_VERSION_150_NO_LRGID CS_VERSION_150_NO_LRGID
#endif /* BLK_VERSION_150 */
/*
** define BLK_VERSION_155 as CS_VERSION_155
*/
#ifndef BLK_VERSION_155
#define BLK_VERSION_155 CS_VERSION_155
#endif /* BLK_VERSION_155 */
/*
** define BLK_VERSION_157 as CS_VERSION_157
*/
#ifndef BLK_VERSION_157
#define BLK_VERSION_157 CS_VERSION_157
#endif /* BLK_VERSION_157 */
/*
** define BLK_VERSION_160 as CS_VERSION_160
*/
#ifndef BLK_VERSION_160
#define BLK_VERSION_160 CS_VERSION_160
#endif /* BLK_VERSION_160 */
/*
** For the bulk copy options - used with blk_props()
*/
#define BLK_IDENTITY (CS_INT) (1)
#define BLK_SENSITIVITY_LBL (CS_INT) (2)
#define BLK_NOAPI_CHK (CS_INT) (3)
#define BLK_SLICENUM (CS_INT) (4)
#define BLK_IDSTARTNUM (CS_INT) (5)
#define BLK_ARRAY_INSERT (CS_INT) (6)
#define ARRAY_INSERT BLK_ARRAY_INSERT
#define BLK_CONV (CS_INT) (7)
#define BLK_PARTITION (CS_INT) (8)
#define BLK_CUSTOM_CLAUSE (CS_INT) (9)
/*
** Special value for datafmt.status in blklib with array binding
*/
#define CS_BLK_ARRAY_MAXLEN (CS_INT)0x1000
/*****************************************************************************
**
** define all user accessable functions here
**
*****************************************************************************/
/*
** declare all functions
*/
CS_START_EXTERN_C
extern CS_RETCODE CS_PUBLIC blk_alloc PROTOTYPE((
CS_CONNECTION *connection,
CS_INT version,
CS_BLKDESC **blkdesc
));
extern CS_RETCODE CS_PUBLIC blk_bind PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_INT colnum,
CS_DATAFMT *datafmt,
CS_VOID *buf,
CS_INT *datalen,
CS_SMALLINT *indicator
));
extern CS_RETCODE CS_PUBLIC blk_colval PROTOTYPE((
CS_VOID *srvproc,
CS_BLKDESC *blkdesc,
CS_BLK_ROW *row,
CS_INT colnum,
CS_VOID *value,
CS_INT valuelen,
CS_INT *outlen
));
extern CS_RETCODE CS_PUBLIC blk_default PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_INT colnum,
CS_VOID *value,
CS_INT valuelen,
CS_INT *outlen
));
extern CS_RETCODE CS_PUBLIC blk_describe PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_INT colnum,
CS_DATAFMT *datafmt
));
extern CS_RETCODE CS_PUBLIC blk_done PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_INT option,
CS_INT *outrows
));
extern CS_RETCODE CS_PUBLIC blk_drop PROTOTYPE((
CS_BLKDESC *blkdesc
));
extern CS_RETCODE CS_PUBLIC blk_getrow PROTOTYPE((
CS_VOID *srvproc,
CS_BLKDESC *blkdesc,
CS_BLK_ROW *row
));
extern CS_RETCODE CS_PUBLIC blk_gettext PROTOTYPE((
CS_VOID *srvproc,
CS_BLKDESC *blkdesc,
CS_BLK_ROW *row,
CS_BYTE *buf,
CS_INT buflen,
CS_INT *bytes_read
));
extern CS_RETCODE CS_PUBLIC blk_init PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_INT direction,
CS_CHAR *tblname,
CS_INT tblnamelen
));
extern CS_RETCODE CS_PUBLIC blk_rowalloc PROTOTYPE((
CS_VOID *srvproc,
CS_BLK_ROW **row
));
extern CS_RETCODE CS_PUBLIC blk_rowdrop PROTOTYPE((
CS_VOID *srvproc,
CS_BLK_ROW *row
));
extern CS_RETCODE CS_PUBLIC blk_rowxfer PROTOTYPE((
CS_BLKDESC *blkdesc
));
extern CS_RETCODE CS_PUBLIC blk_rowxfer_mult PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_INT *rowcount
));
extern CS_RETCODE CS_PUBLIC blk_sendrow PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_BLK_ROW *row
));
extern CS_RETCODE CS_PUBLIC blk_sendtext PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_BLK_ROW *row,
CS_BYTE *buf,
CS_INT buflen
));
extern CS_RETCODE CS_PUBLIC blk_srvinit PROTOTYPE((
CS_VOID *srvproc,
CS_BLKDESC *blkdesc
));
extern CS_RETCODE CS_PUBLIC blk_textxfer PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_BYTE *buf,
CS_INT buflen,
CS_INT *outlen
));
extern CS_RETCODE CS_PUBLIC blk_props PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_INT action,
CS_INT property,
CS_VOID *buffer,
CS_INT buflen,
CS_INT *outlen
));
extern CS_RETCODE CS_PUBLIC blk_bcp_indicator PROTOTYPE((
CS_BLKDESC *blkdesc,
CS_BOOL action
));
CS_END_EXTERN_C
#endif /* end of __BKPUBLIC_H__ */

View File

@ -0,0 +1,165 @@
/*
** SAP Open Client/Server
** Copyright (c) 2013 SAP AG or an SAP affiliate company. All rights reserved.
*/
#ifndef __CSCONFIG_H__
#define __CSCONFIG_H__
/*
** This file will try to hide any interface differences found on various
** platform/compiler combinations. Any datatype or define that is
** dependant on a particular platform/compiler should have its definition
** here.
*/
/*****************************************************************************
**
** Function interface definitions.
**
*****************************************************************************/
/*
** Define the scoping rules that will be used in all libraries. These defines
** exist to support different compiler-specific keywords describing the
** calling convention of a C function.
**
** CS_PUBLIC Interface define for functions which are called
** outside of a library or DLL.
**
** CS_INTERNAL Interface define for functions which are only called
** within a library or DLL.
**
** CS_VARARGS Interface define for functions with variable argument
** lists which are called outside of a library or DLL.
**
** CS_STATIC Interface define for functions which are only called
** within a C module.
*/
/*
** We need to check to value of some compiler #defined macros
** but some compilers will give warnings for trying to use the
** value of a macro which has not been defined -- to avoid these
** warnings we define 'SYB' versions of the macros we need here
*/
#if defined(_MSC_VER)
#define SYB_MSC_VER _MSC_VER
#else /* _MSC_VER */
#define SYB_MSC_VER 0
#endif /* _MSC_VER */
#if defined(__STDC__)
#define SYB__STDC__ 1
#else /* __STDC__ */
#define SYB__STDC__ 0
#endif /* __STDC__ */
#if defined(_CPROTO_)
/*
** The _CPROTO_ ifdef allows users to have the cproto tool generate
** prototype definitions that include the scoping rules. We typedef all of
** the interface defines to allow the cproto tool to preserve the names
** (instead of replacing them with the defined values).
*/
typedef void CS_PUBLIC;
typedef void CS_INTERNAL;
typedef void CS_VARARGS;
typedef void CS_STATIC;
#else /* defined(_CPROTO_) */
#if ((SYB_MSC_VER >= 800) || defined(__BORLANDC__))
/*
** Defines for Windows NT calling conventions.
*/
#define CS_PUBLIC __stdcall
#define CS_INTERNAL CS_PUBLIC
#define CS_VARARGS __stdcall
#define CS_STATIC static
#else /* ((SYB_MSC_VER >= 800) || defined(__BORLANDC__)) */
/*
** Default defines for all other platform/compilers.
*/
#define CS_PUBLIC
#define CS_INTERNAL
#define CS_VARARGS
#define CS_STATIC static
#endif /* ((SYB_MSC_VER >= 800) || defined(__BORLANDC__)) */
#endif /* defined(_CPROTO_) */
/*
** Define wrappers to insure that all function prototypes defined in the
** Open Client and Open Server header files have the correct C function
** linkage when used with C++ compilers.
*/
#if defined(__cplusplus)
#define CS_START_EXTERN_C extern "C" {
#define CS_END_EXTERN_C }
#else
#define CS_START_EXTERN_C
#define CS_END_EXTERN_C
#endif /* defined(__cplusplus) */
/*
** PROTOTYPE macro which produces the prototype
*/
#ifndef PROTOTYPE
# define PROTOTYPE(s) s
#endif /* PROTOTYPE */
/*
** Define whether the compiler supports the "const" keyword.
*/
#if (SYB__STDC__) || defined(__cplusplus)
# define CS_CONST const
#else
# define CS_CONST
#endif
/*
** Define CS_ELLIPSE. It is used in function pointer prototypes where
** the arguments aren't known. Win3 uses ,... for CS_ELLIPSE, too.
*/
#define CS_ELLIPSE , ...
/*****************************************************************************
**
** Datatype definitions.
**
*****************************************************************************/
/*
** Certain SAP C datatypes must be defined as 4 bytes in size. The
** following insures that all platforms (including 64 bit machines) use
** the correct C native types.
*/
#if defined( __alpha) || defined(SYB_LP64) || defined(SYB_LLP64) || defined(_AIX)
typedef int CS_INT;
typedef int CS_RETCODE;
typedef int CS_BOOL;
typedef unsigned int CS_UINT;
#else
typedef long CS_INT;
typedef long CS_RETCODE;
typedef long CS_BOOL;
typedef unsigned long CS_UINT;
#endif
typedef void CS_VOID;
typedef void CS_THRDRES;
typedef double CS_FLOAT; /* 8 byte float type */
/*
** Define the number of bits that a CS_BYTE can hold.
*/
#define CS_BITS_PER_BYTE 8
#endif /* __CSCONFIG_H__ */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,478 @@
/*
** SAP CT-LIBRARY
** Copyright (c) 2013 SAP AG or an SAP affiliate company. All rights reserved.
*/
/*
** ctpublic.h - This is the public header file for CT-Lib.
*/
#ifndef __CTPUBLIC_H__
#define __CTPUBLIC_H__
/*
** include common defines and typedefs
*/
#ifndef __NO_INCLUDE__
#include <cspublic.h>
#include <sqlda.h>
#endif /* __NO_INCLUDE__ */
/*****************************************************************************
**
** defines used in CT-Lib applications
**
*****************************************************************************/
/*
** define for each CT-Lib API
*/
#define CT_BIND (CS_INT) 0
#define CT_BR_COLUMN (CS_INT) 1
#define CT_BR_TABLE (CS_INT) 2
#define CT_CALLBACK (CS_INT) 3
#define CT_CANCEL (CS_INT) 4
#define CT_CAPABILITY (CS_INT) 5
#define CT_CLOSE (CS_INT) 6
#define CT_CMD_ALLOC (CS_INT) 7
#define CT_CMD_DROP (CS_INT) 8
#define CT_CMD_PROPS (CS_INT) 9
#define CT_COMMAND (CS_INT) 10
#define CT_COMPUTE_INFO (CS_INT) 11
#define CT_CON_ALLOC (CS_INT) 12
#define CT_CON_DROP (CS_INT) 13
#define CT_CON_PROPS (CS_INT) 14
#define CT_CON_XFER (CS_INT) 15
#define CT_CONFIG (CS_INT) 16
#define CT_CONNECT (CS_INT) 17
#define CT_CURSOR (CS_INT) 18
#define CT_DATA_INFO (CS_INT) 19
#define CT_DEBUG (CS_INT) 20
#define CT_DESCRIBE (CS_INT) 21
#define CT_DIAG (CS_INT) 22
#define CT_DYNAMIC (CS_INT) 23
#define CT_DYNDESC (CS_INT) 24
#define CT_EXIT (CS_INT) 25
#define CT_FETCH (CS_INT) 26
#define CT_GET_DATA (CS_INT) 27
#define CT_GETFORMAT (CS_INT) 28
#define CT_GETLOGINFO (CS_INT) 29
#define CT_INIT (CS_INT) 30
#define CT_KEYDATA (CS_INT) 31
#define CT_OPTIONS (CS_INT) 32
#define CT_PARAM (CS_INT) 33
#define CT_POLL (CS_INT) 34
#define CT_RECVPASSTHRU (CS_INT) 35
#define CT_REMOTE_PWD (CS_INT) 36
#define CT_RES_INFO (CS_INT) 37
#define CT_RESULTS (CS_INT) 38
#define CT_SEND (CS_INT) 39
#define CT_SEND_DATA (CS_INT) 40
#define CT_SENDPASSTHRU (CS_INT) 41
#define CT_SETLOGINFO (CS_INT) 42
#define CT_WAKEUP (CS_INT) 43
#define CT_LABELS (CS_INT) 44
#define CT_DS_LOOKUP (CS_INT) 45
#define CT_DS_DROP (CS_INT) 46
#define CT_DS_OBJINFO (CS_INT) 47
#define CT_SETPARAM (CS_INT) 48
#define CT_DYNSQLDA (CS_INT) 49
#define CT_SCROLL_FETCH (CS_INT) 50
#define CT_SEND_PARAMS (CS_INT) 51
#define CT_SEND_RAW (CS_INT) 52
#define CT_NOTIFICATION (CS_INT) 1000 /* id for event notfication
** completion
*/
#define CT_USER_FUNC (CS_INT) 10000 /* minimum user-defined
** function id
*/
/*****************************************************************************
**
** define all user accessable functions here
**
*****************************************************************************/
/*
** declare all functions
*/
CS_START_EXTERN_C
/* ctdebug.c */
extern CS_RETCODE CS_PUBLIC ct_debug(
CS_CONTEXT *context,
CS_CONNECTION *connection,
CS_INT operation,
CS_INT flag,
CS_CHAR *filename,
CS_INT fnamelen
);
/* ctbind.c */
extern CS_RETCODE CS_PUBLIC ct_bind(
CS_COMMAND *cmd,
CS_INT item,
CS_DATAFMT *datafmt,
CS_VOID *buf,
CS_INT *outputlen,
CS_SMALLINT *indicator
);
/* ctbr.c */
extern CS_RETCODE CS_PUBLIC ct_br_column(
CS_COMMAND *cmd,
CS_INT colnum,
CS_BROWSEDESC *browsedesc
);
extern CS_RETCODE CS_PUBLIC ct_br_table(
CS_COMMAND *cmd,
CS_INT tabnum,
CS_INT type,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
/* ctcallbk.c */
extern CS_RETCODE CS_PUBLIC ct_callback(
CS_CONTEXT *context,
CS_CONNECTION *connection,
CS_INT action,
CS_INT type,
CS_VOID *func
);
/* ctcancel.c */
extern CS_RETCODE CS_PUBLIC ct_cancel(
CS_CONNECTION *connection,
CS_COMMAND *cmd,
CS_INT type
);
/* ctcap.c */
extern CS_RETCODE CS_PUBLIC ct_capability(
CS_CONNECTION *connection,
CS_INT action,
CS_INT type,
CS_INT capability,
CS_VOID *val
);
/* ctcinfo.c */
extern CS_RETCODE CS_PUBLIC ct_compute_info(
CS_COMMAND *cmd,
CS_INT type,
CS_INT colnum,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
/* ctclose.c */
extern CS_RETCODE CS_PUBLIC ct_close(
CS_CONNECTION *connection,
CS_INT option
);
/* ctcmd.c */
extern CS_RETCODE CS_PUBLIC ct_cmd_alloc(
CS_CONNECTION *connection,
CS_COMMAND **cmdptr
);
extern CS_RETCODE CS_PUBLIC ct_cmd_drop(
CS_COMMAND *cmd
);
extern CS_RETCODE CS_PUBLIC ct_cmd_props(
CS_COMMAND *cmd,
CS_INT action,
CS_INT property,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
extern CS_RETCODE CS_PUBLIC ct_command(
CS_COMMAND *cmd,
CS_INT type,
CS_CHAR *buf,
CS_INT buflen,
CS_INT option
);
/* ctcon.c */
extern CS_RETCODE CS_PUBLIC ct_con_alloc(
CS_CONTEXT *context,
CS_CONNECTION **connection
);
extern CS_RETCODE CS_PUBLIC ct_con_drop(
CS_CONNECTION *connection
);
extern CS_RETCODE CS_PUBLIC ct_con_props(
CS_CONNECTION *connection,
CS_INT action,
CS_INT property,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
extern CS_RETCODE CS_PUBLIC ct_connect(
CS_CONNECTION *connection,
CS_CHAR *server_name,
CS_INT snamelen
);
extern CS_RETCODE CS_PUBLIC ct_connect_string(
CS_CONNECTION *connection,
CS_CHAR *cnt_str,
CS_INT cnt_len
);
/* ctconfig.c */
extern CS_RETCODE CS_PUBLIC ct_config(
CS_CONTEXT *context,
CS_INT action,
CS_INT property,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
/* ctcursor.c */
extern CS_RETCODE CS_PUBLIC ct_cursor(
CS_COMMAND *cmd,
CS_INT type,
CS_CHAR *name,
CS_INT namelen,
CS_CHAR *text,
CS_INT tlen,
CS_INT option
);
/* ctddesc.c */
extern CS_RETCODE CS_PUBLIC ct_dyndesc(
CS_COMMAND *cmd,
CS_CHAR *descriptor,
CS_INT desclen,
CS_INT operation,
CS_INT idx,
CS_DATAFMT *datafmt,
CS_VOID *buffer,
CS_INT buflen,
CS_INT *copied,
CS_SMALLINT *indicator
);
/* ctdesc.c */
extern CS_RETCODE CS_PUBLIC ct_describe(
CS_COMMAND *cmd,
CS_INT item,
CS_DATAFMT *datafmt
);
/* ctdiag.c */
extern CS_RETCODE CS_PUBLIC ct_diag(
CS_CONNECTION *connection,
CS_INT operation,
CS_INT type,
CS_INT idx,
CS_VOID *buffer
);
/* ctdyn.c */
extern CS_RETCODE CS_PUBLIC ct_dynamic(
CS_COMMAND *cmd,
CS_INT type,
CS_CHAR *id,
CS_INT idlen,
CS_CHAR *buf,
CS_INT buflen
);
/* ctdynsqd.c */
extern CS_RETCODE CS_PUBLIC ct_dynsqlda(
CS_COMMAND *cmd,
CS_INT type,
SQLDA *dap,
CS_INT operation
);
/* ctexit.c */
extern CS_RETCODE CS_PUBLIC ct_exit(
CS_CONTEXT *context,
CS_INT option
);
/* ctfetch.c */
extern CS_RETCODE CS_PUBLIC ct_fetch(
CS_COMMAND *cmd,
CS_INT type,
CS_INT offset,
CS_INT option,
CS_INT *count
);
/* ctfetch.c */
extern CS_RETCODE CS_PUBLIC ct_scroll_fetch(
CS_COMMAND *cmd,
CS_INT type,
CS_INT offset,
CS_INT option,
CS_INT *count
);
/* ctgfmt.c */
extern CS_RETCODE CS_PUBLIC ct_getformat(
CS_COMMAND *cmd,
CS_INT colnum,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
/* ctkeydat.c */
extern CS_RETCODE CS_PUBLIC ct_keydata(
CS_COMMAND *cmd,
CS_INT action,
CS_INT colnum,
CS_VOID *buffer,
CS_INT buflen,
CS_INT *outlen
);
/* ctinit.c */
extern CS_RETCODE CS_PUBLIC ct_init(
CS_CONTEXT *context,
CS_INT version
);
/* ctopt.c */
extern CS_RETCODE CS_PUBLIC ct_options(
CS_CONNECTION *connection,
CS_INT action,
CS_INT option,
CS_VOID *param,
CS_INT paramlen,
CS_INT *outlen
);
/* ctparam.c */
extern CS_RETCODE CS_PUBLIC ct_param(
CS_COMMAND *cmd,
CS_DATAFMT *datafmt,
CS_VOID *data,
CS_INT datalen,
CS_SMALLINT indicator
);
/* ctpass.c */
extern CS_RETCODE CS_PUBLIC ct_getloginfo(
CS_CONNECTION *connection,
CS_LOGINFO **logptr
);
extern CS_RETCODE CS_PUBLIC ct_setloginfo(
CS_CONNECTION *connection,
CS_LOGINFO *loginfo
);
extern CS_RETCODE CS_PUBLIC ct_recvpassthru(
CS_COMMAND *cmd,
CS_VOID **recvptr
);
extern CS_RETCODE CS_PUBLIC ct_sendpassthru(
CS_COMMAND *cmd,
CS_VOID *send_bufp
);
/* ctpoll.c */
extern CS_RETCODE CS_PUBLIC ct_poll(
CS_CONTEXT *context,
CS_CONNECTION *connection,
CS_INT milliseconds,
CS_CONNECTION **compconn,
CS_COMMAND **compcmd,
CS_INT *compid,
CS_INT *compstatus
);
/* ctrempwd.c */
extern CS_RETCODE CS_PUBLIC ct_remote_pwd(
CS_CONNECTION *connection,
CS_INT action,
CS_CHAR *server_name,
CS_INT snamelen,
CS_CHAR *password,
CS_INT pwdlen
);
/* ctresult.c */
extern CS_RETCODE CS_PUBLIC ct_results(
CS_COMMAND *cmd,
CS_INT *result_type
);
/* ctrinfo.c */
extern CS_RETCODE CS_PUBLIC ct_res_info(
CS_COMMAND *cmd,
CS_INT operation,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
/* ctsend.c */
extern CS_RETCODE CS_PUBLIC ct_send(
CS_COMMAND *cmd
);
extern CS_RETCODE CS_PUBLIC ct_send_params(
CS_COMMAND *cmd,
CS_INT unused
);
/* ctgtdata.c */
extern CS_RETCODE CS_PUBLIC ct_get_data(
CS_COMMAND *cmd,
CS_INT colnum,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
/* ctsndata.c */
extern CS_RETCODE CS_PUBLIC ct_send_data(
CS_COMMAND *cmd,
CS_VOID *buf,
CS_INT buflen
);
/* ctdinfo.c */
extern CS_RETCODE CS_PUBLIC ct_data_info(
CS_COMMAND *cmd,
CS_INT action,
CS_INT colnum,
CS_IODESC *iodesc
);
/* ctwakeup.c */
extern CS_RETCODE CS_PUBLIC ct_wakeup(
CS_CONNECTION *connection,
CS_COMMAND *cmd,
CS_INT func_id,
CS_RETCODE status
);
/* ctsetlab.c */
extern CS_RETCODE CS_PUBLIC ct_labels(
CS_CONNECTION *connection,
CS_INT action,
CS_CHAR *labelname,
CS_INT namelen,
CS_CHAR *labelvalue,
CS_INT valuelen,
CS_INT *outlen
);
/* ctdsbrse.c */
extern CS_RETCODE CS_PUBLIC ct_ds_lookup(
CS_CONNECTION *connection,
CS_INT action,
CS_INT *reqidp,
CS_DS_LOOKUP_INFO *lookupinfo,
CS_VOID *userdatap
);
/* ctdsdrop.c */
extern CS_RETCODE CS_PUBLIC ct_ds_dropobj(
CS_CONNECTION *connection,
CS_DS_OBJECT *object
);
/* ctdsobji.c */
extern CS_RETCODE CS_PUBLIC ct_ds_objinfo(
CS_DS_OBJECT *objclass,
CS_INT action,
CS_INT objinfo,
CS_INT number,
CS_VOID *buffer,
CS_INT buflen,
CS_INT *outlen
);
/* ctsetpar.c */
extern CS_RETCODE CS_PUBLIC ct_setparam(
CS_COMMAND *cmd,
CS_DATAFMT *datafmt,
CS_VOID *data,
CS_INT *datalenp,
CS_SMALLINT *indp
);
/* ctsraw.c */
extern CS_RETCODE CS_PUBLIC ct_send_raw(
CS_COMMAND *cmd,
CS_VOID *rawdata,
size_t rawsize,
CS_INT rawoption
);
CS_END_EXTERN_C
#endif /* __CTPUBLIC_H__ */

View File

@ -0,0 +1,38 @@
/*
** SAP OC-LIBRARY
** Copyright (c) 2013 SAP AG or an SAP affiliate company. All rights reserved.
*/
/*
** sqlca.h - This is the header file for the sqlca structure for precompilers
*/
#ifndef __SQLCA_H__
#define __SQLCA_H__
/*****************************************************************************
**
** sqlca structure used
**
*****************************************************************************/
typedef struct _sqlca
{
char sqlcaid[8];
long sqlcabc;
long sqlcode;
struct
{
long sqlerrml;
char sqlerrmc[256];
} sqlerrm;
char sqlerrp[8];
long sqlerrd[6];
char sqlwarn[8];
char sqlext[8];
} SQLCA;
#endif /* __SQLCA_H__ */

View File

@ -0,0 +1,44 @@
/*
** SAP CT-LIBRARY
** Copyright (c) 2013 SAP AG or an SAP affiliate company. All rights reserved.
*/
#ifndef __SQLDA_H__
#define __SQLDA_H__
typedef struct _sqlda
{
CS_SMALLINT sd_sqln;
CS_SMALLINT sd_sqld;
struct _sd_column
{
CS_DATAFMT sd_datafmt;
CS_VOID *sd_sqldata;
CS_SMALLINT sd_sqlind;
CS_INT sd_sqllen;
CS_VOID *sd_sqlmore;
} sd_column[1];
} syb_sqlda;
typedef syb_sqlda SQLDA;
#define SYB_SQLDA_SIZE(n) (sizeof(SQLDA) \
- sizeof(struct _sd_column) \
+ (n) * sizeof(struct _sd_column))
#ifndef SQLDA_DECL
#define SQLDA_DECL(name, size) \
struct { \
CS_SMALLINT sd_sqln; \
CS_SMALLINT sd_sqld; \
struct { \
CS_DATAFMT sd_datafmt; \
CS_VOID *sd_sqldata; \
CS_SMALLINT sd_sqlind; \
CS_INT sd_sqllen; \
CS_VOID *sd_sqlmore; \
} sd_column[(size)]; \
} name
#endif /* SQLDA_DECL */
#endif /* __SQLDA_H__ */