📄 ib_intf.pas
字号:
private
FBusy:boolean;
function GetLibName:string;
function GetIBClientVersion: Integer;
function GetIBClientMinorVersion: Integer;
function GetBusy:boolean;
function isc_attach_database(status_vector : PISC_STATUS; db_name_length : Short;
db_name : PChar; db_handle : PISC_DB_HANDLE;
parm_buffer_length : Short; parm_buffer : PChar): ISC_STATUS;
function isc_array_get_slice(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE; array_id : PISC_QUAD;
descriptor : PISC_ARRAY_DESC; dest_array : PVoid;
slice_length : ISC_LONG): ISC_STATUS;
function isc_array_lookup_bounds(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE; table_name, column_name : PChar;
descriptor : PISC_ARRAY_DESC): ISC_STATUS;
function isc_array_lookup_desc(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE; table_name, column_name : PChar;
descriptor : PISC_ARRAY_DESC): ISC_STATUS;
function isc_array_set_desc(status_vector : PISC_STATUS; table_name : PChar;
column_name : PChar; sql_dtype, sql_length, sql_dimensions : PShort;
descriptor : PISC_ARRAY_DESC): ISC_STATUS;
function isc_array_put_slice(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE; array_id : PISC_QUAD;
descriptor : PISC_ARRAY_DESC; source_array : PVoid;
slice_length : PISC_LONG): ISC_STATUS;
function isc_blob_info(status_vector : PISC_STATUS; blob_handle : PISC_BLOB_HANDLE;
item_list_buffer_length : Short; item_list_buffer : PChar;
result_buffer_length : Short; result_buffer : PChar): ISC_STATUS;
function isc_blob_lookup_desc(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE; table_name, column_name : PChar;
descriptor : PISC_BLOB_DESC; global : PUChar): ISC_STATUS;
function isc_blob_set_desc(status_vector : PISC_STATUS; table_name, column_name : PChar;
subtype, charset, segment_size : Short; descriptor : PISC_BLOB_DESC): ISC_STATUS;
function isc_cancel_blob(status_vector : PISC_STATUS; blob_handle : PISC_BLOB_HANDLE): ISC_STATUS;
function isc_cancel_events(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
event_id : PISC_LONG): ISC_STATUS;
function isc_que_events(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
event_id : PISC_LONG; length : Short; event_buffer : PChar;
event_function : TISC_CALLBACK; event_function_arg : PVoid): ISC_STATUS;
function isc_wait_for_event (status_vector: PISC_STATUS;
db_handle: PISC_DB_HANDLE;length: Short; event_buffer,result_buffer: PChar): ISC_STATUS;
function isc_close_blob(status_vector : PISC_STATUS; blob_handle : PISC_BLOB_HANDLE): ISC_STATUS;
function isc_commit_retaining(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE): ISC_STATUS;
function isc_commit_transaction(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE): ISC_STATUS;
function isc_transaction_info(status_vector : PISC_STATUS;
tran_handle : PISC_TR_HANDLE;
item_list_buffer_length : Short;
item_list_buffer : PChar;
result_buffer_length : Short;
result_buffer : PChar): ISC_STATUS;
function isc_create_blob2(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE; blob_handle : PISC_BLOB_HANDLE;
blob_id : PISC_QUAD; bpb_length : Short; bpb_address : PChar): ISC_STATUS;
function isc_database_info(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
item_list_buffer_length : Short; item_list_buffer : PChar;
result_buffer_length : Short; result_buffer : PChar): ISC_STATUS;
procedure isc_decode_date(ib_date: PISC_QUAD; tm_date: PCTimeStructure);
procedure isc_decode_sql_date(ib_date: PISC_DATE; tm_date: PCTimeStructure);
procedure isc_decode_sql_time(ib_time: PISC_TIME; tm_date: PCTimeStructure);
procedure isc_decode_timestamp(ib_timestamp: PISC_TIMESTAMP; tm_date: PCTimeStructure);
function isc_detach_database(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE): ISC_STATUS;
function isc_drop_database(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE): ISC_STATUS;
function isc_dsql_alloc_statement2(const status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
stmt_handle : PISC_STMT_HANDLE): ISC_STATUS;
function isc_dsql_describe(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
dialect : UShort; xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_describe_bind(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
dialect : UShort; xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_execute(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
stmt_handle : PISC_STMT_HANDLE; dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_execute2(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
stmt_handle : PISC_STMT_HANDLE; dialect : UShort;
in_xsqlda, out_xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_execute_immediate(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE; length : UShort;
statement : PChar; dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_exec_immed2(status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE;
length : UShort;
statement : PChar;
dialect : UShort;
in_xsqlda,
out_xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_fetch(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
dialect : UShort; xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_free_statement(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
options : UShort): ISC_STATUS;
function isc_dsql_prepare(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
stmt_handle : PISC_STMT_HANDLE; length : UShort;
statement : PChar; dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_set_cursor_name(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
cursor_name : PChar; _type : UShort): ISC_STATUS;
function isc_dsql_sql_info(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
item_length : Short; items : PChar; buffer_length : Short;
buffer : PChar): ISC_STATUS;
procedure isc_encode_date(tm_date : PCTimeStructure; ib_date : PISC_QUAD);
procedure isc_encode_sql_date(tm_date: PCTimeStructure; ib_date : PISC_DATE);
procedure isc_encode_sql_time(tm_date : PCTimeStructure; ib_time : PISC_TIME);
procedure isc_encode_timestamp(tm_date : PCTimeStructure; ib_timestamp : PISC_TIMESTAMP);
function isc_event_block(event_buffer : PPChar; result_buffer : PPChar;
id_count : UShort; event_list : array of PChar): ISC_LONG;
procedure isc_event_counts(status_vector : PISC_STATUS; buffer_length : Short;
event_buffer : PChar; result_buffer : PChar);
function isc_free(isc_arg1 : PChar): ISC_LONG;
function isc_get_segment(status_vector : PISC_STATUS; blob_handle : PISC_BLOB_HANDLE;
actual_seg_length : PUShort; seg_buffer_length : UShort;
seg_buffer : PChar): ISC_STATUS;
function isc_put_segment(status_vector : PISC_STATUS; blob_handle : PISC_BLOB_HANDLE;
seg_buffer_len : UShort; seg_buffer : PChar): ISC_STATUS;
function isc_interprete(buffer : PChar; status_vector : PPISC_STATUS): ISC_STATUS;
function isc_open_blob2(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE; blob_handle : PISC_BLOB_HANDLE;
blob_id : PISC_QUAD; bpb_length : Short; bpb_buffer : PChar): ISC_STATUS;
function isc_prepare_transaction2(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
msg_length : Short; msg : PChar): ISC_STATUS;
function isc_rollback_retaining(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE): ISC_STATUS;
function isc_rollback_transaction(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE): ISC_STATUS;
function isc_start_multiple(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
db_handle_count : Short; teb_vector_address : PISC_TEB): ISC_STATUS;
function isc_sqlcode(status_vector : PISC_STATUS): ISC_LONG;
procedure isc_sql_interprete(sqlcode : Short; buffer : PChar;
buffer_length : Short);
function isc_vax_integer(buffer : PChar; length : Short): ISC_LONG;
function isc_add_user(status_vector : PISC_STATUS; user_sec_data : PUserSecData): ISC_STATUS;
function isc_delete_user(status_vector : PISC_STATUS; user_sec_data : PUserSecData): ISC_STATUS;
function isc_modify_user(status_vector : PISC_STATUS; user_sec_data : PUserSecData): ISC_STATUS;
function isc_prepare_transaction(status_vector : PISC_STATUS;
tran_handle : PISC_TR_HANDLE): ISC_STATUS;
function BLOB_put(isc_arg1 : char; isc_arg2 : PBSTREAM): Int;
function BLOB_get(isc_arg1 : PBSTREAM): Int;
// Service manager functions
function isc_service_attach (status_vector : PISC_STATUS;
isc_arg2 : UShort;
isc_arg3 : PChar;
service_handle : PISC_SVC_HANDLE;
isc_arg5 : UShort;
isc_arg6 : PChar): ISC_STATUS;
function isc_service_detach(status_vector : PISC_STATUS;
service_handle : PISC_SVC_HANDLE): ISC_STATUS;
function isc_service_query (status_vector : PISC_STATUS;
service_handle : PISC_SVC_HANDLE;
recv_handle : PISC_SVC_HANDLE;
isc_arg4 : UShort;
isc_arg5 : PChar;
isc_arg6 : UShort;
isc_arg7 : PChar;
isc_arg8 : UShort;
isc_arg9 : PChar): ISC_STATUS;
function isc_service_start (status_vector : PISC_STATUS;
service_handle : PISC_SVC_HANDLE;
recv_handle : PISC_SVC_HANDLE;
isc_arg4 : UShort;
isc_arg5 : PChar): ISC_STATUS;
// Client information functions
procedure isc_get_client_version(buffer : PChar);
function isc_get_client_major_version: Integer;
function isc_get_client_minor_version: Integer;
function isc_portable_integer(buffer: PChar;length: Short): ISC_INT64;
//IB2007
function isc_dsql_batch_execute_immed(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE; Dialect : UShort; no_of_sql : ulong;
statement : PPChar; rows_affected : PULong) : ISC_STATUS;
function isc_dsql_batch_execute(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
stmt_handle : PISC_STMT_HANDLE; Dialect : UShort;
insqlda : PXSQLDA; no_of_rows : UShort;
batch_vars : PPXSQLVAR; rows_affected : PULong) : ISC_STATUS;
//FB2.5
function fb_cancel_operation(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
option : UShort
) : ISC_STATUS;
public
constructor Create(const aLibName:string);
destructor Destroy;override;
procedure LoadIBLibrary;
procedure FreeIBLibrary;
end;
{ Library Initialization }
procedure LoadIBInstallLibrary;
procedure FreeIBInstallLibrary;
procedure CheckIBInstallLoaded;
function GetClientLibrary(const aLibName:string):IIbClientLibrary;
const
IBDateDelta = 15018;
const
describe_bind_info:array[0..11] of char =(
Char(isc_info_sql_bind),
Char(isc_info_sql_describe_vars),
Char(isc_info_sql_sqlda_seq),
Char(isc_info_sql_type),
Char(isc_info_sql_sub_type),
Char(isc_info_sql_scale),
Char(isc_info_sql_length),
Char(isc_info_sql_field),
Char(isc_info_sql_relation),
Char(isc_info_sql_owner),
Char(isc_info_sql_alias),
Char(isc_info_sql_describe_end)
);
describe_select_info:array[0..12] of char =(
Char(isc_info_sql_select),
Char(isc_info_sql_describe_vars),
Char(isc_info_sql_sqlda_seq),
Char(isc_info_sql_type),
Char(isc_info_sql_sub_type),
Char(isc_info_sql_scale),
Char(isc_info_sql_length),
Char(isc_info_sql_field),
Char(isc_info_sql_relation),
Char(isc_info_sql_owner),
Char(isc_info_sql_alias),
Char(frb_info_sql_relation_alias),
Char(isc_info_sql_describe_end)
);
var
isc_install_clear_options: Tisc_install_clear_options;
isc_install_execute: Tisc_install_execute;
isc_install_get_info: Tisc_install_get_info;
isc_install_get_message: Tisc_install_get_message;
isc_install_load_external_text: Tisc_install_load_external_text;
isc_install_precheck: Tisc_install_precheck;
isc_install_set_option: Tisc_install_set_option;
isc_uninstall_execute: Tisc_uninstall_execute;
isc_uninstall_precheck: Tisc_uninstall_precheck;
isc_install_unset_option: Tisc_install_unset_option;
implementation
uses FIBConsts;
{$IFDEF LINUX}
const
HINSTANCE_ERROR=$20;
{$ENDIF}
var
{$IFDEF WINDOWS}
IBInstallLibrary: THandle;
{$ENDIF}
{$IFDEF LINUX}
IBInstallLibrary : Pointer;
{$ENDIF}
vClientLibs:TInterfaceList;
var
vLibAccess: TRTLCriticalSection;
function GetClientLibrary(const aLibName:string):IIbClientLibrary;
var
I: Integer;
begin
EnterCriticalSection(vLibAccess);
try
for I := 0 to vClientLibs.Count - 1 do
if IIbClientLibrary(vClientLibs[i]).LibraryName=aLibName then
begin
Result:=IIbClientLibrary(vClientLibs[i]) ; Exit;
end;
Result:=TIBClientLibrary.Create(aLibName);
vClientLibs.Add(Result)
finally
LeaveCriticalSection(vLibAccess);
end;
end;
{$IFDEF WINDOWS}
procedure InitFPU;
var
Default8087CW: Word;
begin
asm
FSTCW Default8087CW
OR Default8087CW, 0300h
FLDCW Default8087CW
end;
end;
{$ENDIF}
{$DEFINE FP_STDCALL}
function isc_install_clear_options_stub(hOption: POPTIONS_HANDLE):MSG_NO;
{$I pFIBMacroComp.inc}
begin
raise
EAPICallException.Create(Format(SCantFindApiProc,['isc_install_clear_options',IB_INSTALL_DLL]));
end;
function isc_install_execute_stub(hOption: OPTIONS_HANDLE;
src_dir: TEXT;
dest_dir: TEXT;
status_func: FP_STATUS;
status_data: pointer;
error_func: FP_ERROR;
error_data: pointer;
uninstal_file_name: TEXT):MSG_NO;
{$I pFIBMacroComp.inc}
begin
raise
EAPICallException.Create(Format(SCantFindApiProc,['isc_install_execute_stub',IB_INSTALL_DLL]));
end;
function isc_install_get_info_stub(info_type :integer;
option :OPT;
info_buffer : Pointer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -