⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sddb2.pas

📁 SQLDirect Component Library is a light-weight Borland Database Engine replacement for Borland Delphi
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  SQL_DB2EXPLAIN_MODE_ON       	= $00000002;
  SQL_DB2EXPLAIN_SNAPSHOT_MODE_ON= SQL_DB2EXPLAIN_SNAPSHOT_ON+SQL_DB2EXPLAIN_MODE_ON;
  SQL_DB2EXPLAIN_ON            	= SQL_DB2EXPLAIN_SNAPSHOT_ON;
  SQL_DB2EXPLAIN_DEFAULT       	= SQL_DB2EXPLAIN_OFF;

{/* Options for SQL_WCHARTYPE
 * Note that you can only specify SQL_WCHARTYPE_CONVERT if you have an
 * external compile flag SQL_WCHART_CONVERT defined
 */
#ifdef SQL_WCHART_CONVERT
#define SQL_WCHARTYPE_CONVERT        1
#endif
#define SQL_WCHARTYPE_NOCONVERT      0
#define SQL_WCHARTYPE_DEFAULT        SQL_WCHARTYPE_NOCONVERT
}

//  LOB file reference options
  SQL_FILE_READ      	=  2;	// Input file to read from
  SQL_FILE_CREATE    	=  8;	// Output file - new file to be created
  SQL_FILE_OVERWRITE 	= 16;  	// Output file - overwrite existing file or create a new file if it doesn't exist
  SQL_FILE_APPEND    	= 32;	// Output file - append to an existing file or create a new file if it doesn't exist

// Source of string for SQLGetLength(), SQLGetPosition(),
// and SQLGetSubstring().
  SQL_FROM_LOCATOR     	= 2;
  SQL_FROM_LITERAL     	= 3;


type
  ESDDb2Error = class(ESDOdbcError);

{ TDB2Functions }
{*******************************************************************************
 * DB2 specific CLI APIs (sqlcli1.h)
 ******************************************************************************}
  TSQLBindFileToCol =
  		function  (hStmt: SQLHSTMT; icol: SQLUSMALLINT;
                   FileName: TSDCharPtr; var FileNameLength: SQLSMALLINT;
                   var  FileOptions: SQLUINTEGER; MaxFileNameLength: SQLSMALLINT;
                   var StringLength, IndicatorValue: SQLINTEGER): SQLRETURN;{$IFNDEF SD_CLR} stdcall; {$ENDIF}
  TSQLBindFileToParam =
  		function (hStmt: SQLHSTMT; ipar: SQLUSMALLINT; fSqlType: SQLSMALLINT;
                   FileName: TSDCharPtr; var FileNameLength: SQLSMALLINT;
                   var  FileOptions: SQLUINTEGER; MaxFileNameLength: SQLSMALLINT;
                   var IndicatorValue: SQLINTEGER): SQLRETURN;{$IFNDEF SD_CLR} stdcall; {$ENDIF}
  TSQLGetLength =
  		function (hStmt: SQLHSTMT; LocatorCType: SQLSMALLINT; Locator: SQLINTEGER;
                   var StringLength, IndicatorValue: SQLINTEGER): SQLRETURN;{$IFNDEF SD_CLR} stdcall; {$ENDIF}
  TSQLGetPosition =
  		function (hStmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
                   SourceLocator, SearchLocator: SQLINTEGER;
                   SearchLiteral: TSDCharPtr; SearchLiteralLength: SQLINTEGER;
                   FromPosition: SQLUINTEGER; var LocatedAt: SQLUINTEGER;
                   var IndicatorValue: SQLINTEGER): SQLRETURN;{$IFNDEF SD_CLR} stdcall; {$ENDIF}
  TSQLGetSubString =
  		function (hStmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
                   SourceLocator: SQLINTEGER; FromPosition, ForLength: SQLUINTEGER;
                   TargetCType: SQLSMALLINT; rgbValue: SQLPOINTER;
                   cbValueMax: SQLINTEGER; var StringLength, IndicatorValue: SQLINTEGER): SQLRETURN;{$IFNDEF SD_CLR} stdcall; {$ENDIF}
  TSQLSetColAttributes =
  		function (hStmt: SQLHSTMT; icol: SQLUSMALLINT;
                   szColName: TSDCharPtr; cbColName, fSQLType: SQLSMALLINT;
                   cbColDef: SQLUINTEGER; ibScale, fNullable: SQLSMALLINT): SQLRETURN;{$IFNDEF SD_CLR} stdcall; {$ENDIF}

{*******************************************************************************
 * APIs defined only by X/Open CLI (sqlcli1.h)
 ******************************************************************************}
  TSQLBindParam =
    		function(hStmt: SQLHSTMT; ParameterNumber: SQLUSMALLINT;
                     ValueType, ParameterType: SQLSMALLINT; LengthPrecision: SQLUINTEGER;
                     ParameterScale: SQLSMALLINT; ParameterValue: SQLPOINTER;
                     var StrLen_or_Ind: SQLINTEGER): SQLRETURN;{$IFNDEF SD_CLR} stdcall; {$ENDIF}
                     
	// adding DB2 specific CLI APIs
  TDB2Functions = class(TOdbcFunctions)
  private
    FSQLBindFileToCol:	TSQLBindFileToCol;
    FSQLBindFileToParam:TSQLBindFileToParam;
    FSQLGetLength:	TSQLGetLength;
    FSQLGetPosition:	TSQLGetPosition;
    FSQLGetSubString:	TSQLGetSubString;
    FSQLSetColAttributes:TSQLSetColAttributes;
    FSQLBindParam:	TSQLBindParam;
  public
    procedure SetApiCalls(ASqlLibModule: THandle); override;
    procedure ClearApiCalls; override;

    property SQLBindFileToCol:	TSQLBindFileToCol 	read FSQLBindFileToCol;
    property SQLBindFileToParam:TSQLBindFileToParam	read FSQLBindFileToParam;
    property SQLGetLength:	TSQLGetLength		read FSQLGetLength;
    property SQLGetPosition:	TSQLGetPosition		read FSQLGetPosition;
    property SQLGetSubString:	TSQLGetSubString	read FSQLGetSubString;
    property SQLSetColAttributes:TSQLSetColAttributes	read FSQLSetColAttributes;
    property SQLBindParam:	TSQLBindParam		read FSQLBindParam;
  end;

{ TIDB2Database }
  TIDB2Database = class(TICustomOdbcDatabase)
  private
    function GetCalls: TDB2Functions;
  protected
    procedure FreeSqlLib; override;
    procedure LoadSqlLib; override;
    procedure RaiseSDEngineError(AErrorCode, ANativeError: TSDEResult; const AMsg, ASqlState: string); override;
  public
    function CreateSqlCommand: TISqlCommand; override;
    function GetAutoIncSQL: string; override;
    property Calls: TDB2Functions read GetCalls;
  end;

{ TIDB2Command }
  TIDB2Command = class(TICustomOdbcCommand)
  private
    function GetSqlDatabase: TIDB2Database;
  protected
    procedure Connect; override;

    function FieldDataType(ExtDataType: Integer): TFieldType; override;
    function SqlDataType(FieldType: TFieldType): Integer; override;
    
    property SqlDatabase: TIDB2Database read GetSqlDatabase;
  end;

const
  DefSqlApiDLL	= 'DB2CLI.DLL';

var
  SqlApiDLL: string;
  DB2Calls: TDB2Functions;

{$IFDEF SD_CLR}

[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLAllocConnect')]
function SQLAllocConnect(henv :SQLHENV; var hdbc: SQLHDBC): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLAllocEnv')]
function SQLAllocEnv(var henv: SQLHENV): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLAllocHandle')]
function SQLAllocHandle(fHandleType: SQLSMALLINT; hInput: SQLHANDLE;
    var hOutput: SQLHANDLE): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLAllocStmt')]
function SQLAllocStmt(hdbc: SQLHDBC; var hstmt: SQLHSTMT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLBindCol')]
function SQLBindCol(hstmt: SQLHSTMT; icol: SQLUSMALLINT; fCType: SQLSMALLINT;
                    rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
                    pcbValue: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLCancel')]
function SQLCancel(hstmt: SQLHSTMT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLCloseCursor')]
function SQLCloseCursor(hStmt: SQLHSTMT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLColAttribute')]
function SQLColAttribute(hstmt: SQLHSTMT; icol, fDescType: SQLUSMALLINT;
                    rgbDesc: SQLPOINTER; cbDescMax: SQLSMALLINT;
                    pcbDesc: SQLPOINTER; pfDesc: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLColumns')]
function SQLColumns(hStmt: SQLHSTMT;
                    szCatalogName: TSDCharPtr; cbCatalogName: SQLSMALLINT;
                    szSchemaName: TSDCharPtr; cbSchemaName: SQLSMALLINT;
                    szTableName: TSDCharPtr; cbTableName: SQLSMALLINT;
                    szColumnName: TSDCharPtr; cbColumnName: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLConnect')]
function SQLConnect(hdbc: SQLHDBC; szDSN: TSDCharPtr; cbDSN: SQLSMALLINT;
                    szUID: TSDCharPtr; cbUID: SQLSMALLINT;
                    szAuthStr: TSDCharPtr; cbAuthStr: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLCopyDesc')]
function SQLCopyDesc(hDescSource: SQLHDESC; hDescTarget: SQLHDESC): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLDataSources')]
function SQLDataSources(hEnv: SQLHENV; fDirection: SQLUSMALLINT;
                    szDSN: TSDCharPtr; cbDSNMax: SQLSMALLINT; var cbDSN: SQLSMALLINT;
                    szDescription: TSDCharPtr; cbDescriptionMax: SQLSMALLINT;
                    var cbDescription: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLDescribeCol')]
function SQLDescribeCol(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
                    szColName: TSDCharPtr; cbColNameMax: SQLSMALLINT; var cbColName, fSqlType: SQLSMALLINT;
                    var cbColDef: SQLUINTEGER; var ibScale, fNullable: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLDisconnect')]
function SQLDisconnect(hdbc: SQLHDBC): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLEndTran')]
function SQLEndTran(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE; fType: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLError')]
function SQLError(henv: SQLHENV; hdbc: SQLHDBC; hstmt: SQLHSTMT;
            szSqlState: TSDCharPtr; var fNativeError: SQLINTEGER;
            szErrorMsg: TSDCharPtr; cbErrorMsgMax: SQLSMALLINT;
            var cbErrorMsg: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLExecDirect')]
function SQLExecDirect(hstmt: SQLHSTMT; szSqlStr: TSDCharPtr; cbSqlStr: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLExecute')]
function SQLExecute(hstmt: SQLHSTMT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFetch')]
function SQLFetch(hstmt: SQLHSTMT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFetchScroll')]
function SQLFetchScroll(hStmt: SQLHSTMT;
	    FetchOrientation: SQLSMALLINT; FetchOffset: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFreeConnect')]
function SQLFreeConnect(hdbc: SQLHDBC): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFreeEnv')]
function SQLFreeEnv(henv: SQLHENV): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFreeHandle')]
function SQLFreeHandle(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFreeStmt')]
function SQLFreeStmt(hstmt: SQLHSTMT; fOption: SQLUSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetConnectAttr')]
function SQLGetConnectAttr(hDbc: SQLHDBC; Attribute: SQLINTEGER; Value: SQLPOINTER;
            BufferLength: SQLINTEGER; pStringLength: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetConnectOption')]
function SQLGetConnectOption(hDbc: SQLHDBC; fOption: SQLUSMALLINT; pvParam: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetCursorName')]
function SQLGetCursorName(hStmt: SQLHSTMT; szCursor: TSDCharPtr; cbCursorMax: SQLSMALLINT;
            var cbCursor: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetData')]
function SQLGetData(hStmt: SQLHSTMT; icol: SQLUSMALLINT; fCType: SQLSMALLINT;
            rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
            var cbValue: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetDescField')]
function SQLGetDescField(DescriptorHandle: SQLHDESC; RecNumber, FieldIdentifier: SQLSMALLINT;
            Value: SQLPOINTER; BufferLength: SQLINTEGER;
            var StringLength: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetDescRec')]
function SQLGetDescRec(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
            Name: TSDCharPtr; BufferLength: SQLSMALLINT; var StringLength, RecType, RecSubType: SQLSMALLINT;
            var Length: SQLINTEGER; var Precision, Scale, Nullable: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetDiagField')]
function SQLGetDiagField(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE; iRecNumber: SQLSMALLINT;
            fDiagIdentifier: SQLSMALLINT; var cbDiagInfo: SQLINTEGER;
            cbDiagInfoMax: SQLSMALLINT; pcbDiagInfo: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetDiagRec')]
function SQLGetDiagRec(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE; iRecNumber: SQLSMALLINT;
               szSqlState: TSDCharPtr; var fNativeError: SQLINTEGER;
               szErrorMsg: TSDCharPtr; cbErrorMsgMax: SQLSMALLINT;
               var cbErrorMsg: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetEnvAttr')]
function SQLGetEnvAttr(hEnv: SQLHENV; Attr: SQLINTEGER; Value: SQLPOINTER;
    		BufLen: SQLINTEGER; var StringLength: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetFunctions')]
function SQLGetFunctions(hDbc: SQLHDBC; fFunction: SQLUSMALLINT; var fExists: SQLUSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetInfo')]
function SQLGetInfo(hDbc: SQLHDBC; fInfoType: SQLUSMALLINT; rgbInfoValue: SQLPOINTER;
               cbInfoValueMax: SQLSMALLINT; var cbInfoValue: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetStmtAttr')]
function SQLGetStmtAttr(hStmt: SQLHSTMT; Attribute: SQLINTEGER; Value: SQLPOINTER;
               BufferLength: SQLINTEGER; var StringLength: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetStmtOption')]
function SQLGetStmtOption(hStmt: SQLHSTMT; fOption: SQLUSMALLINT; pvParam: SQLPOINTER): SQLRETURN; external;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -