Default Exception Handling in B2B

Hi All,
Need your help and advise on the below requirement we have currently:
Source system sends an XML input to MW and therein, we transform it into PO_850 XSD and sends it to B2B. We are validating the XSD in B2B and then generating an EDI_PO_850 file and sending it to the Trading Partner. We are going to have 5 different Target Trading Partner. I have 2 questions w.r.t the default exception handling in place for Oracle B2B:
1. Which Queue will have the Error Information for the above case? B2B_IN_Queue/B2B_OUT_Queue/B2B_IP_IN_Queue
2. We would like to consume the error messages specific to a trading partner from the JMS Queue directly, how can we achieve it?
Appreciate your help in this regard.
Thanks in Advance
Priyanka

Hi Priyanka
B2B operates in two modes for default internal queue communication - AQ and JMS. This is controlled in the Admin/Configuration page "use JMS queues" checkbox.
In AQ, the queue to which the exception message is delivered would be IP_IN_QUEUE
In JMS the queue to which the exception message is delivered would be B2B_IN_QUEUE. Since you speak about reading error message from the JMS queue directly, am thinking this would be the one of interest to you.
In addition to the above we can create custom JMS internal delivery queue and this can be associated to the Exception Queue which can be assigned in the Admin/Configuration page.
With regards to reading the exception msg specific to the trading partner from the JMS Queue directly, this can be done by adding a check on the dequeue process. Each exception message is populated with From_Party and To_Party information. In the outbound delivery case, the exception message should have To_Party set as the partner's name. This can be checked.
Hope that helps.
Regards
Arun

Similar Messages

  • Does java have default exception handler or something

    Hi,
    I am getting a lot of SQLExceptions in my project, and I am fed up with try/catches everywhere in my project. I am doing exactly the same in every catch.
    So I was wondering if there is any way of default error handling, so if noone catches this exception, this will catch it.
    I know it excists in VB.NET.
    thanx guys!
    Bart

    Look at Thread.UncaughtExceptionHandler

  • Exception Handling in B2B 11g

    All,
    When I create and deploy a SOA Composite to receive B2B Exceptions everything works great ,I am seeing the exceptions in SOA. however I also see that exceptions are still being enqueued to IP_QTAB even after deploying the SOA Composite
    This is contrary to what we have seen for regular B2B messages, is there a setting to stop error messages from queuing up when I have the composite deployed ?
    Thanks,
    Kalyan Sura

    Not sure what's the point of this redundancy, May be the best practice would be is just to use AQ Adapter to dequeue teh messages , as B2B adapter always defaults B2B user as consumer.
    Any other thoughts ?
    Thanks,
    Kalyan Sura

  • Default exception handling

    Hi,
    Is it possible to define multiple error-pages for exceptions such that some of them process specific exceptions and one processes the all others;
    <error-page>
    <exception-type>MyException</exception-type>
    <location>/MyExceptionHandler</location>
    </error-page>
    <error-page>
    <exception-type>java.sql.SQLException</exception-type>
    <location>/SQLExceptionHandler</location>
    </error-page>
    <error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/DefaultExceptionHandler</location>
    </error-page>
    All the locations map to servlets/jsps, MyException derives from java.lang.Exception.
    Is such a configuration possible? If yes what am I doing wrong?
    Thanks.

    Hi Priyanka
    B2B operates in two modes for default internal queue communication - AQ and JMS. This is controlled in the Admin/Configuration page "use JMS queues" checkbox.
    In AQ, the queue to which the exception message is delivered would be IP_IN_QUEUE
    In JMS the queue to which the exception message is delivered would be B2B_IN_QUEUE. Since you speak about reading error message from the JMS queue directly, am thinking this would be the one of interest to you.
    In addition to the above we can create custom JMS internal delivery queue and this can be associated to the Exception Queue which can be assigned in the Admin/Configuration page.
    With regards to reading the exception msg specific to the trading partner from the JMS Queue directly, this can be done by adding a check on the dequeue process. Each exception message is populated with From_Party and To_Party information. In the outbound delivery case, the exception message should have To_Party set as the partner's name. This can be checked.
    Hope that helps.
    Regards
    Arun

  • Can i create Default Exception Handler ?

    hello how can i create a default handler for all exceptions witch are thrown from all actions from all backing beans.
    i want to redirect a user to userfriendly page when some uncatched exception has been created.

    Hi JOKe,
    I have the same problem with JSF, have you found a solution?
    Thanks in advance
    David

  • Default Exception Handler

    If an exception is thrown in the Event Dispatching Thread I want to know about it, without just looking at System.err. In 1.5 there is a method Thread.setUncaughtExceptionHandler(...), but I'm developing for 1.4. How do we achieve that same functionality (or simmilar functionality) in 1.4

    try adding the thread-class to your project and compile it. If some other classes are missing add them to your project, too. This should help!

  • ADF Task Flow Exception Handling

    Hi ,
    I tried a very simple thing for taskFlow exception handling.
    I created a bounded task flow with a page fragment (View1.jsff) and another view which is the TaskFlow ExceptionHandler (error.jsff).
    The view1.jsff has a button whose action is bound to the backing bean. In the backingBean method I deliberately do division by 0.
    Since this is an unHandled exception, I would have expected the control to come to error.jsff. But, instead I am shown a pop up box with the error message.
    Why is the control not getting redirected to error.jsff ?
    Thanks.
    S.Srivatsa Sivan

    Hi Frank , im having the same problem.
    I want to handle exceptions that occur while navigating task flows (example: A user navigates to a task flow that he/she does not have view permission)
    I tried using a view activity and method activity as the exception handler but none of them works, the exception is still not handles. It does not even navigate to the exception handler on the task flow.
    on the view page i have:
    <af:panelStretchLayout topHeight="50px" id="psl1">
    <f:facet name="top">
    <af:panelGroupLayout layout="scroll"
    xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
    id="pgl1">
    Error message:  
    <af:outputText value="#{controllerContext.currentRootViewPort.exceptionData.message}" id="ot2"/>
    </af:panelGroupLayout>
    </f:facet>
    <f:facet name="center">
    <af:outputText value="#{my_exception_Handler.stackTrace}" id="ot1"/>
    <!-- id="af_one_column_header_stretched" -->
    </f:facet>
    </af:panelStretchLayout>
    I tried getting the error message and stacktrace from the controllerContext via EL like this "#{controllerContext.currentRootViewPort.exceptionData.message}"
    and from the controllerContext class in functions that i have declared in my_exception_Handler class like this
    " ControllerContext ctx = ControllerContext.getInstance();
    ViewPortContext vCtx = ctx.getCurrentViewPort();
    if(vCtx.getExceptionData() != null){
    StringWriter stringWriter = new StringWriter();
    PrintWriter printWriter = new PrintWriter(stringWriter);
    vCtx.getExceptionData().printStackTrace(printWriter);
    return stringWriter.toString();"
    But all this dont even matter because when the exception occurs on the task flow it does not navigate to the default exception handler.
    thanks for your interest and help in advance.
    Cyborg_0912

  • Exception handling in JSF

    This question has been asked time and again, without any clear answers to it. I would appreciate if some one can help me on this.
    I am developing a web application with the following architecture:
    JSF page calls backing bean methods which calls the service methods. Now my service methods can throw different exceptions like ValidationException, BusinessException, SystemException etc.
    Now, what i want to do is : If Validation/Business Exceptions are thrown show the error messages to the user on the same page from which the action was called. And if a SystemException is thrown navigate to a default error page.
    How can i handle this thing? Any clues?

    Thanks for the reply BalusC,
    I checked the log files (application log as well as server log) also and there is no other stack trace besides of the exception which i am throwing. Let me elaborate on the exact issue:
    I am trying to handle concurrency issues in my application. For example, When two users simultaneously try to edit the same record, the user who first saves the changes successfully. Now when the second user tries to save the changes i want to show him a message that "This record has been modified after you opened it for edit. Please refresh your page and reapply the changes". To show this message i am throwing a BusinessException from my service, which in turn gets propagated to my saveAction method. The saveAction method needs to handle this exception and somehow should show the above message to the user.
    To achieve this,
    1. i tried catching the exception in my saveAction and added the necessary faces message to FacesContext object. But it does not work. Later i read the reason behind this too, that in the invoke application phase a new context will be created and the messages will not be available to it.
    2. I then added the throws clause to my saveAction method, so that my default exception handler will handle it.
    saveAction method signature :
    public String saveAction () throws BusinessException {
        //some code here for save
        return null;
    }This is my code for the ErrorHandler.jsp:
    <body>
            <h1 style="color: red">Error</h1><br/><%
                 // print stack trace.
                ExceptionHandler exceptionHandler = new ExceptionHandler();
                 // unwrap ServletExceptions.
                while (exception instanceof ServletException || exception instanceof FacesException ||
                        exception instanceof ApplicationException) {
                    if(exception instanceof ServletException) {
                        exception = ((ServletException) exception).getRootCause();
                    } else if(exception instanceof FacesException) {
                        exception = ((FacesException) exception).getCause();
                    } else if(exception instanceof ApplicationException) {
                        exception = ((ApplicationException) exception).getCause();
      %><font color="red"><%=exceptionHandler.handleException(exception)%></font><br/></body>and this is my code for the handleException method defined in the ExceptionHandler.java:
    public static String getMessage(final String msgKey, final Object args[]) {
            String message = messages.getProperty(msgKey);
            if(args != null) {
                final String replaceArgs[] = (String[]) args;
                for(int i = 0; i < replaceArgs.length; i++)
                    message = message.replaceFirst("{" + i + "}", replaceArgs);
    return message;
    public String handleException(final Throwable exception) {
    logger.debug("handleException called..");
    String errorMessage = "Unknown error occured.";
    String stackTrace = "Stacktrace can not be found. Please check the logs for more details.";
    String errorString = null;
    final StringWriter stringWriter = new StringWriter();
    if(exception != null) {
    exception.printStackTrace (new PrintWriter (stringWriter));
    stackTrace = stringWriter.toString();
    errorMessage = getMessage(exception.getMessage(), null);
    errorString = "<b>" + errorMessage + "</b> <br> </br> <br> <input id=\"show\" type=\"button\" value=\"Show Details >>\" onClick=\"toggle();\" /> <div id=\"errorStackTrace\" style=\"display:none;\" > <pre>" + stackTrace + "</pre> </div>";
    return errorString;
    With the help of this code, i am simply trying to navigate to the error page if an exception occurs and display the appropriate error message with the stacktrace.
    The strange thing is, the ErrorHandler.jsp page correctly gets called, which in turn calls the handleException method which returns the formatted error string. (I checked this by adding log statements everywhere). But the system does not actually navigates to the ErrorHandler.jsp page and shows an alert with the following message : "Request error, status : 500 Internal Server Error message : "
    Can someone help me figure out what exactly the problem is?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Struts exception handling - Exception handler

    Hi ,
    I need some help for struts exception handling . Global exception is working fine in my struts application . But I need to show the exception stack trace also in the screen whenever the exception occurs.I guess this can be achieved if we use a custom exception handler instead of struts default exception handler . Can anyone please provide me a sample code to deal with a custom ExceptionHandler class ?
    Thanks in advance...
    Regards,
    BG

    The struts provides org.apache.struts.action.ExceptionHandler class for creating the custom exception handlers. All the custom Exception Handlers should extend the ExceptionHandler class and override the execute() method.
    //An Example
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ExceptionHandler;
    import org.apache.struts.config.ExceptionConfig;
    public class CustomExceptionHandler extends ExceptionHandler {
    public ActionForward execute(Exception exception, ExceptionConfig config, ActionMapping mapping, ActionForm formInstance,
    HttpServletRequest request, HttpServletResponse response) throws ServletException {
    try {
    // TODO CustomeCode
    System.out.println("Exception Handler for the specific error");
    }catch (Exception e) {
    return (super.execute(exception, config, mapping, formInstance, request, response));
    Struts-config.xml File
    <exception key="error.system" type="java.lang.RuntimeException"
    handler="com.visualbuilder.handler.CustomExceptionHandler" path="/index.jsp" />
    Note:- This will transfer the control to the index.jsp after calling the exception handler. In the struts-config.xml we are adding the global exception for RuntimeException. You can add any exception like the previous example to some actions only.
    I have taken this example from following link. You may visit it.
    http://www.visualbuilder.com/jsp/struts/tutorial/pageorder/38/
    I would like if you share knowledge with me.

  • Oracle exception handling

    is this right way do to coding and exception handling
    2 cases
    if we get overwrite = 1 then update else insert.
    I am not sure i have handled proper user defined exception.
    Please advise.
    create or replace procedure get_rc1(in_file_name in VARCHAR2, overwrite number) is
    o_error_number number;
    err_exception EXCEPTION;
    begin
    IF overwrite = 1 THEN
    UPDATE store
    SET uploaded_by = 'ram'
    WHERE file_name = in_file_name;
    dbms_output.put_line ('update');
    IF (SQL%ROWCOUNT > 0)
    THEN
    history_log(p_key_id => '123',
    desc => 'v_his_desc',
    key_word => 'p1' ,
    ser_id => 'ram',
    status => NULL,
    p_error_number => o_error_number);
    IF o_error_number <> 0
    THEN
    RAISE err_exception;
    END IF;
    END IF;
    ELSE
    dbms_output.put_line ('insert');
    INSERT
    INTO store
    ID
    ,FILE_LENGTH
    ,FILE_NAME
    ,DOCUMENT_IMAGE
    ,UPLOADED_DATE
    ,UPLOADED_BY
    ,MIME_TYPE
    VALUES
    1234,
    12345,
    '123',
    NULL ,
    sysdate,
    '[email protected]',
    'balaji'
    IF (SQL%ROWCOUNT > 0)
    THEN
    history_log(p_key_id => '123',
    desc => 'v_his_desc',
    key_word => 'p2' ,
    ser_id => 'ram',
    status => NULL,
    p_error_number => o_error_number);
    IF o_error_number <> 0
    THEN
    RAISE err_exception;
    END IF;
    END IF;
    END IF;
    -- maintaining the history and setting the message
    commit;
    exception
    when others then
    dbms_output.put_line ( sqlerrm);
    END;

    Hi,
    user4485803 wrote:
    is this right way do to coding and exception handling
    2 cases
    if we get overwrite = 1 then update else insert.
    I am not sure i have handled proper user defined exception.
    Please advise.When posting formatted text on this site, type these 6 characters:
    \(small letters only, inside curly brackets) before and after each section of formatted text, to preserve spacing.
    create or replace procedure get_rc1(in_file_name in VARCHAR2, overwrite number) is
    o_error_number number;
    err_exception EXCEPTION;
    begin
    IF overwrite = 1 THEN
    UPDATE store
    SET uploaded_by = 'ram'
    WHERE file_name = in_file_name;
    dbms_output.put_line ('update');
    IF (SQL%ROWCOUNT > 0)
    THEN
    history_log(p_key_id => '123',
    desc => 'v_his_desc',
    key_word => 'p1' ,
    ser_id => 'ram',
    status => NULL,
    p_error_number => o_error_number);
    IF o_error_number <> 0Did you mean IF o_error_number 1= 0
    ?  This site doesn't like to display the &lt;&gt; inequality operator.  Use the equivalent != operator when posting here.
    THEN
    RAISE err_exception;
    END IF;
    END IF;
    ELSE
    dbms_output.put_line ('insert');
    INSERT
    INTO store
    ID
    ,FILE_LENGTH
    ,FILE_NAME
    ,DOCUMENT_IMAGE
    ,UPLOADED_DATE
    ,UPLOADED_BY
    ,MIME_TYPE
    VALUES
    1234,
    12345,
    '123',
    NULL ,
    sysdate,
    '[email protected]',
    'balaji'
    IF (SQL%ROWCOUNT > 0)
    THEN
    history_log(p_key_id => '123',
    desc => 'v_his_desc',
    key_word => 'p2' ,
    ser_id => 'ram',
    status => NULL,
    p_error_number => o_error_number);
    IF o_error_number <> 0
    THEN
    RAISE err_exception;
    END IF;
    END IF;
    END IF;
    -- maintaining the history and setting the message
    commit;
    exception
    when others then
    dbms_output.put_line ( sqlerrm);
    END;That looks like the correct way to raise an error.
    If you don't have an EXCEPTION section, then PL/SQL will display an error message, including the line number where the error was detected.  If the error occurred deep in a series of called procedures, the error message will include information about what procedures were called, and where.  All of that is potentially very important information, and all of that is lost if you have your own EXCEPTION handler, like the one above.  Acutally, it would be better to call the code above a exception *hider* , not a handler, because all it's really doing is hiding details about any error.
    Use an EXCEPTION sedction only when you can improve on the default exception handling.  Even then, you rarely want to use WHEN *OTHERS* ; you want to check for specific errors.  For example...
    EXCEPTION
    WHEN err_exception
    THEN
    END;
    If any exception other than err_exception occurs, this will not hide it.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Default fault handler

    Hello,
    I have a prospect that would like to have a generic default exception handler that will include a generic human task.
    The human task will receive the error details and allow the user to instruct the BPM engine to retry that faulty activity and resume the process from the point where it was stopped, or terminate the current process instance.
    Is there a supported way of doing so ?
    Thanks,
    Meni,

    Thank you for idea, that would solve this problem. But generally speaking, does Oracle BPEL Server support concept of default compensation handlers and default fault handlers by WS-BPEL1.1 specification or not? By my experience, it doesn't. Unluckily, you cannot use universal compensation activity (without name of the scope) either, and so you have to use in every fault handler list of compensation activities, each of them with name of specific scope. Am I wrong?

  • What is the idea behind Render Response and Exception Handling in TF?

    Dear All,
    While searching for answer for my question, I find it hard to decipher this line.
    task flow exception handling doesn't handle any exception that is in Render Response phase
    I found this several times in many post like this.
    Re: ADF Exception handling (including RENDER RESPNSE PHASE)
    and this
    Re: Exception Handling in TaskFlow
    What's the idea behind exception handling in task flow that is related to JSF/ADF life cycle?
    I can't find a resource on why I should know what phase an exception has been thrown?
    Sorry if my question might be vague/ignorant to others, but I just would like to know the idea from experts around here. :)
    Thanks.
    JDEV 11G PS4

    Hi,
    Render Response is the last lifecycle phase processed during JSF request. The ADF controller has no chance of handling exceptions that occur during this time (example, exception thrown in managed bean) and therefore in its default exception handling implementation ignores this lifecycle phase. As an application developer you don't need to know when an exception is raised. However, if you find that an exception occurs during Render Response and it is not handled by the ADFc declarative exception handler, then you know. You can try and override the framework exception handler as explained here:
    https://blogs.oracle.com/jdevotnharvest/entry/extending_the_adf_controller_exception_handler
    However, better practice is to use try/catch blocks surrounding e.g. calls in a managed bean that could cause exceptions
    Frank

  • B2B Exception handling

    Hi,
    Implementing exception handling part for B2B and the version using is 11g.
    I am implementing exception handling by using JMS queue "B2B_IN_QUEUE".
    If message is getting error out then B2B producing error message into "B2B_IN_QUEUE".
    Checked in server and "B2B_IN_QUEUE" consist the error message.
    In BPEL I am consuming the message. But the instance is not getting created for the message available in "B2B_IN_QUEUE".
    In Jms Adapter configuration wizard not provided the option for defining consumer type as "B2BErroruser". Due to consumer type is undefined thinking bpel is not intiating itself by consuming the error message available in "B2B_IN_QUEUE".
    I tried by providing message property "MSG_TYPE" value as '3' also.
    But still Bpel instance is not creating...
    Please tell me is required to set any other message properties to make bpel to consume the message.
    Thanks&Regards,
    Sridhar.Rachumallu
    Edited by: sridhar.rachumallu on Nov 30, 2010 10:31 AM
    Edited by: sridhar.rachumallu on Nov 30, 2010 10:40 AM
    Edited by: sridhar.rachumallu on Nov 30, 2010 8:47 PM

    Hi Anuj,
    First of all check whether there is any consumer on B2B_IN_Queue or not? You may check it on weblogic admin console.
    I am checking for the consumers information in Monitor tab of B2B_IN_Queue and noticed the below information
    Consumers Current : 0
    Consumers High : 1
    Consumers Total : 1
    Messages Current : 3
    Messages Pending : 0
    Messages Total : 3
    Messages High : 3
    After deployed the BPEL process the value of 'Consumers Current' not updating to 1 from 0.
    Values of Consumers Total and Consumers Current not changing after deploying the process or after un deploying the bpel process.
    Can you please tell me what is difference between Consumers Total and Consumers Current?
    If the path i am using for getting consumers information of B2B_IN_Queue is wrong please suggest correct path in the admin console.
    Thanks&Regards,
    Sridhar.Rachumallu
    Edited by: sridhar.rachumallu on Dec 1, 2010 1:41 AM
    Edited by: sridhar.rachumallu on Dec 1, 2010 1:47 AM
    Edited by: sridhar.rachumallu on Dec 1, 2010 2:53 AM

  • Exception handling for all the insert statements in the proc

    CREATE PROCEDURE TEST (
    @IncrStartDate DATE
    ,@IncrEndDate DATE
    ,@SourceRowCount INT OUTPUT
    ,@TargetRowCount INT OUTPUT
    ,@ErrorNumber INT OUTPUT
    ,@ErrorMessage VARCHAR(4000) OUTPUT
    ,@InsertCase INT --INSERT CASE INPUT
    WITH
    EXEC AS CALLER AS
    BEGIN --Main Begin
    SET NOCOUNT ON
    BEGIN TRY
    DECLARE @SuccessNumber INT = 0
    ,@SuccessMessage VARCHAR(100) = 'SUCCESS'
    ,@BenchMarkLoadFlag CHAR(1)
    ,@BenchmarkFlow INT
    ,@MonthYearStart DATE
    ,@MonthYearEnd DATE
    ,@StartDate DATE
    ,@EndDate DATE
    /* Setting the default values of output parameters to 0.*/
    SET @SourceRowCount = 0
    SET @TargetRowCount = 0
    /*Setting the Start and end date for looping */
    SET @MonthYearStart = @IncrStartDate;
    SET @MonthYearEnd = @IncrEndDate;
    /* Setting the @InsertCase will ensure case wise insertion as this sp will load data in different tables
    @InsertCase =0 means data will be inserted in the target TAB1
    @InsertCase =1 means data will be inserted in the target TAB2
    @InsertCase =2 means data will be inserted in the target TAB3
    @InsertCase =3 means data will be inserted in the target TAB4
    @InsertCase =4 means data will be inserted in the target TAB5
    @InsertCase =5 means data will be inserted in the target TAB6
    if @InsertCase =0
    WHILE (@MonthYearStart <= @MonthYearEnd)
    BEGIN
    SET @StartDate = @MonthYearStart;
    SET @EndDate = @MonthYearEnd;
    /* Delete from target where date range given from input parameter*/
    DELETE FROM TAB1
    WHERE [MONTH] BETWEEN MONTH(@StartDate) AND MONTH(@EndDate)
    AND [YEAR] BETWEEN year(@StartDate) and year(@EndDate)
    /*Insert data in target-TAB1 */
    BEGIN TRANSACTION
    INSERT INTO TAB1
    A,B,C
    SELECT
    A,BC
    FROM XYZ
    COMMIT TRANSACTION
    SET @MonthYearStart = DATEADD(MONTH, 1, @MonthYearStart)
    SELECT @TargetRowCount = @TargetRowCount + @@ROWCOUNT;
    END -- End of whileloop
    END TRY
    BEGIN CATCH
    IF @@TRANCOUNT>0
    ROLLBACK TRANSACTION
    SELECT @ErrorNumber = ERROR_NUMBER() ,@ErrorMessage = ERROR_MESSAGE();
    END CATCH
    END--End of Main Begin
    I have the above proc inserting data based on parameters  where in @InsertCase  is used for case wise execution.
     I have written the whole proc with exception handling using try catch block.
    I have just added one insert statement here for 1 case  now I need to add further insert  cases
    INSERT INTO TAB4
                    A,B,C
    SELECT
                                    A,BC
    FROM XYZ
    INSERT INTO TAB3
                    A,B,C
    SELECT
                                    A,BC
    FROM XYZ
    INSERT INTO TAB2
                    A,B,C
    SELECT
                                    A,BC
    FROM XYZ
    I will be using following to insert further insert statements 
    if @InsertCase =1 
    I just needed to know where will be my next insert statement should be fitting int his code so that i cover exception handling for all the code
    Mudassar

    Hi Erland & Mudassar, I have attempted to recreate Mudassar's original problem..here is my TABLE script;
    USE [MSDNTSQL]
    GO
    /****** Object: Table [dbo].[TAB1] Script Date: 2/5/2014 7:47:48 AM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[TAB1](
    [COL1] [nvarchar](1) NULL,
    [COL2] [nvarchar](1) NULL,
    [COL3] [nvarchar](1) NULL,
    [START_MONTH] [int] NULL,
    [END_MONTH] [int] NULL,
    [START_YEAR] [int] NULL,
    [END_YEAR] [int] NULL
    ) ON [PRIMARY]
    GO
    Then here is a CREATE script for the SPROC..;
    USE [MSDNTSQL]
    GO
    /****** Object: StoredProcedure [dbo].[TryCatchTransactions1] Script Date: 2/5/2014 7:51:33 AM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE PROCEDURE [dbo].[TryCatchTransactions1] (
    @IncrStartDate DATE
    ,@IncrEndDate DATE
    ,@SourceRowCount INT OUTPUT
    ,@TargetRowCount INT OUTPUT
    ,@ErrorNumber INT OUTPUT
    ,@ErrorMessage VARCHAR(4000) OUTPUT
    ,@InsertCase INT --INSERT CASE INPUT
    WITH
    EXEC AS CALLER AS
    BEGIN --Main Begin
    SET NOCOUNT ON
    BEGIN TRY
    DECLARE @SuccessNumber INT = 0
    ,@SuccessMessage VARCHAR(100) = 'SUCCESS'
    ,@BenchMarkLoadFlag CHAR(1)
    ,@BenchmarkFlow INT
    ,@MonthYearStart DATE
    ,@MonthYearEnd DATE
    ,@StartDate DATE
    ,@EndDate DATE
    /* Setting the default values of output parameters to 0.*/
    SET @SourceRowCount = 0
    SET @TargetRowCount = 0
    /*Setting the Start and end date for looping */
    SET @MonthYearStart = @IncrStartDate;
    SET @MonthYearEnd = @IncrEndDate;
    /* Setting the @InsertCase will ensure case wise insertion as this sp will load data in different tables
    @InsertCase =0 means data will be inserted in the target TAB1
    @InsertCase =1 means data will be inserted in the target TAB2
    @InsertCase =2 means data will be inserted in the target TAB3
    @InsertCase =3 means data will be inserted in the target TAB4
    @InsertCase =4 means data will be inserted in the target TAB5
    @InsertCase =5 means data will be inserted in the target TAB6
    IF @InsertCase =0
    WHILE (@MonthYearStart <= @MonthYearEnd)
    BEGIN
    SET @StartDate = @MonthYearStart;
    SET @EndDate = @MonthYearEnd;
    /* Delete from target where date range given from input parameter*/
    DELETE FROM TAB1
    WHERE START_MONTH BETWEEN MONTH(@StartDate) AND MONTH(@EndDate)
    AND START_YEAR BETWEEN year(@StartDate) and YEAR(@EndDate)
    /*Insert data in target-TAB1 */
    BEGIN TRANSACTION
    INSERT INTO TAB1 (COL1,COL2,COL3)
    VALUES ('Z','X','Y')
    SELECT COL1, COL2, COL3
    FROM TAB1
    COMMIT TRANSACTION
    SET @MonthYearStart = DATEADD(MONTH, 1, @MonthYearStart)
    SELECT @TargetRowCount = @TargetRowCount + @@ROWCOUNT;
    END -- End of whileloop
    END TRY
    BEGIN CATCH
    IF @@TRANCOUNT > 0
    ROLLBACK TRANSACTION
    SELECT @ErrorNumber = ERROR_NUMBER() ,@ErrorMessage = ERROR_MESSAGE();
    END CATCH
    PRINT @SUCCESSMESSAGE
    END--End of Main Begin
    GO
    I am just trying to help --danny rosales
    UML, then code

  • Issue with exception Handling in GG

    Hi,
    I have bi-directional DML replication setup. I have written a code in replication parameter for handling the exception , Exception handling is working fine my replicate process is not getting ABENDED but Issue is I am not geeting any rows in EXCEPTION table.I had gone through replicat report, there I had seen GG is trying to inser duplicate records in EXCEPTION TABLE and it is failing because of that .
    **Command for create Exception Table is-**
    create table ggs_admin.exceptions (
    rep_name      varchar2(8) ,
    table_name      varchar2(61) ,
    errno      number ,
    dberrmsg      varchar2(4000) ,
    optype               varchar2(20) ,
    errtype           varchar2(20) ,
    logrba               number ,
    logposition          number ,
    committimestamp      timestamp,
    CONSTRAINT pk_exceptions PRIMARY KEY (logrba, logposition, committimestamp)
    USING INDEX
    TABLESPACE INDX1
    TABLESPACE dbdat1
    My replication parameter is-
    GGSCI (db) 1> view params rep2
    -- Replicator parameter file to apply changes
    REPLICAT rep2
    ASSUMETARGETDEFS
    USERID ggs_admin, PASSWORD ggs_admin
    DISCARDFILE /u01/app/oracle/product/gg/dirdat/rep2_discard.dsc, PURGE
    -- Start of the macro
    MACRO #exception_handler
    BEGIN
    , TARGET ggs_admin.exceptions
    , COLMAP ( rep_name = "REP2"
    , table_name = @GETENV ("GGHEADER", "TABLENAME")
    , errno = @GETENV ("LASTERR", "DBERRNUM")
    , dberrmsg = @GETENV ("LASTERR", "DBERRMSG")
    , optype = @GETENV ("LASTERR", "OPTYPE")
    , errtype = @GETENV ("LASTERR", "ERRTYPE")
    , logrba = @GETENV ("GGHEADER", "LOGRBA")
    , logposition = @GETENV ("GGHEADER", "LOGPOSITION")
    , committimestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP"))
    , INSERTALLRECORDS
    , EXCEPTIONSONLY;
    END;
    -- End of the macro
    REPERROR (DEFAULT, EXCEPTION)
    --REPERROR (-1, EXCEPTION)
    --REPERROR (-1403, EXCEPTION)
    MAP scr.order_items, TARGET scr.order_items;
    MAP scr.order_items #exception_handler();
    GGSCI (db) 2>view params rep2
    MAP resolved (entry scr.order_items):
    MAP "scr"."order_items" TARGET ggs_admin.exceptions , COLMAP ( rep_name = "REP2" , table_name = @GETENV ("GGHEADER", "TABLENAME") , errno = @GETENV ("LASTERR", "DB
    ERRNUM") , dberrmsg = @GETENV ("LASTERR", "DBERRMSG") , optype = @GETENV ("LASTERR", "OPTYPE") , errtype = @GETENV ("LASTERR", "ERRTYPE") , logrba = @GETENV ("GGHEADER"
    , "LOGRBA") , logposition = @GETENV ("GGHEADER", "LOGPOSITION") , committimestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP")) , INSERTALLRECORDS , EXCEPTIONSONLY;;
    Using the following key columns for target table GGS_ADMIN.EXCEPTIONS: LOGRBA, LOGPOSITION, COMMITTIMESTAMP.
    2012-08-30 09:09:00 WARNING OGG-01154 SQL error 1403 mapping scr.order_items to scr.order_items OCI Error ORA-01403: no data found, SQL <DELETE FROM "scr"."order_items" WHERE "SUBSCRIBER_ID" = :b0>.
    2012-08-30 09:09:00 WARNING OGG-00869 OCI Error ORA-00001: unique constraint (GGS_ADMIN.PK_EXCEPTIONS) violated (status = 1). INSERT INTO "GGS_ADMIN"."EXCEPTIONS" ("R
    EP_NAME","TABLE_NAME","ERRNO","DBERRMSG","OPTYPE","ERRTYPE","LOGRBA","LOGPOSITION","COMMITTIMESTAMP") VALUES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8).
    2012-08-30 09:09:00 WARNING OGG-01004 Aborted grouped transaction on 'GGS_ADMIN.EXCEPTIONS', Database error 1 (OCI Error ORA-00001: unique constraint (GGS_ADMIN.PK_EX
    CEPTIONS) violated (status = 1). INSERT INTO "GGS_ADMIN"."EXCEPTIONS" ("REP_NAME","TABLE_NAME","ERRNO","DBERRMSG","OPTYPE","ERRTYPE","LOGRBA","LOGPOSITION","COMMITTIMES
    TAMP") VALUES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8)).
    2012-08-30 09:09:00 WARNING OGG-01003 Repositioning to rba 92383 in seqno 8.
    2012-08-30 09:09:00 WARNING OGG-01154 SQL error 1403 mapping scr.order_items to scr.order_items OCI Error ORA-01403: no data found, SQL <DELETE FROM "scr"."order_items" WHERE "SUBSCRIBER_ID" = :b0>.
    2012-08-30 09:09:00 WARNING OGG-01154 SQL error 1 mapping scr.order_items to GGS_ADMIN.EXCEPTIONS OCI Error ORA-00001: unique constraint (GGS_ADMIN.PK_EXCEPTIONS)
    violated (status = 1). INSERT INTO "GGS_ADMIN"."EXCEPTIONS" ("REP_NAME","TABLE_NAME","ERRNO","DBERRMSG","OPTYPE","ERRTYPE","LOGRBA","LOGPOSITION","COMMITTIMESTAMP") VAL
    UES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8).
    2012-08-30 09:09:00 WARNING OGG-01003 Repositioning to rba 92383 in seqno 8.
    When I am running command
    select * from exceptions;
    no row selected.
    Please help. Why duplicat rows trying to insert in Exception table.

    Remove (disable) the constraint on the exceptions table and see if inserts will take place. Do you really need that primary key?

Maybe you are looking for

  • Auto update of PO price after del. date change

    We use price date category=2 , "Delivery date" for our materials.  In ME22N, the delivery date is changed.  Message 06 484 appears at the bottom of the screen, "Delivery date changed (new price determination process may be necessary)". We want to hav

  • XML Report - Excel output automatic cell expand

    Hi, I created a XML report with Excel output. It works fine but I have 35 columns in that report. When I open the excel file - columns are not expanded, user needs to expand it manually. But It should automatically expanded when the user opens the re

  • Xref_data in oracle soa suite 11g

    Hi, All the actual data will be stored in xref_data.We have created one more table by name xref_data_account which will be the same structure of xref_data. But when we tried to populating in xref_data_account we get an error that "INF" column is not

  • Best method to access archived data

    We are archiving off General Ledger data from JRNL_LN and JRNL_HEADER from our production system to a reporting environment. The customer wants to have a content reference that will allow them to read the archived journal data in the other environmen

  • Problems creating the Master Repository with MS SQL Server 2000

    Hello guys! I can't create the Master Repository with MS SQL Server 2000 database. Wath is the correct adress in the URL? I select the Driver: com.microsoft.jdbc.sqlserver.SQLServerDriver and the URL: *jdbc:microsoft:sqlserver://<host>:<port>;SelectM