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

📄 zliborasql.pas

📁 控件名称:WINZEOS.ZIP 2002年08月03日 作者:CapellaDevelopment Zeos系列构件套件包含一组可直接存取Linux知名的免费数据库MySQL、Postgre
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    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 + -