DMLRefresh: ORA-01461 and ORA-01483
DMLRefresh: ORA-01461 and ORA-01483
Hello,
in the current version (9.0.2) and in the previous versions we got the oracle error messages
ORA-01461 and ORA-01483 after inserting and updating (with DMLRefresh option) in OCI-Mode. In direct mode everything works fine. Without DMLRefresh option it's fine, too.
It seems to be caused by an invalid parameter (-length) handling.
We have seen in the DB-Monitor that some paremeters are moved / shifted.
The error is thrown very often but not always. It seems to depend on the content and on the table structure.
Disabling or enabling unicode makes no difference. We use charset AL32UTF8.
Could you fix it, please?
Kind regards,
Bernd
in the current version (9.0.2) and in the previous versions we got the oracle error messages
ORA-01461 and ORA-01483 after inserting and updating (with DMLRefresh option) in OCI-Mode. In direct mode everything works fine. Without DMLRefresh option it's fine, too.
It seems to be caused by an invalid parameter (-length) handling.
We have seen in the DB-Monitor that some paremeters are moved / shifted.
The error is thrown very often but not always. It seems to depend on the content and on the table structure.
Disabling or enabling unicode makes no difference. We use charset AL32UTF8.
Could you fix it, please?
Kind regards,
Bernd
Re: DMLRefresh: ORA-01461 and ORA-01483
Hello,
If this problem occurs just on definite data and table structure, please send the script for creating the table and a sample demonstrating the problem to alexp*devart*com, in order for us to be able to reproduce it and fix.
If this problem occurs just on definite data and table structure, please send the script for creating the table and a sample demonstrating the problem to alexp*devart*com, in order for us to be able to reproduce it and fix.
Re: DMLRefresh: ORA-01461 and ORA-01483
Hello Alex,
I've send a small sample application to you.
The problem occurs only if OraClasses.UseMaxDataSize is false
(see: http://www.devart.com/forums/viewtopic. ... axdatasize).
Kind regards,
Bernd
I've send a small sample application to you.
The problem occurs only if OraClasses.UseMaxDataSize is false
(see: http://www.devart.com/forums/viewtopic. ... axdatasize).
Kind regards,
Bernd
Re: DMLRefresh: ORA-01461 and ORA-01483
Hello,
Unfortunately, I haven't received your letter, please send it once more
Unfortunately, I haven't received your letter, please send it once more
Re: DMLRefresh: ORA-01461 and ORA-01483
Hi Alex,
I sent it again.
Kind regards,
Bernd
I sent it again.
Kind regards,
Bernd
Re: DMLRefresh: ORA-01461 and ORA-01483
Hello,
Unfortunately,I haven't still received your letter. Please upload your sample to any file sharing service and provide the link to download
Unfortunately,I haven't still received your letter. Please upload your sample to any file sharing service and provide the link to download
Re: DMLRefresh: ORA-01461 and ORA-01483
Hi alex,
I sent an e-mail to you.
Kind regards,
Bernd
I sent an e-mail to you.
Kind regards,
Bernd
Re: DMLRefresh: ORA-01461 and ORA-01483
Hello,
I haven't still received your letter. If your sample is larger than 2 Mb, you can send it using the contact form
I haven't still received your letter. If your sample is larger than 2 Mb, you can send it using the contact form
Re: DMLRefresh: ORA-01461 and ORA-01483
Hi Alex,
here you can download it:
The password is: ******
I hope it works now
Kind regards,
Bernd
here you can download it:
The password is: ******
I hope it works now
Kind regards,
Bernd
Re: DMLRefresh: ORA-01461 and ORA-01483
Hello,
I have downloaded your project and reproduced the problem. As soon as we have any results, we will inform you.
I have downloaded your project and reproduced the problem. As soon as we have any results, we will inform you.
Re: DMLRefresh: ORA-01461 and ORA-01483
Hi Alex,
Best Regards,
Andre
Any news on this issue?AlexP wrote:Hello,
I have downloaded your project and reproduced the problem. As soon as we have any results, we will inform you.
Best Regards,
Andre
Re: DMLRefresh: ORA-01461 and ORA-01483
Hello,
We are still working on this problem.
We are still working on this problem.
Re: DMLRefresh: ORA-01461 and ORA-01483
Hello,
The UseMaxDataSize variable should be set to False only in case of using parameters (size of which is greater than 4K) in PL/SQL blocks and stored procedures/functions. In standard queries, the string parameter size can't be greater than 4K - and when disabling this variable, this error occurs. In your sample, you should set the variable to True, since you are using a regular SQL.
P.S. We recommend to change this variable just before working with large parameters in PL/SQL, and then return it to the standard value.
The UseMaxDataSize variable should be set to False only in case of using parameters (size of which is greater than 4K) in PL/SQL blocks and stored procedures/functions. In standard queries, the string parameter size can't be greater than 4K - and when disabling this variable, this error occurs. In your sample, you should set the variable to True, since you are using a regular SQL.
P.S. We recommend to change this variable just before working with large parameters in PL/SQL, and then return it to the standard value.
Re: DMLRefresh: ORA-01461 and ORA-01483
Hi Alex,
Is it possible to remove this global variable and make it a property / option of the DataSet or StoredProc? Or is it possible to autodetect usage of a plsql block and do not have to set the option at all?
Usage of a global variable does not seem to be appropriate in this case. It will lead to problems e.g. when using multithreaded applications.
Regardless of the setting, there should not be any parameter corruption or similar issues when using wrong values.
Best regards,
Andre
Thanks for the clarification of the parameter limits.AlexP wrote:The UseMaxDataSize variable should be set to False only in case of using parameters (size of which is greater than 4K) in PL/SQL blocks and stored procedures/functions. In standard queries, the string parameter size can't be greater than 4K - and when disabling this variable, this error occurs. In your sample, you should set the variable to True, since you are using a regular SQL.
P.S. We recommend to change this variable just before working with large parameters in PL/SQL, and then return it to the standard value.
Is it possible to remove this global variable and make it a property / option of the DataSet or StoredProc? Or is it possible to autodetect usage of a plsql block and do not have to set the option at all?
Usage of a global variable does not seem to be appropriate in this case. It will lead to problems e.g. when using multithreaded applications.
Regardless of the setting, there should not be any parameter corruption or similar issues when using wrong values.
Best regards,
Andre
Re: DMLRefresh: ORA-01461 and ORA-01483
Hello,
You can determine the type of the executed command using the IsQuery and IsPLSQL properties. For example, in your query, you can modify the values of the global variable just before calling the ApplyUpdates method, e.g.:
We will consider the possibility to remove this variable and implement a separate option in DataSet
You can determine the type of the executed command using the IsQuery and IsPLSQL properties. For example, in your query, you can modify the values of the global variable just before calling the ApplyUpdates method, e.g.:
Code: Select all
var
...,
tmpUseMaxDataSize: Boolean;
........
tmpUseMaxDataSize := OraClasses.UseMaxDataSize;
try
OraClasses.UseMaxDataSize := not qry.IsPLSQL;
qry.ApplyUpdates;
finally
OraClasses.UseMaxDataSize := tmpUseMaxDataSize;
end;