UREGNT: VCL Unidac and Oracle 12c with max_string_size=extended error?

Discussion of open issues, suggestions and bugs regarding UniDAC (Universal Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Sergo
Posts: 6
Joined: Wed 28 Dec 2016 10:48

UREGNT: VCL Unidac and Oracle 12c with max_string_size=extended error?

Post by Sergo » Tue 03 Oct 2017 10:04

I am using Unidac 7.1.4 for delphi 2007. I have oracle 12c database with large varchar fields (> 4000). Max_string_size= extended. When i try to insert data through uniquery i get error "ORA-01483: invalid length for DATE or NUMBER bind variable". For less that 4000 is ok, also i can insert 5000 chars direct on database, so on database is also ok.
Is there some setting i should use?

MaximG
Devart Team
Posts: 1822
Joined: Mon 06 Jul 2015 11:34

Re: UREGNT: VCL Unidac and Oracle 12c with max_string_size=extended error?

Post by MaximG » Wed 04 Oct 2017 12:26

We tested UniDAC 7.1.4 behavior when working with VARCHAR2 fields of longer size using Oracle 12c database. Unfortunately, we could not reproduce the issue according to your description. In our tests, we created the following table :

Code: Select all

CREATE TABLE ExtendedTable (ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, TEXTFIELD VARCHAR2(32000 CHAR))
Using the following snippet, we successfully inserted into the field TEXTFIELD the value, the size of which exceeds 4000 characters :

Code: Select all

...
UniQuery.SQL.Text := 'Insert Into ExtendedTable Values (:ID, :TEXTFIELD)';
UniQuery.ParamByName('ID').AsInteger := 10;
UniQuery.ParamByName('TEXTFIELD').AsString := Memo.Text;
UniQuery.Execute;
...
where Memo is the TMemo component, which contains test data of the required size (in our sample this value equals 8000 characters)

Please try testing UniDAC 7.1.4 behavior in the same way and let us know the results.

Sergo
Posts: 6
Joined: Wed 28 Dec 2016 10:48

Re: UREGNT: VCL Unidac and Oracle 12c with max_string_size=extended error?

Post by Sergo » Thu 05 Oct 2017 07:14

Hi, thank you for response. Is not working, not i get:
ORA-01461: can bind a LONG value only for insert into a LONG column

This is the text (about 6300 length), i try to insert, if i do it on database with insert is ok:

insert into ExtendedTable (TEXTFIELD) values ('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas maximus tellus at cursus blandit. Vestibulum non massa orci. Nulla faucibus rutrum augue, sed vestibulum nulla sodales ac. Suspendisse dignissim augue a nisi venenatis, lobortis consectetur justo fringilla. Maecenas eu pharetra ex. Nulla facilisi. Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed euismod velit augue, et auctor enim faucibus a. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Quisque vel faucibus quam. Ut quis tincidunt orci. Aenean pulvinar, massa quis vestibulum consectetur, tortor est consequat mauris, at dictum est ante quis neque. Cras nec ante ac felis porta tempus sed convallis tortor. Nulla facilisi. Etiam commodo erat leo, at sodales diam cursus eget. Nulla laoreet, tellus nec finibus eleifend, purus dui suscipit metus, congue elementum odio purus vel diam.

Praesent viverra aliquam hendrerit. Vivamus nec lorem mi. Phasellus dictum lorem quis nibh condimentum, at viverra dui lacinia. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque dapibus venenatis congue. Morbi volutpat fringilla ante vel viverra. Phasellus sit amet enim vel mauris sollicitudin rutrum quis vitae lacus. Nam gravida eu nibh eget bibendum. Ut ac varius ligula. Sed at vulputate nulla.

Nam convallis, enim in cursus aliquam, libero metus efficitur nunc, varius dictum ipsum nulla nec elit. Nam in ipsum sed mi pretium luctus vitae in enim. Suspendisse mattis nisi ac fringilla blandit. Integer a sollicitudin sapien. Quisque maximus massa orci, eget dictum nibh semper eget. Curabitur a dui justo. Suspendisse potenti. Curabitur ullamcorper mi eget consequat fringilla. Nullam ultricies ipsum turpis, ut vulputate enim ornare ac. Maecenas id nibh nec sapien varius sagittis in non turpis.

Nullam ultricies elementum lacinia. Curabitur varius non mi vitae maximus. Etiam sed massa facilisis, efficitur erat vel, auctor diam. Proin eu posuere mi, ac ornare tellus. Nulla eu luctus odio, nec facilisis quam. Proin a neque enim. In hac habitasse platea dictumst. Curabitur fringilla, tortor eget volutpat ornare, elit dolor venenatis justo, ac mattis nunc sapien non orci. Cras mi massa, sagittis ac elementum vel, commodo sed turpis. Proin massa ante, elementum eu dolor quis, maximus dignissim lectus. Cras vitae dolor non tellus posuere sodales quis sit amet dui. Fusce id sodales enim. Cras eu dolor at purus tristique lobortis. Aliquam urna elit, venenatis id eros sed, cursus faucibus lorem.

Etiam porttitor tincidunt elit, a auctor neque vestibulum vel. Sed nec purus purus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus sem ligula, pharetra et congue quis, dapibus ut magna. Aliquam condimentum urna erat, imperdiet pretium sapien vestibulum ut. Quisque a euismod dolor. Nulla venenatis sem sed rutrum facilisis. Quisque sed eros sit amet purus aliquet iaculis. Maecenas sed rhoncus diam. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut euismod dolor et tempus posuere. Sed velit arcu, ornare eu commodo quis, eleifend quis lorem.

Sed cursus porttitor erat, a tempus orci varius eget. Pellentesque magna elit, dapibus et ex in, iaculis convallis magna. Praesent luctus lacinia mi, vitae ullamcorper eros interdum vel. Praesent congue ut ante vel tincidunt. Morbi cursus nibh quis enim iaculis semper. Nam vel justo sed libero posuere egestas. Pellentesque sapien leo, commodo ac quam porttitor, accumsan posuere lorem. Sed nibh risus, tristique sed mattis non, tristique ut ante. Mauris commodo dolor dolor. Sed vehicula sem sed interdum malesuada. Vivamus semper est in ante finibus consectetur. Vivamus eget mi quis nibh aliquet tristique et in dui. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur gravida dolor ut lacus semper lacinia. Donec sem diam, facilisis sed feugiat non, faucibus ut leo. Nullam eleifend nibh orci, eu molestie ipsum aliquet non.

Nunc eget ipsum eu leo efficitur ultrices. Fusce feugiat nisl quis volutpat convallis. Ut pellentesque elit sed justo pharetra, nec dignissim quam posuere. Sed quis arcu nunc. Pellentesque consectetur tincidunt arcu quis aliquet. Vivamus quis luctus lacus. Vivamus at feugiat diam, et tempus arcu. Nullam et purus odio. Ut at tellus lobortis, bibendum odio non, pharetra purus. Donec in blandit sem. Nulla sodales nunc suscipit laoreet hendrerit. Etiam quis varius tellus. Integer euismod porta ex venenatis posuere.

Donec scelerisque in lectus a vestibulum. Donec et odio purus. Aenean fringilla nunc ipsum, in posuere lorem sagittis eu. Vivamus posuere id urna sit amet dictum. Mauris sed commodo mauris. Nam semper ex ipsum, et viverra metus posuere eget. Curabitur vitae nulla et mauris euismod iaculis et nec ligula. Aliquam malesuada consequat quam at bibendum. Phasellus pharetra, augue eget rutrum tincidunt, risus tellus suscipit massa, in vulputate diam ipsum ut massa. Mauris elit odio, varius a tincidunt non, porta ut ex. Praesent porttitor ligula rutrum, congue risus ac, cursus eros.

Praesent sed mi rhoncus, imperdiet lacus et, vestibulum arcu. Integer facilisis ligula sit amet eleifend luctus. Aenean tincidunt porttitor ante sed fermentum. Aliquam eu dictum massa. Aliquam feugiat diam vitae nulla pellentesque molestie. In ac elit a sapien dictum eleifend quis in elit. Duis non iaculis nisi. Curabitur vel leo lacus. Praesent at nisi porta metus convallis sollicitudin. Donec sit amet dui ac purus sollicitudin varius nec at lectus. Aliquam eget metus varius, dignissim urna eget, viverra odio. Cras ut dignissim neque. Mauris condimentum pellentesque dictum.

Nullam nec turpis non tellus hendrerit lacinia. Sed sit amet tincidunt dui. Integer risus purus, faucibus et leo non, placerat molestie magna. Pellentesque metus nulla, egestas egestas vestibulum ultricies, ullamcorper eget lorem. Curabitur non turpis in erat pharetra maximus. Suspendisse vitae efficitur velit, ut ultrices libero. Sed nulla justo, vehicula ac velit id, aliquet commodo nulla. Maecenas facilisis magna risus, nec iaculis nulla ultrices in. Duis a lacus euismod, sagittis quam at, pulvinar arcu. Donec non diam tempor, luctus nulla et, efficitur augue
')

This is my uniconnection component:
var
UniConnection1: TUniConnection;

UniConnection1 := TUniConnection.Create(Self);
with UniConnection1 do
begin
Name := 'UniConnection1';
ProviderName := 'oracle';
SpecificOptions.Clear;
SpecificOptions.Add('oracle.Direct=True');
SpecificOptions.Add('oracle.UnicodeEnvironment=True');
SpecificOptions.Add('oracle.UseUnicode=True');
SpecificOptions.Add('oracle.Charset=AL32UTF8');
Username := 'test1';
Server := '192.168.117.6:1521:orcl12';
Connected := True;
LoginPrompt := False;
end;

Sergo
Posts: 6
Joined: Wed 28 Dec 2016 10:48

Re: UREGNT: VCL Unidac and Oracle 12c with max_string_size=extended error?

Post by Sergo » Thu 05 Oct 2017 07:24

Is working with TUniSql:

UniSQL1.SQL.Text := 'insert into ExtendedTable (TEXTFIELD) values (' + QuotedStr(Memo1.Text) + ')';
UniSQL1.Execute;

I think it must be something with TUniQuery.

MaximG
Devart Team
Posts: 1822
Joined: Mon 06 Jul 2015 11:34

Re: UREGNT: VCL Unidac and Oracle 12c with max_string_size=extended error?

Post by MaximG » Wed 11 Oct 2017 05:40

We checked the behavior of UniDAC according to your description and found no problems. We successfully inserted the data shown in your example. Perhaps the problem is associated with the specific settings of your environment rather than with using UniDAC. To further investigate the problem, please provide NLS parameters of the server and your environment, as well as
the results of the query: select * from v$parameter

Sergo
Posts: 6
Joined: Wed 28 Dec 2016 10:48

Re: UREGNT: VCL Unidac and Oracle 12c with max_string_size=extended error?

Post by Sergo » Thu 12 Oct 2017 13:13

I sended direct on your email. Thank you for support.

MaximG
Devart Team
Posts: 1822
Joined: Mon 06 Jul 2015 11:34

Re: UREGNT: VCL Unidac and Oracle 12c with max_string_size=extended error?

Post by MaximG » Fri 16 Mar 2018 09:46

Thank you for the information. We have reproduced the problem and fixed the bug. The fix will be included in the next UniDAC build. Currently, we can send you a night build of UniDAC with the fix. For this, please specify your license number and the exact version of Delphi you are using via the e-support form ( https://www.devart.com the "Support"\"Request Support" menu)

Post Reply