Trapping SQL Errors in CodeCharge
From an old post
URL: http://forums.codecharge.com/posts.php?post_id=21736
Posted: 06/13/2003, 12:18 PM
Harold. I did already find a way to catch the Oracle Errors, however it is not a global solution. In other words, you would have to do a page by page implementation of it. If you are only interested in catching the Oracle errors for certain pages than this may help you out. In order to catch an error from the Oracle, you may "hi-jack" the error codes from the current dataset Error . The db_oci.php class file will create an associated array called Error. DO NOT CONFUSE THIS WITH CODECHARGE STUDIO'S ERRORS ARRAY! THEY ARE TWO DIFFERENT ARRAYS. Error should contain the following elements: 1. code: The Oracle Error Code Example: 2292 2. message: The full message of the Oracle Error Example: ORA-02292: integrity constraint (WEBUSER.SCONTSITEID_FK) violated - child record found If using PHP >= 4.3 3. offset: Indicates the location of the error. 4. sqltext: The statement which caused the error. Example: DELETE FROM SITE_ACCT WHERE SITE_ID = 30008 To explain how to trap the errors, let's use an example of trying to delete a record where there is a Primary Key/Foreign Key relationship. If I were to try to delete a record from the Primary Key table, and there was a child record in the other, than an ORA-02292: integrity constraint error would occur. So if I wanted to allow the user to see ANY errors, not just the ORA-02292, then I would do the following. 1. I would setup a Custom Code Event in the "After Execute Delete" Event. 2. I would then setup a simple test such as this: if ($formname->ds->Error["code"] != 0) { $formname->Errors->addError($formname->ds->Error['message']); } You can do other tests based on the Error['code'] too. That way you can throw the error to the screen for certain error codes.