📄 zlibmssql.pas
字号:
{ Macros for dbsetlname() }
DBSETHOST = 1;
DBSETUSER = 2;
DBSETPWD = 3;
DBSETAPP = 4;
DBSETID = 5;
DBSETLANG = 6;
DBSETSECURE = 7;
DBVER42 = 8;
DBVER60 = 9;
DBSET_LOGIN_TIME = 10;
DBSETFALLBACK = 12;
{ Standard exit and error values }
STDEXIT = 0;
ERREXIT = -1;
{ dbrpcinit flags }
DBRPCRECOMPILE = $0001;
DBRPCRESET = $0004;
DBRPCCURSOR = $0008;
{ dbrpcparam flags }
DBRPCRETURN = $1;
DBRPCDEFAULT = $2;
{ Cursor related constants }
{ Following flags are used in the concuropt parameter in the dbcursoropen function }
CUR_READONLY = 1; { Read only cursor, no data modifications }
CUR_LOCKCC = 2; { Intent to update, all fetched data locked when }
{ dbcursorfetch is called inside a transaction block }
CUR_OPTCC = 3; { Optimistic concurrency control, data modifications }
{ succeed only if the row hasn't been updated since }
{ the last fetch. }
CUR_OPTCCVAL = 4; { Optimistic concurrency control based on selected column values }
{ Following flags are used in the scrollopt parameter in dbcursoropen }
CUR_FORWARD = 0; { Forward only scrolling }
CUR_KEYSET = -1; { Keyset driven scrolling }
CUR_DYNAMIC = 1; { Fully dynamic }
CUR_INSENSITIVE = -2; { Server-side cursors only }
{ Following flags define the fetchtype in the dbcursorfetch function }
FETCH_FIRST = 1; { Fetch first n rows }
FETCH_NEXT = 2; { Fetch next n rows }
FETCH_PREV = 3; { Fetch previous n rows }
FETCH_RANDOM = 4; { Fetch n rows beginning with given row # }
FETCH_RELATIVE = 5; { Fetch relative to previous fetch row # }
FETCH_LAST = 6; { Fetch the last n rows }
{ Following flags define the per row status as filled by dbcursorfetch and/or dbcursorfetchex }
FTC_EMPTY = $00; { No row available }
FTC_SUCCEED = $01; { Fetch succeeded, (failed if not set) }
FTC_MISSING = $02; { The row is missing }
FTC_ENDOFKEYSET = $04; { End of the keyset reached }
FTC_ENDOFRESULTS = $08; { End of results set reached }
{ Following flags define the operator types for the dbcursor function }
CRS_UPDATE = 1; { Update operation }
CRS_DELETE = 2; { Delete operation }
CRS_INSERT = 3; { Insert operation }
CRS_REFRESH = 4; { Refetch given row }
CRS_LOCKCC = 5; { Lock given row }
{ Following value can be passed to the dbcursorbind function for NOBIND type }
NOBIND = -2; { Return length and pointer to data }
{ Following are values used by DBCURSORINFO's Type parameter }
CU_CLIENT = $00000001;
CU_SERVER = $00000002;
CU_KEYSET = $00000004;
CU_MIXED = $00000008;
CU_DYNAMIC = $00000010;
CU_FORWARD = $00000020;
CU_INSENSITIVE = $00000040;
CU_READONLY = $00000080;
CU_LOCKCC = $00000100;
CU_OPTCC = $00000200;
CU_OPTCCVAL = $00000400;
{ Following are values used by DBCURSORINFO's Status parameter }
CU_FILLING = $00000001;
CU_FILLED = $00000002;
{ Following are values used by dbupdatetext's type parameter }
UT_TEXTPTR = $0001;
UT_TEXT = $0002;
UT_MORETEXT = $0004;
UT_DELETEONLY = $0008;
UT_LOG = $0010;
{ The following values are passed to dbserverenum for searching criteria. }
NET_SEARCH = $0001;
LOC_SEARCH = $0002;
{ These constants are the possible return values from dbserverenum. }
ENUM_SUCCESS = $0000;
MORE_DATA = $0001;
NET_NOT_AVAIL = $0002;
OUT_OF_MEMORY = $0004;
NOT_SUPPORTED = $0008;
ENUM_INVALID_PARAM = $0010;
{ 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). }
NE_E_NOMAP = 0; { No string; uses dblib default. }
NE_E_NOMEMORY = 1; { Insufficient memory. }
NE_E_NOACCESS = 2; { Access denied. }
NE_E_CONNBUSY = 3; { Connection is busy. }
NE_E_CONNBROKEN = 4; { Connection broken. }
NE_E_TOOMANYCONN = 5; { Connection limit exceeded. }
NE_E_SERVERNOTFOUND = 6; { Specified SQL server not found. }
NE_E_NETNOTSTARTED = 7; { The network has not been started. }
NE_E_NORESOURCE = 8; { Insufficient network resources. }
NE_E_NETBUSY = 9; { Network is busy. }
NE_E_NONETACCESS = 10; { Network access denied. }
NE_E_GENERAL = 11; { General network error. Check your documentation. }
NE_E_CONNMODE = 12; { Incorrect connection mode. }
NE_E_NAMENOTFOUND = 13; { Name not found in directory service. }
NE_E_INVALIDCONN = 14; { Invalid connection. }
NE_E_NETDATAERR = 15; { Error reading or writing network data. }
NE_E_TOOMANYFILES = 16; { Too many open file handles. }
NE_E_CANTCONNECT = 17; { SQL Server does not exist or access denied. }
NE_MAX_NETERROR = 17;
{****************** Plain API Types definition *****************}
type
{ DBPROCESS, LOGINREC and DBCURSOR }
PDBPROCESS = Pointer;
PLOGINREC = Pointer;
PDBCURSOR = Pointer;
PDBHANDLE = Pointer;
//typedef int (SQLAPI *SQLFARPROC)();
//typedef CHAR PTR LPSTR;
//typedef BYTE PTR LPBYTE;
//typedef void PTR LPVOID;
//typedef const CHAR PTR LPCSTR;
//typedef int BOOL;
{ DB-Library datatype definitions }
const
DBMAXCHAR = 256; { Max length of DBVARBINARY and DBVARCHAR, etc. }
type
RETCODE = Integer;
STATUS = Integer;
{ DB-Library datatypes }
DBCHAR = Char;
DBBINARY = Byte;
DBTINYINT = Byte;
DBSMALLINT = SmallInt;
DBUSMALLINT = Word;
DBINT = LongInt;
DBFLT8 = Double;
DBBIT = Byte;
DBBOOL = Byte;
DBFLT4 = Single;
DBMONEY4 = LongInt;
DBREAL = DBFLT4;
DBUBOOL = Cardinal;
DBDATETIM4 = packed record
numdays: Word; { No of days since Jan-1-1900 }
nummins: Word; { No. of minutes since midnight }
end;
PDBDATETIM4 = ^DBDATETIM4;
DBVARYCHAR = packed record
Len: DBSMALLINT;
Str: array[0..DBMAXCHAR-1] of DBCHAR;
end;
DBVARYBIN = packed record
Len: DBSMALLINT;
Bytes: array[0..DBMAXCHAR-1] of Byte;
end;
DBMONEY = packed record
mnyhigh: DBINT;
mnylow: Cardinal;
end;
DBDATETIME = packed record
dtdays: DBINT;
dttime: Cardinal;
end;
PDBDATETIME = ^DBDATETIME;
{ DBDATEREC structure used by dbdatecrack }
DBDATEREC = packed record
year: Integer; { 1753 - 9999 }
quarter: Integer; { 1 - 4 }
month: Integer; { 1 - 12 }
dayofyear: Integer; { 1 - 366 }
day: Integer; { 1 - 31 }
week: Integer; { 1 - 54 (for leap years) }
weekday: Integer; { 1 - 7 (Mon - Sun) }
hour: Integer; { 0 - 23 }
minute: Integer; { 0 - 59 }
second: Integer; { 0 - 59 }
millisecond: Integer; { 0 - 999 }
end;
PDBDATEREC = ^DBDATEREC;
type
DBNUMERIC = packed record
Precision: Byte;
Scale: Byte;
Sign: Byte; { 1 = Positive, 0 = Negative }
Val: array[0..MAXNUMERICLEN-1] of Byte;
end;
DBDECIMAL = DBNUMERIC;
const
{ Pack the following structures on a word boundary }
MAXCOLNAMELEN = 30;
MAXTABLENAME = 30;
type
DBCOL = packed record
SizeOfStruct: DBINT;
Name: array[0..MAXCOLNAMELEN] of Char;
ActualName: array[0..MAXCOLNAMELEN] of Char;
TableName: array[0..MAXTABLENAME] of Char;
Typ: SmallInt;
UserType: DBINT;
MaxLength: DBINT;
Precision: Byte;
Scale: Byte;
VarLength: Bool; { TRUE, FALSE }
Null: Byte; { TRUE, FALSE or DBUNKNOWN }
CaseSensitive: Byte; { TRUE, FALSE or DBUNKNOWN }
Updatable: Byte; { TRUE, FALSE or DBUNKNOWN }
Identity: BOOL; { TRUE, FALSE }
end;
PDBCOL = ^DBCOL;
const
MAXSERVERNAME = 30;
MAXNETLIBNAME = 255;
MAXNETLIBCONNSTR = 255;
type
DBPROC_INFO = packed record
SizeOfStruct: DBINT;
ServerType: Byte;
ServerMajor: Word;
ServerMinor: Word;
ServerRevision: Word;
ServerName: array[0..MAXSERVERNAME] of Char;
NetLibName: array[0..MAXNETLIBNAME] of Char;
NetLibConnStr: array[0..MAXNETLIBCONNSTR] of Char;
end;
PDBPROCINFO = ^DBPROC_INFO;
DBCURSOR_INFO = packed record
SizeOfStruct: DBINT; { Use sizeof(DBCURSORINFO) }
TotCols: Cardinal; { Total Columns in cursor }
TotRows: Cardinal; { Total Rows in cursor }
CurRow: Cardinal; { Current actual row in server }
TotRowsFetched: Cardinal; { Total rows actually fetched }
CurType: Cardinal; { See CU_... }
Status: Cardinal; { See CU_... }
end;
PDBCURSORINFO = ^DBCURSOR_INFO;
const
INVALID_UROWNUM = Cardinal(-1);
type
{ Pointer Datatypes }
//typedef const LPINT LPCINT;
//typedef const LPBYTE LPCBYTE ;
//typedef USHORT PTR LPUSHORT;
//typedef const LPUSHORT LPCUSHORT;
//typedef DBINT PTR LPDBINT;
PDBINT = ^DBINT;
PDBBINARY = ^DBBINARY;
//typedef const LPDBBINARY LPCDBBINARY;
//typedef DBDATEREC PTR LPDBDATEREC;
//typedef const LPDBDATEREC LPCDBDATEREC;
//typedef DBDATETIME PTR LPDBDATETIME;
//typedef const LPDBDATETIME LPCDBDATETIME;
{************** Plain API Function types definition *************}
{ Macros for setting the PLOGINREC }
function DBSETLHOST(Login: PLOGINREC; ClientHost: PChar): RETCODE;
function DBSETLUSER(Login: PLOGINREC; UserName: PChar): RETCODE;
function DBSETLPWD(Login: PLOGINREC; Passwd: PChar): RETCODE;
function DBSETLAPP(Login: PLOGINREC; AppName: PChar): RETCODE;
function DBSETLNATLANG(Login: PLOGINREC; Lang: PChar): RETCODE;
function DBSETLSECURE(Login: PLOGINREC): RETCODE;
function DBSETLVERSION(Login: PLOGINREC; Version: Byte): RETCODE;
function DBSETLTIME(Login: PLOGINREC; Seconds: DWORD): RETCODE;
function DBSETLFALLBACK(Login: PLOGINREC; Fallback: PChar): RETCODE;
{ Function macros }
function dbrbuf(Proc: PDBPROCESS): DBINT;
type
DBERRHANDLE_PROC = function(Proc: PDBPROCESS; Severity, DbErr, OsErr: Integer;
DbErrStr, OsErrStr: PChar): Integer; cdecl;
DBMSGHANDLE_PROC = function(Proc: PDBPROCESS; MsgNo: DBINT; MsgState,
Severity: Integer; MsgText, SrvName, ProcName: PChar; Line: DBUSMALLINT):
Integer; cdecl;
Tdberrhandle = function(Handler: DBERRHANDLE_PROC): DBERRHANDLE_PROC; cdecl;
Tdbmsghandle = function(Handler: DBMSGHANDLE_PROC): DBMSGHANDLE_PROC; cdecl;
Tdbprocerrhandle = function(DbHandle: PDBHANDLE; Handler: DBERRHANDLE_PROC):
DBERRHANDLE_PROC; cdecl;
Tdbprocmsghandle = function(DbHandle: PDBHANDLE; Handler: DBMSGHANDLE_PROC):
DBMSGHANDLE_PROC; cdecl;
{ Two-phase commit functions }
Tabort_xact = function(Proc: PDBPROCESS; CommId: DBINT): RETCODE; cdecl;
Tbuild_xact_string = procedure(XActName, Service: PChar; CommId: DBINT;
Result: PChar); cdecl;
Tclose_commit = procedure(Proc: PDBPROCESS); cdecl;
Tcommit_xact = function(Proc: PDBPROCESS; CommId: DBINT): RETCODE; cdecl;
Topen_commit = function(Login: PLOGINREC; ServerName: PChar): PDBPROCESS; cdecl;
Tremove_xact = function(Proc: PDBPROCESS; CommId: DBINT; SiteCount: Integer):
RETCODE; cdecl;
Tscan_xact = function(Proc: PDBPROCESS; CommId: DBINT): RETCODE; cdecl;
Tstart_xact = function(Proc: PDBPROCESS; AppName, XActName: PChar;
SiteCount: Integer): DBINT; cdecl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -