Error Handling on Insert

I am not very good at error handling in APEX. Currently I have a problem where, if a user tries to insert a row in a table and there is already a row with the same primary key, they get an APEX error message with a little OK button. When they press the OK, it loops right back to the same error message. The only way out of this is to use the browser back button drop down and go back two pages. Note: the page that generates the error is a page that automatically submits itself via a simple Javascript. So, how do I check to see if there is going to be a primary key constraint error, display a message and go back to the page where the user choose the data that caused the duplicate key error? The error is generated out of the Automatic Row Processing process when the page is submitted.
Edited by: DaleB on Feb 17, 2009 6:33 AM

Hi,
I think it would depend on the sequence of events that are gone through to create the record. I have done something similar where the user makes one or more selections on page items, then clicks on a Day Link in a calendar - this passes values (through a URL rather than a Submit) to a second page which automatically submits the page to create a new record to show in the calendar.
I assume that your user does something on, say, Page 1, which is submitted and transfers to, say, Page 2, which automatically submits to create record? Or is this passed by a URL as in my case?
If you submit Page 1 first, you could perform validation on Page 1. If you pass the items using a URL, you could have a conditional branch on Page 2 that is in the "Before Header" branch point that branches to a page that shows an error message and provides a button to return to Page 1 - the insert, therefore, never takes place as the page is never loaded.
Andy

Similar Messages

  • Question about error-handling in PL/SQL

    Hi friends,
    I would like to know if there is a way for error handling for insert and update statements in PL/SQL???
    Like when for example an insert fails!
    thanxx
    Schoeib

    You should get a book about such fundamentals!
    This is not an online course...
    begin
      insert into emp values(...);
    exception
      when no_data_found then
      when others then
    end;

  • DML error table intermittently fails to generate error handling in package

    Hi!
    In OWB 11gR2 (11.2.0.1), we're seeing an issue when setting the DML Error table name on a target table. Sometimes, mostly on older and complex mappings, the error handling logic does not get generated when we deploy the mapping, and nothing is populated in the error tables for error conditions, though the errors display as warnings in the OWB UI.
    When I create a new mapping that is very simple - one table loading another - setting the DML Error table name always results in errors being put in the error table. That's great, but that doesn't help us with our more-complex mappings that aren't logging errors.
    We can't determine the cause of the issue. I can't see a difference in the configuration of the mappings that work and don't work. Generation Mode is All Operating Modes. Default Operating Mode is Set based fail over to row based. We've generated the error table using DBMS_ERRLOG.CREATE_ERROR_LOG. The target tables do not have primary keys.
    I've tried synchronizing the target table operator in the mapping as another forum thread suggested. No change.
    Has anyone else seen this issue or know of a workaround?
    Thanks,
    Jayce

    Which logic did you talk about ?
    For the version 10, you will find the error table more on the insert statement such as:
    INSERT INTO "TSALES"
      ("PROD_ID",
      "SALES"."AMOUNT_SOLD" "AMOUNT_SOLD"
    FROM
      "SALES"  "SALES"
    LOG ERRORS INTO TSALES_ERR (get_audit_detail_id) REJECT LIMIT 50;Come from here:
    http://blogs.oracle.com/warehousebuilder/2007/08/set_based_errors_dml_error_log.html
    Then check the insert SQL generated.
    Cheers
    Nico

  • Error handling in Portal standard forms

    I have a customer who needs to validate input on a Form Based on a Table (standard component). They have tried code, as shown below, as a PLSQL handler on a Save button. This example can obviously be solved with JavaScript validation on the client, but they have similar requirements for validation on DB level.
    If procedure call 1) in the if statement is used, nothing happens. If procedure call 2) is used, it is executed in a new page as a standard error Oracle Portal error message.
    declare
    v_sender VARCHAR2(1000);
    v_sender_id NUMBER;
    begin
    v_sender := p_session.get_value_as_VARCHAR2(
    p_block_name => 'DEFAULT',
    p_attribute_name => 'A_SENDER');
    v_sender_id := p_session.get_value_as_NUMBER(
    p_block_name => 'DEFAULT',
    p_attribute_name => 'A_SENDER_ID');
    insert into hd (number, text) values (hd_seq.nextval,
    'step 3 v_sender = ' || v_sender ||
    ' v_sender_id = ' || v_sender_id);
    if v_sender_id >= 100 then
    1) Custom error handling, does not display:
    show_error('Error message');
    2) Error handling is displayed, but as a standard error:
    raise_application_error(-20000, 'SenderID must be smaller than 100.');
    else
    doInsert;
    end if;
    end;
    The customer has two questions:
    Why does the custom procedure in 1) "show_error" not execute, and if it does, why does it not display? show_error works and the if statement is entered.
    Is it possible to take control of Portals error handling on standard components (forms etc.), to show custom error messages with the style used on the component/page instead of the standard Error: ORA- ....etc. as Portal displays it?
    Customer needs reply asap. Please reply directly. Any help will be much appreciated!
    Kind regards
    Jakob Lund

    Jacob,
    Try following:
    declare
    v_sender VARCHAR2(1000);
    v_sender_id NUMBER;
    begin
    v_sender := p_session.get_value_as_VARCHAR2(
    p_block_name => 'DEFAULT',
    p_attribute_name => 'A_SENDER');
    v_sender_id := p_session.get_value_as_NUMBER(
    p_block_name => 'DEFAULT',
    p_attribute_name => 'A_SENDER_ID');
    insert into hd (number, text) values (hd_seq.nextval,
    'step 3 v_sender = ' || v_sender ||
    ' v_sender_id = ' || v_sender_id);
    if v_sender_id >= 100 then
    p_session.set_value(
    p_block_name => "_block",
    p_attribute_name => '_STATUS',
    p_value => 'Sender ID must be less than 100!');
    -- return to your form with status message set
    -- and all fields filled with recent values
    return;
    end if;
    end;
    -- This point is reached only if validation is OK
    doInsert;
    Regards,
    Henn

  • Error Handling in Forms

    Dear all,
    we are using oracle developer suite 10g r2 with oracle database 10g r2 against windows server 2003.
    Error handling is a very big issue.
    i try to do the following, just correct me, or make the trigger more efficient.
    i face unexpected messages, like a message two time displayed, sometime important message never displayed.
    i just set the :system.message_level =20 in the when-new-form-instance trigger.
    and create on-error trigger like below
    declare
    errcode number:=error_code;dbmserrcode number;dbmserrtext varchar2(200);
    formtxt varchar2(200);
    errtype varchar2(3);
    begin
    --------- user defined database exceptions errors raised by --RAISE_APPLICATION_ERROR
    IF DBMS_ERROR_CODE in (-20738,.......) then
    raise form_trigger_failure;
    end if;
    if error_code=50017 then
    message('duration must be between 0 and 23');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    elsif
    error_code=40202 then
    clear_message;
    message('please provide the required fields.');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    elsif error_code=50022 then
    clear_message;
    message('time must be in the correct format.');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    end if;
    if error_code in (40509,40508) then
    dbmserrcode:=dbms_error_code; dbmserrtext:=dbms_error_text;
    if dbmserrcode=-1438 then
    clear_message;
    message('your number is too large.try again.');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    elsif dbmserrcode=-1400 then
    clear_message;
    message('your forgot to provide a value.try again.');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    elsif dbmserrcode=-2291 then
    clear_message;
    message('header is not found for this insertion.');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    elsif dbmserrcode=-1 then
    clear_message;
    message('record already exists');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    else
    clear_message;
    message(error_code||' : '||error_text);message(' ',no_acknowledge);
    raise form_trigger_fialure;
    end if;
    else
    clear_message;
    message(error_code||' : '||error_text);message(' ',no_acknowledge);
    raise form_trigger_fialure;
    end if;
    exception
    when others then
    if dbms_error_code=-20738 then
    clear_message;
    message('Error: absent or later record errror from the database trigger.);
    raise form_trigger_failure;
    elsif .....
    esle
    clear_message;
    message(error_code||' : '||error_text);message(' ',no_acknowledge);
    raise form_trigger_fialure;
    end if;
    end;any suggession?
    Regards

    i must come with a plsql code which handle every error and suppress unnecessary messages.Good luck with that. No matter how well thought out or planned, you're not going to be able to take all scenarios into account. The design of an exception handler takes time to address all possible scenarios you want handled and even then, you're not likely to handle every situation in the beginning.
    could we implement the oracle ebusiness error handling procedures here in our application?if yes, then where could we find that procedure?>
    I've dug through that code and it is not a thorough as you think it is. It handles specific situations and then defaults the rest. It is a good model for your own exception handler, however. That is what I used it for. :) I don't recall which library it is in, but I'll look around and if I find it, I'll post it.
    I agree with Andreas's comment...
    Simply remove your ON-ERROR-trigger, then you have a default. That's nothing better or worse than what apex has.I'm not too familiar with Apex; I've worked with it, but it's been a little while. Even with Apex, you're going to have to develop a customized Exception Handler so more intuitive or application specific messages are displayed in response to an exception.
    As to Andreas's comment...
    For your own error-handling... The "simplest" way in my eyes is create your own error-table where you have appropiate columns for the error-code and the error-type (FRM,ORA,Whatever), then in your ON-ERROR-trigger read the appropiate record from that table and show the error. You could also have a flag in your table which decides what to do with a specific error (Show as Message, Show as Alert, Don't show at all) and react accordingly.This is exactly what we implemented in our application. We created a set of tables that contain all of the Oracle Runtime errors and their attributes (Error Type, Severity Level, etc). Then we wrote a standard On-Error trigger that is subclassed to all of our forms that calls a Library "On_Error" package. This package evaluates the exception raised, compares it to the database entry for the error and then displays an appropriate message depending on the Severity Level, Error Type (ORA or FRM) and Message Type (Informational, Error, Caution) and we display the message in either the Status Bar, Note Alert, Caution Alert or Stop Alert or it is supressed. If an error is not found in the table, then it is displayed in a Stop Alert as an "Unhandled Exception." The second table I mentioned contains all of the messages used by our application and is cross referenced with the table that contains the Oracle messages. By simply assigned one of our messages to an Oracle message - our package will display our message instead of the default Oracle Message. Yes, this took sometime to build and test and once implemented, we spent another couple of months perfecting it, but now it is pretty solid and we haven't had to modify it in over a year.
    While this level of complexity may be overkill for your application, it does offer the greatest flexibility in the long-run. Also, if your application must support multiple languages, having all of your messages in a table make internationalization extremely easy. :)
    The point of all this, is that no matter which system you use (Forms, Apex, or Java) you will still need to invest some time into designing an Excpeiton Handling method for your application and then implement it accross the application. This is not something you can develop in a short period of time and it will not be perfect in the beginning. However, in the long-run, you will be happy you spent the time up-front to build a flexible and robust Exception Handling system.
    Craig...

  • ESB error handling and notification features

    Hello everyone,
    I am newbie to oracle SOA ESB. I am an oracle apps guy.
    This being my first post to this forum, I have a lot of questions. :-)
    For a small intergration requirement, we are looking for a good integration tool
    Some requirements are:
    1) Flat files will be generated by concurrent programs on oracle apps which need to be transferred to legacy systems.
    2) Pick the data from apps tables and insert them into another database. Not much translation required.
    After some research, found ESB to be a good fit.
    Before actually start using it, we wanted to do a couple of POCs.
    So far we are using shell scripts for ftp process. We opted for an integration tool to have DB to DB transmission. Apart from this we need better error handling and error notification mechanism.
    Some error conditions:
    1) Unavailability of ftp server or Database server.
    2) Permission issues. Say some files may not have read, write, deletion permissions. They need to be caught and notified.
    3) Mandatory field missing while inserting data which is read from a flat file into a DB table etc..
    My initial thoughts on error handling are:
    Connection error: To retry for connection errors. If the retry fails send notification via email and also write the failed connection details into an error log file(apart from the server log file).
    Data mismatch: NOtification to be sent with the error details.
    I would like to know What happens to the file if the destination ftp server is unavailable while ESB is trying to FTP the file. Will ESB retain the file with itself and FTP the file once the ftp server is up?
    In BPEL I could see try catch blocks which can be used to handle the errors and thus send notifications.
    ESB documents introduced terms like error hospital related to error handling but I was not able to figure out a way of implementing them. As I am not well versed with XML and WSDL I am probably unable to use the fault tab which is in the routing service. I feel Oracle could have given some samples that explain about ESB error handling.
    Also to my dismay, adapter docs say that there is a limitation of 7MB size for ftping. Although our file sizes often fall below this size, I would want to know if there is any workaround to over come this size constraint.
    I think I put a lot of stuff in a single post and may be in the most haphazard way. Please bear with me.
    Please suggest me of some documents if any related to my questions.
    Would be really great if you can give me a straight forward solution to all the above problems
    Hope this forum would be a great help to me.
    Cheers,
    Robert.

    I have worked on a few SOA Apps implementations. Some successful and some not so. It really comes down to the type of integrations.
    But I would say the majority of your integration will be batch as this is what eBus is all about. If this is the case then I would recommend Oracle Data Integrator. If you go Oracle Data Integrator Suite it includes Service Bus and BPEL. ODI has an eBusiness Suite adapter as well.
    The good thing about ODI is that you can use it for data conversion, that conversion can then be reused once live, so the conversion is not throw away.
    In SOA 10.1.3.4 the limit of 7MB has been resolved but you must be using the file / FTP adapter for input and out, from the sounds of it you want to call concurrent programs so this probably wouldn't work.
    cheers
    James

  • Error handling in Oracle

    Hello,
    Could anyone help to convert the following T-SQL statement to PL-SQL? Thanks inadvance!
    BEGIN TRAN
    UPDATE Table1 SET .......
    SELECT @ReturnCode = @@error
    IF @ReturnCode <> 0
         BEGIN          
              SELECT @msg = 'Error - update date feed'
    GOTO Err_Handler
         END     
    COMMIT TRAN
    RETURN 0
    Err_Handler:          
              ROLLBACK TRAN
              INSERT INTO LogTable(ProcessName, ProcessStatus)
                   VALUES('Daily date feed', @msg)
              EXEC msdb.dbo.sp_send_dbmail      
                   @recipients = '[email protected]',
                   @Subject = 'Daily datafeed process failed',
                   @body = @msg          
              RETURN 1

    Sänjay wrote:
    Hi,
    Anonymous block example
    SQL> declare
    2   x number ;
    3  begin
    4    select count(*) into x from dual ;
    5    update emp set empno=empno ;
    6    dbms_output.put_line('Rows updated '|| sql%rowcount);
    7  exception -- Exception Or Error Handling
    8   when others then
    9    rollback ;
    10    dbms_output.put_line(SQLERRM);
    11  end ;
    12  /
    Rows updated 14
    PL/SQL procedure successfully completed.SSAwful example! I would fire programmers who would repeatetly produce such code. Rule #1: Avoid "when others expetions" wherever possible!
    I know you're capable of give much better examples.
    Btw: This code would produce the same result in sql*plus without any exception block:
    proof
    SQL> select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    PL/SQL Release 10.2.0.4.0 - Production
    CORE    10.2.0.4.0      Production
    TNS for HPUX: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production
    SQL>
    SQL> drop table test;
    Table dropped.
    SQL> set serveroutput on
    SQL> create table test (col1 number);
    Table created.
    SQL>
    SQL> /* first without exception */
    SQL> declare
      2     x number ;
      3  begin
      4     insert into test values (1);
      5     select length(dummy) into x from dual where 1=1;
      6  end;
      7  /
    PL/SQL procedure successfully completed.
    SQL>
    SQL> select * from test;
          COL1
             1
    SQL>
    SQL> /* now add some error */
    SQL>
    SQL> declare
      2     x number ;
      3  begin
      4     insert into test values  (2);
      5     select length(dummy) into x from dual where 1=2;
      6  end;
      7  /
    declare
    ERROR at line 1:
    ORA-01403: no data found
    ORA-06512: at line 5
    SQL>
    SQL> select * from test;
          COL1
             1
    SQL>
    SQL> As you can see the second insert was rollbacked. But be careful, this works only for ANONYMOUS pl/sql blocks.
    Edited by: Sven W. on Jul 24, 2009 3:17 PM

  • Error handling with Sync RFC

    Hi @ all,
    I have following scenario: a BPM doing some stuff on DB and map this values to a RFC request (sync) to a SAP R/3 system. Within this RFC I define 2 exceptions.
    I did map the RFC exception in interface mapping to a fault message.
    In BPM I put my RFC call into a Block with an Exception "RfcError" and insert a Exceptionbranch - which should send a email.
    Put anyhow it doesn't work - every RFC exception ends as an error in SMBX_MONI...
    Anyone a idea how to solve it??
    Regards Matt

    Hi Bhavesh,
    thanks for your tip, I see an error within my block their. But I don't know what it means to me
    Während des Anwendungs-Mappings com/sap/xi/tf/_MM_ Rfc_Error_to_Mail_ wurde eine com.sap.aii.util Work item 000000120730: Object CL_SWF_XI_MSG_BROKER method SEND_SYNCHRON cannot be executed
    No exception defined for system errors
    Error handling for work item 000000120729
    Runtime handle of object type  could not be created
    Runtime handle of object type  could not be created
    No exception defined for system errors
    Regards
    Matt

  • Error handling at JDBC Receiver

    Hi,
    I am currently working on PI 7.31. This is regarding proxy to JDBC scenario using insert statement in the JDBC receiver. I would like to know is there any feature in JDBC receiver which allows the process to continue even after any data error in the insert statement by skipping the error records and finally collecting all error records and sending through alert configuration to the administrator. Currently process stops whenever any error happens in insert statement at JDBC receiver.
    Regards,
    Rama.

    Hello,
    I would suggest you to go with SP.
    By default, PI will handle the transaction and in case of any errors it will rollback the entire statement. So u can allow SP to handle the transactions by asking ur DB team to create a SP with a try/catch statement and in case of any errors while performing DML operations catch those exceptions and log those erroneous records in some exception log table and continue the SQL process.
    Eventually, either using SQL mailer or some windows services u can send a consolidated mail to the stakeholders. Just check with ur DB team since these are very normal stuff so i am quite sure ur DB admin would certainly help u on the same.
    Thanks
    Amit Srivastava

  • Flex and Coldfusion error handling

    Hello! I was wondering if someone could point me in the right direction regarding error handling in a Flex app thats using an HTTPSERVICE RPC to a Coldfusion component.
    If a user is entering form data in Flex and clicks submit... the data is sent via the HTTPSERVICE send method as XML to the CFC. But what if there is a Coldfusion SQL insert statement error? Say a user enters a character in a number field (now i know the best thing to do would be to have actionscript ensure that the values entered are numbers but lets keep that aside just for this example). How could I alert the user to let them know the CFC encountered a SQL error? Or better yet... alert them that everything went "A" ok and their data was successfully submitted.
    I originally thought to put CFTRY and CFCATCH around the CFC code. I could do that fine, but had trouble passing back a message string so that FLEX could use it in an Alert.Show window.
    Thanks!
    -BosDog

    Hey Mike,
    Sorry after I posted I thought "this may be a question for CF guys as well".
    I definitely use and love RemoteObjects. Its great for binding to datagrids and to run SQL to return data from the server back to Flex. I've struggled with successfully passing variables from Flex to CF using RemoteObject though. Say a dataform with 5 text fields & 2 combo box dropdowns.
    I think you may have forgotten to post the link to the article for me to read... i didnt see it in your last post?
    Thanks!

  • Errors with post-insert trigger

    I had a POST-INSERT TRIGGER here.but i encountered some problems.can someone help me with the errors?
    begin
         insert into user_acct
         userid_n, user_m, coy_c, contact_n, emp_n,
         work_loc_c, curr_passwd_t, prt_f, indv_pc_f, pc_deploy_c,      
         ext_email_addr_t, other_na_sys_t, status_c, status_rmk_t, upd_d)
         values
         (:user_acct.userid_n, :user_acct.user_m, :user_acct.coy_c, :user_acct.contact_n, :user_acct.emp_n,
         :user_acct.work_loc_c, :user_acct.curr_passwd_t, :user_acct.prt_f, :user_acct.indv_pc_f, :user_acct.pc_deploy_c,                
         :user_acct.ext_email_addr_t, :user_acct.other_na_sys_t, :user_acct.status_c, :user_acct.status_rmk_t,                
         :user_acct.upd_d);
         exception
              when others then
                   clear_message;
                   Message('Insertion of Applicant Particulars failed');
                   SYNCHRONIZE;
                   RAISE Form_Trigger_failure;
    end;
    begin
    insert into user_acct_na_detl
         na_sys_c)
         values
         (:na_sys_cd.na_sys_c);
         exception
              when others then
                   clear_message;
                   Message('Insertion of Non-Application failed');
                   SYNCHRONIZE;
                   RAISE Form_Trigger_failure;
    end;
              when others then
                   null;      
    end;     
    the error:
    Error 103 at line 31, column 3
    Encountered the symbol 'WHEN' when expecting one if the following:
    begin declare end exception exit for goto if loop mod null
    pragma raise return select update while <an identifier>
    <a double-quoted delimited-identifier><a bind variable><<
    close current delete fetch lock insert open rollback
    savepoint set sql commit<a single-quoted SQL string>
    The symbol "exception"was substituted for "WHEN" to continue
    Error 103 at line 2, column 1
    Encountered the symbol "END"

    i delete the "END" already but when i compile again, i encountered some error again.
    Error 370 at line 27, column
    OTHERS handler must be last among the exception handlers of a block
    Error 0 at line 1, column 1
    Statement ignored

  • Error Handling in the SQL Trigger 2008 R2

    Hi ,
    I need some guidance in setting up error handling process in the table  trigger. I have created a trigger on source database table and it load data to target table whenever there are any changes in last update date of source database ( given code below).
    Problem : sometime I am getting error message ( like unique Index , data length mismatch etc) and my trigger don’t work and rollback the entire transaction.  
    Requirement : If there is an error with the insertion, I would like to move that error-inducing record into an error table  .  Any guidance much appreciate.  thanks!
    /****** Object:  Trigger Defination     ******/
    USE [MPSAIntegration]
    GO
    SET
    ANSI_NULLS ON
    GO
    SET
    QUOTED_IDENTIFIER ON
    GO
    /*Description:    Trigger to insert Asset details into Siebel Table*/
    ALTER
    TRIGGER [dbo].[trg_INS_INTO_CX_PRODPROF_STG]
    ON  [MPSAIntegration].[dbo].[CustomerProductLines]
    AFTER INSERT,UPDATE
    AS
    /****** Get the current Timestamp,Max of SR_NUM from Target table and LastRun time from dbo.TIME ******/
    DECLARE @currtime
    DATETIME,
    @SR_NUM
    INT,
    @Last_Run
    DATETIME
    SELECT @currtime
    = (SELECT
    CURRENT_TIMESTAMP)
    SELECT @SR_NUM
    = (select
    max(Sr_Num)
    from dbo.SerialNum
    WHERE Entity='PROD')
    SELECT @Last_Run
    = (SELECT LastRun
    from [MPSAIntegration].[dbo].[TIME]
    where ENTITY =
    'PROD')
    BEGIN
    SET
    NOCOUNT ON;
    SET
    XACT_ABORT ON;
    /***** Update dbo.SerialNum Table *****/
    UPDATE dbo.SerialNum
    SET Sr_Num = @SR_NUM+1
    where Entity='PROD';
    /***** Insert into [dbo].[CX_PRODPROF_STG] table *****/
    INSERT
    INTO [ntscrmdbdev].[SiebelDB].[dbo].[CX_PRODPROF_STG]
    ([ROW_ID]
    ,[CREATED]
    ,[CREATED_BY]
    ,[LAST_UPD]
    ,[LAST_UPD_BY]
    ,[MODIFICATION_NUM]
    ,[CONFLICT_ID]
    ,[LOAD_STATUS]
    ,[SR_NUM]
    ,[INFO_CAPTURE_DATE]
    ,[ADDRESS_NAME]
    ,[CUSTOMER_CODE]
    ,[DESCRIPTION]
    ,[PRODUCT]
    ,[SERVER_NAME]
    ,[STATUS]
    ,[CANCEL_DATE],
          [SEQUENCE_ID])
    SELECT
    CAST(CUSTOMERCODE
    AS NVARCHAR(8))+CAST(@SR_NUM
    AS NVARCHAR(7))
    ,Current_Timestamp
    ,'dbo'
    ,Current_Timestamp
    ,Current_User
    ,0
    ,'N'
    ,'Not Processed'
    ,CAST(@SR_NUM
    AS NVARCHAR(15))
    ,InfoCaptureDate
    ,(SELECT CUST.CUSTOMERNAME
    FROM CUSTOMERS CUST where CUST.CustomerCode
    = I.CustomerCode)
    ,CustomerCode
    ,ProductLine
    ,ProductLine
    ,ServerName
    ,'ACTIVE'
    ,TerminationDate
    ,1
    FROM INSERTED I
    /****** Update the LastRun in dbo.TIME ******/
    UPDATE [MPSAIntegration].[dbo].[TIME]
    SET LastRun
    = @currtime
    WHERE ENTITY
    = 'PROD';
    END

    The first choice is stored procedure. Trigger should be last resort.
    Related links:
    http://stackoverflow.com/questions/884334/tsql-try-catch-transaction-in-trigger
    http://www.sqlservercentral.com/Forums/Topic1499938-3077-1.aspx
    http://www.sommarskog.se/error-handling-I.html
    http://www.codemag.com/Article/0305111
    Kalman Toth Database & OLAP Architect
    SQL Server 2014 Database Design
    New Book / Kindle: Beginner Database Design & SQL Programming Using Microsoft SQL Server 2014

  • Dml error handling in 10g

    i have a procedure with an insert statement that is using the new oracle 10g dml error handling LOG ERRORS INTO err$_dest ('INSERT') REJECT LIMIT UNLIMITED;
    i understand this will execute when you have a violation like not null columns etc.
    according to oracle website, this command will fail if there is a space problem and everything will roll back. will i get an error message in such scenario and can i use regular exception handling to handle this.
    example code
    begin
    insert into dest values(1, 'smith', 1234, 'dest')
    LOG ERRORS INTO err$_dest ('INSERT') REJECT LIMIT UNLIMITED;
    exception when others
    //login error cause by log errors command
    end;

    The inserts into the err$_dest table will NOT be rolled back as they are autonomous transactions. We were able to handle other errors such as tablespace sizing issues in the exception section.

  • Conditional  Error handling

    This is my use case
    My proxy will call a business service which will call the DB and execute a SP . The SP will return 1-* rows. Assume the rows have 10 columns. The 10th column is the status. even if there is some functional error the SP will return 1 row with the 10th columns populated.
    This is the possible values of the 10th column (Status)
    OK, E1, E2,E3, D
    OK - Output is ok . I will transform the output and call another BS to insert into another DB
    D- Discard . just skip the message flow . no need to insert into the DB.
    E1 ,E2- Retry 2 more time with an interval of 1 min. but I need to log the original body
    E3 - Retry 2 more time with an interval of 1 min. but I do not need to log.
    I have created 2 proxies and 2 BS.
    P1 -> P2 - > BS1. For the service callout of P2 from P1 I have set the routing option for Retrycount = 2 , retyinterval=60 secs.
    P2 will call BS1 and check the output Row1 and column 10 index and based on that it will do the following. For E1,E2,E3 it will raise Error with Error code E0001, E0002, E0003 . For D and OK it changes the body accordingly.
    In P1, I put and if condition to validate the return of P2. For OK I call BS2, For D I call the Skip action
    For E1,E2 and E3 they get trapped in the Stage error of P1.
    Everything works fine till here, but how do I identify in stage1 error handler if the error is caused by E0001 or E0002 or E0003 so I can log the original body and log the cause of the error is E0001 or E0002 ???
    regards

    This is the $fault output
    <con:fault      xmlns:con="http://www.bea.com/wli/sb/context">
         <con:errorCode>BEA-382502</con:errorCode>
         <con:reason>
         OSB Service Callout action received an error response
         </con:reason>
         <con:details>
         <con1:ErrorResponseDetail      xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config"/>
         </con:details>
         <con:location>
         <con:node>PipelinePairNode1</con:node>
         <con:pipeline>PipelinePairNode1_request</con:pipeline>
         <con:stage>stage1</con:stage>
         <con:path>request-pipeline</con:path>
         </con:location>
         </con:fault>
    It does not give me the Error code which is raised in my service callout proxy.
    Let me try and simply my scenario.
    Proxy 1 calls Proxy2 by service callout . Proxy 2 based on certain error condition will raise error code like E0001 , E0002 etc..
    In Proxy 1 Error handler, I want to find out if the error is caused because of E0001 or E0002. How can I achieve this ?. I have posted Proxy 1 $fault variable which outputs a generic error message.

  • About ale error handling in workflow?

    Hi,
    can any one explian in detail ale error handling through workflow,its urgent for me.
    Regards,
    phani

    Hi Srikanth,
    follw the steps it will helpful u,
    Pre-requisites. 
    It is assumed that the reader of this article has some knowledge in SAP workflow BOR objects and ALE Idoc process like process code, Partner Profile etc. 
    Description 
    Here, we will be discussing in details the Error handling of an Inbound Idoc through triggering an event, which in turn will be triggering a workflow attached to the workflow. 
    Steps:-
    1.     Create custom BOR object with the events, Start and Stop event
    2.     Create a workflow for the error handling, like generating a notification whenever an error occurred in the Inbound Idoc.
    3.     Creation of Function Module and attachment with the Process Code
    4.     Create the settings for the Inbound Process of the Idoc through the Process Code.
    Creation of BOR objects. Go to the[http://www.****************/Tutorials/ALE/ErrorHandling/page3.htm] transaction SWO1. 
    Enter a name for the Object type and click ‘CREATE’ button for creating the custom BOR object. 
    Enter the details required for creating the BOR objects... 
    Create the Key fields and events of the BOR object.
    For creating the Key fields place the cursor on the Key fields and Click on the Create Button
    Create events for triggering the workflow and stopping the workflow.
    For creating the event place the cursor on the EVENTS and Click the create button like Key fields.
    Create two events.
    Enter the event name description etc and proceed further to create it. 
    Similarly create another event for ending the Workflow in the similar manner like that created earlier. 
    Now, Generate the BOR object through the generate button
    Release the EVENTS and subsequently release the BOR object. 
    After the creation of BOR object
    Create a workflow for the generation of notification whenever an error is reached in the Inbound Idoc.
    Execute the transaction SWDD. 
    Click on the CREATE button for creating the workflow for error handling. 
    Choose the Step type to be inserted for the notification like here we are using Send Mail option for sending a mail to the user whenever any error occurred.
    Activate the Workflow and test it whether it is working as per the requirement.
    After the successful completion it is required to attach the workflow with the event.
    Go to the Header section (Denoted by CAP).
    Go to the Start Events TAB.        
    Enter the details of the event with which the workflow should be linked like the category, BOR object type and the event with which that should be linked.
    Enter here the BOR object that has been created and give the name of event created for starting the workflow.
    Click on the Binding Button for generating the binding between the event and the workflow.
    Click on the Binding Button for generating the binding between the event and the workflow.
    Generate the binding and click OK button to save the binding.
    Click on Activate / deactivate button for activating the linkage.
    After the successful linkage the following sign will appear on the workflow..... 
    This shows that the workflow has been linked to the event and it will be triggered whenever that particular event will be triggered. 
    After the creation and successful linkage of workflow with the event it is required it is required to generate a function module and attached it to the process code. 
    Go to SE37 transaction and copy a standard process code function module to a custom one. Do no delete any parameters from the function module as the SAP standard program itself is calling this. 
    In that function module do the required validation and whenever the validation fails set a standard parameter ‘WORKFLOW_RESULT’ to 9999 from within the function module, otherwise normally proceed to set the status to 53.
    After the creation of function module it is required to attach it to the process code and corresponding attached to the message type at the Partner Profile stage.
    The process code is being created through the transaction WE42
    Go to the change mode and click the New Entries button for creating new process code. 
    Enter the Process Code Name, description and choose the processing type as Processing by function module. Click on the extension button of Identification.
    The details for the of the Process Code after clicking the identification button will be  
    Whenever idoc arrives into the Destination system then the standard SAP triggers the Process code attached to the Message type in the partner profile. The partner profile is being maintained in the transaction WE20. 
    Since, it is and inbound scenario so the message type and the corresponding process code will be maintained for the Inbound Parameters. 
    Click on Create Inbound Parameters button for creating new Inbound Message type and the corresponding message type. 
    Enter the process code for the corresponding message type. 
    Click SAVE button for saving the changes. 
    Whenever the IDOC arrives into the target system, it checks the partner profile and finds the corresponding process code. The process code is being linked with the function module through which the IDOC is required to be processed.
    Regards,
    Phani.

Maybe you are looking for

  • SharePoint 2013 Client Side People Picker in Content Editor Web Part

    Has anyone tried to use the client side people picker in a content editor web part? I have successfully got it to work in IE by adding all the script references and initialize function to the content editor web part. Now the strange part is, the peop

  • Yahoo Msger with Web-cam view support

    Does anyone know of any other client besides Gyach Enhanced that allows web-cam viewing using Yahoo Messenger?  I am unable to compile Gyach Enhanced and I have not found another client that supports this.  If you have been able to compile Gyach Enha

  • Songs not playing in iTunes 7

    Since I downloaded the new iTunes 7, I cannot play any songs in my library, or on disc. I could with the old version. Does anyone know what is different about version 7 which could be creating this problem?

  • What is AppleSyncNotifier.exe for?

    What is AplleSyncNotifier.exe and why is it triggering an error message on my windows 7?

  • How to use text-by-speech for N80?

    I have been reading some posts here and there, but I havent seen anywhere where it states that text by speech works or does not work for N80? I was hoping somebody coud tell me, if it does work how do you install it? Thank you so much