📄 zliborasql.pas
字号:
errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
indp: Pointer; alenp: Pointer; rcodep: Pointer; maxarr_len: ub4;
curelep: Pointer; mode: ub4): sword; cdecl;
TOCIBindByName = function(stmtp: POCIStmt; var bindpp: POCIBind;
errhp: POCIError; placeholder: text; placeh_len: sb4; valuep: Pointer;
value_sz: sb4; dty: ub2; indp: Pointer; alenp: Pointer; rcodep: Pointer;
maxarr_len: ub4; curelep: Pointer; mode: ub4): sword; cdecl;
TOCIBindDynamic = function(bindp: POCIBind; errhp: POCIError; ictxp: Pointer;
icbfp: Pointer; octxp: Pointer; ocbfp: Pointer): sword; cdecl;
TOCITransStart = function(svchp: POCISvcCtx; errhp: POCIError; timeout: word;
flags: ub4): sword; cdecl;
TOCITransRollback = function(svchp:POCISvcCtx; errhp:POCIError;
flags: ub4): sword; cdecl;
TOCITransCommit = function(svchp: POCISvcCtx; errhp: POCIError;
flags: ub4) :sword; cdecl;
TOCITransDetach = function(svchp: POCISvcCtx; errhp: POCIError;
flags: ub4) :sword; cdecl;
TOCITransPrepare = function(svchp: POCISvcCtx; errhp: POCIError;
flags: ub4) :sword; cdecl;
TOCITransForget = function(svchp: POCISvcCtx; errhp: POCIError;
flags: ub4) :sword; cdecl;
TOCIDescribeAny = function(svchp: POCISvcCtx; errhp: POCIError;
objptr: Pointer; objnm_len: ub4; objptr_typ: ub1; info_level: ub1;
objtyp: ub1; dschp: POCIDescribe): sword; cdecl;
TOCIBreak = function(svchp: POCISvcCtx; errhp:POCIError): sword; cdecl;
TOCIReset = function(svchp: POCISvcCtx; errhp:POCIError): sword; cdecl;
TOCIDescriptorAlloc = function(parenth: POCIEnv; var descpp: POCIDescriptor;
htype: ub4; xtramem_sz: integer; usrmempp: Pointer): sword; cdecl;
TOCIDescriptorFree = function(descp: Pointer; htype: ub4): sword; cdecl;
TOCILobAppend = function(svchp: POCISvcCtx; errhp: POCIError; dst_locp,
src_locp: POCILobLocator): sword; cdecl;
TOCILobAssign = function(svchp: POCISvcCtx; errhp: POCIError;
src_locp: POCILobLocator; var dst_locpp: POCILobLocator): sword; cdecl;
TOCILobClose = function(svchp: POCISvcCtx; errhp: POCIError;
locp: POCILobLocator): sword; cdecl;
TOCILobCopy = function(svchp: POCISvcCtx; errhp: POCIError;
dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
dst_offset: ub4; src_offset: ub4): sword; cdecl;
TOCILobEnableBuffering = function(svchp: POCISvcCtx; errhp: POCIError;
locp: POCILobLocator): sword; cdecl;
TOCILobDisableBuffering = function(svchp: POCISvcCtx; errhp: POCIError;
locp: POCILobLocator): sword; cdecl;
TOCILobErase = function(svchp: POCISvcCtx; errhp: POCIError; locp: POCILobLocator;
var amount: ub4; offset: ub4): sword; cdecl;
TOCILobFileExists = function(svchp: POCISvcCtx; errhp: POCIError;
filep: POCILobLocator; var flag: Boolean): sword; cdecl;
TOCILobFileGetName = function(envhp: POCIEnv; errhp: POCIError;
filep: POCILobLocator; dir_alias: text; var d_length: ub2; filename: text;
var f_length: ub2): sword; cdecl;
TOCILobFileSetName = function(envhp: POCIEnv; errhp: POCIError;
var filep: POCILobLocator; dir_alias: text; d_length: ub2; filename: text;
f_length: ub2): sword; cdecl;
TOCILobFlushBuffer = function(svchp: POCISvcCtx; errhp: POCIError;
locp: POCILobLocator; flag: ub4): sword; cdecl;
TOCILobGetLength = function(svchp: POCISvcCtx; errhp: POCIError;
locp: POCILobLocator; var lenp: ub4): sword; cdecl;
TOCILobIsOpen = function(svchp: POCISvcCtx; errhp: POCIError;
locp: POCILobLocator; var flag: LongBool): sword; cdecl;
TOCILobLoadFromFile = function(svchp: POCISvcCtx; errhp: POCIError;
dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
dst_offset: ub4; src_offset: ub4): sword; cdecl;
TOCILobLocatorIsInit = function(envhp: POCIEnv; errhp: POCIError;
locp: POCILobLocator; var is_initialized: LongBool): sword; cdecl;
TOCILobOpen = function(svchp: POCISvcCtx; errhp: POCIError;
locp: POCILobLocator; mode: ub1): sword; cdecl;
TOCILobRead = function(svchp: POCISvcCtx; errhp: POCIError;
locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword; cdecl;
TOCILobTrim = function(svchp: POCISvcCtx; errhp: POCIError;
locp: POCILobLocator; newlen: ub4): sword; cdecl;
TOCILobWrite = function(svchp: POCISvcCtx; errhp: POCIError;
locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
piece: ub1; ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword; cdecl;
TOCIStmtGetPieceInfo = function(stmtp: POCIStmt; errhp: POCIError;
var hndlpp: Pointer; var typep: ub4; var in_outp: ub1; var iterp: ub4;
var idxp: ub4; var piecep: ub1): sword; cdecl;
TOCIStmtSetPieceInfo = function(handle: Pointer; typep: ub4; errhp: POCIError;
buf: Pointer; var alenp: ub4; piece: ub1; indp: Pointer;
var rcodep: ub2): sword; cdecl;
TOCIPasswordChange = function(svchp: POCISvcCtx; errhp: POCIError;
user_name: text; usernm_len: ub4; opasswd: text; opasswd_len: ub4;
npasswd: text; npasswd_len: sb4; mode: ub4): sword; cdecl;
TOCIServerVersion = function(hndlp: POCIHandle; errhp: POCIError; bufp: text;
bufsz: ub4; hndltype: ub1): sword; cdecl;
TOCIResultSetToStmt = function(rsetdp: POCIHandle; errhp: POCIError): sword; cdecl;
var
OCIPasswordChange: TOCIPasswordChange;
OCIInitialize: TOCIInitialize;
OCIEnvInit: TOCIEnvInit;
OCIEnvCreate: TOCIEnvCreate;
OCIHandleAlloc: TOCIHandleAlloc;
OCIServerAttach: TOCIServerAttach;
OCIAttrSet: TOCIAttrSet;
OCISessionBegin: TOCISessionBegin;
OCISessionEnd: TOCISessionEnd;
OCIServerDetach: TOCIServerDetach;
OCIHandleFree: TOCIHandleFree;
OCIErrorGet: TOCIErrorGet;
OCIStmtPrepare: TOCIStmtPrepare;
OCIStmtExecute: TOCIStmtExecute;
OCIParamGet: TOCIParamGet;
OCIAttrGet: TOCIAttrGet;
OCIStmtFetch: TOCIStmtFetch;
OCIDefineByPos: TOCIDefineByPos;
OCIDefineArrayOfStruct: TOCIDefineArrayOfStruct;
OCIBindByPos: TOCIBindByPos;
OCIBindByName: TOCIBindByName;
OCITransStart: TOCITransStart;
OCITransCommit: TOCITransCommit;
OCITransRollback: TOCITransRollback;
OCITransDetach: TOCITransDetach;
OCITransPrepare: TOCITransPrepare;
OCITransForget: TOCITransForget;
OCIDescribeAny: TOCIDescribeAny;
OCIBreak: TOCIBreak;
OCIReset: TOCIReset;
OCIDescriptorAlloc: TOCIDescriptorAlloc;
OCIDescriptorFree: TOCIDescriptorFree;
OCIStmtGetPieceInfo: TOCIStmtGetPieceInfo;
OCIStmtSetPieceInfo: TOCIStmtSetPieceInfo;
OCIServerVersion: TOCIServerVersion;
OCIBindDynamic: TOCIBindDynamic;
OCILobAppend: TOCILobAppend;
OCILobAssign: TOCILobAssign;
OCILobClose: TOCILobClose;
OCILobCopy: TOCILobCopy;
OCILobEnableBuffering: TOCILobEnableBuffering;
OCILobDisableBuffering: TOCILobDisableBuffering;
OCILobErase: TOCILobErase;
OCILobFileExists: TOCILobFileExists;
OCILobFileGetName: TOCILobFileGetName;
OCILobFileSetName: TOCILobFileSetName;
OCILobFlushBuffer: TOCILobFlushBuffer;
OCILobGetLength: TOCILobGetLength;
OCILobIsOpen: TOCILobIsOpen;
OCILobLoadFromFile: TOCILobLoadFromFile;
OCILobLocatorIsInit: TOCILobLocatorIsInit;
OCILobOpen: TOCILobOpen;
OCILobRead: TOCILobRead;
OCILobTrim: TOCILobTrim;
OCILobWrite: TOCILobWrite;
OCIResultSetToStmt: TOCIResultSetToStmt;
{ Library Initialization }
function OraSqlLoadLib: Boolean;
{
const
DLL: string = DEFAULT_DLL_LOCATION1;
hDLL: THandle = 0;
DLLVersion: string = '';
}
var
DLL: string;
hDLL: THandle;
DLLVersion: string;
LibLoaded: Boolean;
implementation
uses SysUtils, ZExtra, ZDBaseConst;
{ Initialize Oracle8 dynamic library }
function OraSqlLoadLib: Boolean;
begin
if hDLL = 0 then
begin
DLL := DEFAULT_DLL_LOCATION1;
hDLL := GetModuleHandle(PChar(DLL));
LibLoaded := False;
if hDLL = 0 then
begin
hDLL := LoadLibrary(PChar(DLL));
LibLoaded := True;
end;
end;
if hDLL = 0 then
begin
DLL := DEFAULT_DLL_LOCATION2;
hDLL := GetModuleHandle(PChar(DLL));
LibLoaded := False;
if hDLL = 0 then
begin
hDLL := LoadLibrary(PChar(DLL));
LibLoaded := True;
end;
end;
if hDLL <> 0 then
begin
{
DLLVersion := GetFileVersion(DLL);
if DLLVersion < cvOracle80000 then
raise Exception.CreateFmt('Bad OCI version [%s]. It requares 8.0.3 or elder',
[DLLVersion]);
}
// if DLLVersion >= cvOracle81000 then
OCIEnvCreate := GetProcAddress(hDLL, 'OCIEnvCreate');
// else begin
OCIInitialize := GetProcAddress(hDLL, 'OCIInitialize');
OCIEnvInit := GetProcAddress(hDLL, 'OCIEnvInit');
// end;
OCIHandleAlloc := GetProcAddress(hDLL, 'OCIHandleAlloc');
OCIHandleFree := GetProcAddress(hDLL, 'OCIHandleFree');
OCIAttrSet := GetProcAddress(hDLL, 'OCIAttrSet');
OCIAttrGet := GetProcAddress(hDLL, 'OCIAttrGet');
OCIDescriptorAlloc := GetProcAddress(hDLL, 'OCIDescriptorAlloc');
OCIDescriptorFree := GetProcAddress(hDLL, 'OCIDescriptorFree');
OCIErrorGet := GetProcAddress(hDLL, 'OCIErrorGet');
OCIServerAttach := GetProcAddress(hDLL, 'OCIServerAttach');
OCIServerDetach := GetProcAddress(hDLL, 'OCIServerDetach');
OCIServerVersion := GetProcAddress(hDLL, 'OCIServerVersion');
OCIBreak := GetProcAddress(hDLL, 'OCIBreak');
if DLLVersion >= cvOracle81000 then
OCIReset := GetProcAddress(hDLL, 'OCIReset');
OCISessionBegin := GetProcAddress(hDLL, 'OCISessionBegin');
OCISessionEnd := GetProcAddress(hDLL, 'OCISessionEnd');
OCIPasswordChange := GetProcAddress(hDLL, 'OCIPasswordChange');
OCITransStart := GetProcAddress(hDLL, 'OCITransStart');
OCITransCommit := GetProcAddress(hDLL, 'OCITransCommit');
OCITransRollback := GetProcAddress(hDLL, 'OCITransRollback');
OCITransDetach := GetProcAddress(hDLL, 'OCITransDetach');
OCITransPrepare := GetProcAddress(hDLL, 'OCITransPrepare');
OCITransForget := GetProcAddress(hDLL, 'OCITransForget');
OCIStmtPrepare := GetProcAddress(hDLL, 'OCIStmtPrepare');
OCIStmtExecute := GetProcAddress(hDLL, 'OCIStmtExecute');
OCIStmtFetch := GetProcAddress(hDLL, 'OCIStmtFetch');
OCIStmtGetPieceInfo := GetProcAddress(hDLL, 'OCIStmtGetPieceInfo');
OCIStmtSetPieceInfo := GetProcAddress(hDLL, 'OCIStmtSetPieceInfo');
OCIParamGet := GetProcAddress(hDLL, 'OCIParamGet');
OCIResultSetToStmt := GetProcAddress(hDLL, 'OCIResultSetToStmt');
OCIDefineByPos := GetProcAddress(hDLL, 'OCIDefineByPos');
OCIDefineArrayOfStruct := GetProcAddress(hDLL, 'OCIDefineArrayOfStruct');
OCIBindByPos := GetProcAddress(hDLL, 'OCIBindByPos');
OCIBindByName := GetProcAddress(hDLL, 'OCIBindByName');
OCIBindDynamic := GetProcAddress(hDLL, 'OCIBindDynamic');
OCILobAppend := GetProcAddress(hDLL, 'OCILobAppend');
OCILobAssign := GetProcAddress(hDLL, 'OCILobAssign');
OCILobCopy := GetProcAddress(hDLL, 'OCILobCopy');
OCILobEnableBuffering := GetProcAddress(hDLL, 'OCILobEnableBuffering');
OCILobDisableBuffering := GetProcAddress(hDLL, 'OCILobDisableBuffering');
OCILobErase := GetProcAddress(hDLL, 'OCILobErase');
OCILobFileExists := GetProcAddress(hDLL, 'OCILobFileExists');
OCILobFileGetName := GetProcAddress(hDLL, 'OCILobFileGetName');
OCILobFileSetName := GetProcAddress(hDLL, 'OCILobFileSetName');
OCILobFlushBuffer := GetProcAddress(hDLL, 'OCILobFlushBuffer');
OCILobGetLength := GetProcAddress(hDLL, 'OCILobGetLength');
OCILobLoadFromFile := GetProcAddress(hDLL, 'OCILobLoadFromFile');
OCILobLocatorIsInit := GetProcAddress(hDLL, 'OCILobLocatorIsInit');
OCILobRead := GetProcAddress(hDLL, 'OCILobRead');
OCILobTrim := GetProcAddress(hDLL, 'OCILobTrim');
OCILobWrite := GetProcAddress(hDLL, 'OCILobWrite');
if DLLVersion >= cvOracle81000 then
begin
OCILobClose := GetProcAddress(hDLL, 'OCILobClose');
OCILobIsOpen := GetProcAddress(hDLL, 'OCILobIsOpen');
OCILobOpen := GetProcAddress(hDLL, 'OCILobOpen');
end
else
begin
OCILobClose := GetProcAddress(hDLL, 'OCILobFileClose');
OCILobIsOpen := GetProcAddress(hDLL, 'OCILobFileIsOpen');
OCILobOpen := GetProcAddress(hDLL, 'OCILobFileOpen');
end;
OCIDescribeAny := GetProcAddress(hDLL, 'OCIDescribeAny');
Result := True;
end
else
raise Exception.Create(Format(SLibraryNotFound,[DLL]));
end;
initialization
DLL := DEFAULT_DLL_LOCATION1;
hDLL := 0;
DLLVersion := '';
finalization
if (hDLL <> 0) and LibLoaded then
FreeLibrary(hDLL);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -