Monday, January 26, 2009

Error retrieving next record from the database.

Let me tell you a story of one of the change request that we did in our Siebel application and became a learning lesson for us.

While navigating to "All Quotes View", system was giving the error : "Error retrieving next record from the database. (SBL-DBC-00104)". But when I tried navigating to "My Quotes View", no issues. Since the Applet, Business Component, Business Object, PDQs etc etc, being used in both the views were the same, the only thing which was different is "Data". That means there is something wrong with the data which is creating this problem.

So, as generally we do, I checked the Siebel Object Manager log and tried to find out what exactly was happening in the background. I queried for error code "(SBL-DBC-00104)" in the log file and found an Oracle code with error saying : "ORA-24345 Truncation or Null Fetch Error".

I checked for the possible reason due to which Oracle returns this error. Oracle says : "Please ensure that the buffer size is long enough to store the returned data.".

That means I was going into the right direction and data which is being displayed in "All Quotes View" was creating this problem. If I could relate this particular issue with Siebel, we have one Field User Property : "Text Length Override", which restricts the field to display some specific number of characters, no matter what is there in the database.

So, when I checked for all the fields in "Quote" business component, there was one field "Comments" which has been restricted to show only 500 charcters while its length was 1000. Now the only thing I need to confirm was if there is any record in S_DOC_QUOTE table having comments > 500 characters.

select row_id, comments
from S_DOC_QUOTE
where len(comments) > 500

And I was lucky to find one. So I just truncated it to 500 characters and again tried navigating to "All Quotes View" and eveything worked fine.

Learning Lesson: Before applying "Text Length Override" field user property, please make sure you should not have any data in the database which is voilating this constraint.

.

10 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. can you tell me that how can we make grand child record read only.depending on the parent value.

    ReplyDelete
  3. Hai text length overide can't work while importing through eim process.so how we can go through that. tell me

    ReplyDelete
  4. which user properties will use too

    ReplyDelete
  5. @Vishnu : To answer your question, this comes under Best Practices of EIM that before porting data into EIM tables, you should consider "Text Length Override" at the Business Component's field, if at all you have used for any of the field.

    Please refer to the following link to see how we can make a field readonly depending upon some other field.
    http://siebelmantra.blogspot.com/search/label/User%20Properties

    ReplyDelete
  6. @Anonymous : please refer the below link for you query and search for "BC Read Only Field v/s Parent Read Only Field"

    http://siebelmantra.blogspot.com/search/label/User%20Properties

    ReplyDelete
  7. The data enters user could not override the siebel able to overide thorugh user interface using application. Generally these values are voilates only populating EIM so
    in future loads we must care in limiting these field values.. i feel this is better comment

    ReplyDelete
  8. hai Gaurav really iam facing trouble with scenerio tell me please
    i know how we can create constrain and hierarchical picklist but this is scenerio like this iam not able solve the solution
    if check box is true for one then contraining happens for the applet otherwise they are independent if possible give oral solution otherwise give complete. waiting for reply

    ReplyDelete
  9. Hi, i have the same issue on 7.7.2.8, which is in the Service Request view. But I cannot find what you said Field User Property : "Text Length Override". Do this exist in Tools?
    Please help me !

    ReplyDelete
  10. Hi Gaurav, your article helped us with analysis from a different perspective. We got the same error as you listed when launching Service Request view. This started occuring when migrated to 8.1.1.11 from 8.1.1.9

    Our scenario is that in current config S_SRV_REQ->DESC_TEXT had 2000 in varchar2, whereas BC level we had it defined as DTYPE_CLOB, 4000. In this case, Siebel didnot allow > 2000 though. This worked fine until we were in 8.1.1.9 but after migrating to 8.1.1.11 we started facing the issue. Rolling back the BC field to DTYPE_TEXT, 2000 got the issue resolved.

    Thanks & Regards.

    ReplyDelete