INT128 FIB [сообщение #4041] |
Fri, 12 January 2024 13:28 |
pastor
Сообщений: 79 Зарегистрирован: June 2022 Географическое положение: Калуга
|
Member |
|
|
Кто-нибудь пытался мапить int128 на varchar в фибах?
с чего начинать?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: INT128 FIB [сообщение #4199 является ответом на сообщение #4198] |
Wed, 24 January 2024 09:39 |
sim_84
Сообщений: 329 Зарегистрирован: June 2022
|
Senior Member |
|
|
Проблем не будет, это прекрасно работает. А если не хочется лишний запрос слать, то можно воспользоваться isc_dpb_set_bind
Цитата:Начальные правила привязки соединения настраиваются через DPB путем предоставления списка опций <type_from> TO <type_to>, разделенных точкой с запятой, в качестве строкового значения isc_dpb_set_bind.
[Обновления: Wed, 24 January 2024 09:43] Известить модератора
|
|
|
|
Re: INT128 FIB [сообщение #4554 является ответом на сообщение #4041] |
Tue, 27 February 2024 15:37 |
pastor
Сообщений: 79 Зарегистрирован: June 2022 Географическое положение: Калуга
|
Member |
|
|
Показать скрытый текст
const
fb50SetBind = 'int128 to bigint;TIMESTAMP WITH TIME ZONE to legacy';
begin
FDatabase:=TpFIBDatabase.Create(nil);
FDatabase.DatabaseName:= Format('%s:%s', [HostName, DatabaseName]);
FDatabase.ConnectParams.UserName:=UserName;
FDatabase.ConnectParams.Password:=Password;
FDatabase.ConnectParams.RoleName:=RoleName;
FDatabase.ConnectParams.CharSet:='WIN1251';
FDatabase.DBParams.Add( Format('set_bind=%s', [fb50SetBind] ));
end
или
Показать скрытый текст
FDBParams:= TStringList.Create;
try
try
if not Assigned(FClientLibrary)
then FClientLibrary:=IB_Intf.GetClientLibrary(ALibraryName);
FDBParams.Add( 'lc_ctype=WIN1251');
FDBParams.Add( Format('password=%s', [APassword]));
FDBParams.Add( Format('user_name=%s', [AUserName] ));
FDBParams.Add( Format('sql_role_name=%s', [ARoleName] ));
FDBParams.Add( Format('set_bind=%s', [fb50SetBind] ));
GenerateDPB(FDBParams, DPB, FDPBLength);
FIBAlloc(FDPB, 0, FDPBLength);
try
Move(DPB[1], FDPB[0], FDPBLength);
SV:=StatusVector;
isc_res:= FClientLibrary.isc_attach_database(
SV, Length(ADatabaseName),
PChar(ADatabaseName), @FHandle,
FDPBLength, FDPB);
if isc_res > 0
then begin
FHandle := nil;
FClientLibrary.isc_interprete( FErrorMsg, @SV);
AErrorMessage:= FErrorMsg;
end
else begin
Result:= True;
FClientLibrary.isc_detach_database(SV, @FHandle);
AErrorMessage:= emOk;
end;
finally
FreeMem( FDPB);
end;
finally
FClientLibrary:=nil;
end;
finally
FreeAndNil( FDBParams);
end;
[Обновления: Tue, 27 February 2024 15:38] Известить модератора
|
|
|
|
|
Re: INT128 FIB [сообщение #4697 является ответом на сообщение #4556] |
Tue, 19 March 2024 11:48 |
Anton
Сообщений: 1 Зарегистрирован: December 2022
|
Junior Member |
|
|
Я сделал так и работает
CREATE OR ALTER TRIGGER OC_DATABASE
ACTIVE ON CONNECT POSITION 0
as
begin
set bind of decimal to legacy;
set bind of numeric to legacy;
set bind of int128 to legacy;
set bind of time zone to legacy;
end
|
|
|