Handling content in webapp

Hi all,
I'm running a multilingual site that contains a lot of content (more then 1000 pages) and it also involves minimal personalization and of course some business logic in it.
I'm in a process of evaluating a CMS that will assist me working with content updates by non technical people (contributors) but the problem I'm encountering that I cannot add my business logic to these CMS products but i have to built my site by what this tool is offering.
Does anyone encountered the same problem?
What alternatives do I have to let contributors to edit content without any IT assistant?
10x
Message was edited by:
mors1

If you don't want to use CMS and want to build something on your own then, ofcourse the editors will have to wait till your custom product is completely finished so they can login to add their stories.
If you want to use CMS and want to modify it, then the editors could begin to use the existing CMS , while you are modifying it . Once you are finished modifying, you my have to move all the database of stories to a new database (if you modified the database structure) .
Or the editors may have to wait until you finish modifying an existing CMS system, if you don't want to deal with integrating the unmodified version with the modified one.

Similar Messages

  • Can we handle content convertion for TabDelimiter flat file in JMS

    Hi,
    Is it possible to handle content conversion for TabDelimiter flat file in JMS (Not in FILE adapter).
    If possible .. can you please explain.
    Regards,
    Siva.

    Hi, Siva:
    Yes, this is possible.
    The way that JMS adapter to handle content cnversion is similar to the way file adapter does.
    Different from file adapter, you do not have to specify "Content Conversion" as transport protocol, you need to use transformation bean (localejbs/AF_Modules/MessageTransformBean) in Module tab.
    Check page 23 of the following link:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a05b2347-01e7-2910-ceac-c45577e574e0
    Liang

  • Best practice to handle contents greater than 1 TB

    Hello All,
    I am using Sharepoint 2010 and I need to know whats the best practice to handle contents greater than 1 TB
    Specifics
    1) Contents will be collection of images (Jpeg format) and collectively the sizes can go above 1 TB till 10 TB or more
    2) Image will be uploaded to sharepoint though webservice
    So any of below option suitable? if not, then any other option?
    - Document Library
    - Document Center
    - Record Center
    - Asset Library
    - Picture Library
    Thanks in advance ...

    Theres several aspects to this.
    Large lists:
    http://technet.microsoft.com/en-gb/library/cc262813%28v=office.14%29.aspx
    A blog summarising large databases here:
    http://blogs.msdn.com/b/pandrew/archive/2011/07/08/articles-about-scaling-sharepoint-to-large-content-database-capacity.aspx
    Boundaries and limits:
    http://technet.microsoft.com/en-us/library/cc262787%28v=office.14%29.aspx#ContentDB
    If at all possible make your web service clever enough to split content over multiple site collections to allow you to have smaller individual databases.
    It can be done but you need to do a lot of reading on this to do it well. You'll also need a good DBA team to maintain the environment.

  • Manage Content via WebApp

    Hi All,
    I want to manage testimonial on my site in BC for this I use webApp by this I can insert testimonial via Admin panel and testimonial display on front end.
    I've create a webapp for this and insert the testimonial and my testimonial output look like this :
    1. Testimonial 2
    2. Testimonial 3
    3. Testimonial 1
    and when I click on the above it take me to the next page and shows the testimonial I use All Listing which provide me the following code which is :
    {module_webapps,20630,a,,,,,,,}
    What I want is to display testimonial in the following format :
    Testimonial 1 content goes here....
    Testimonial 2 content goes here....
    Testimonial 3 content goes here....
    Or is there any other way to manage testimonial where admin can insert the testimonail and dispaly in frontend.
    Please help me that how I can show the testimonial in the above format.
    Look forward to hear from anyone.
    Regards,
    Rony

    In the BC Admin area goto Web Apps and click your Testimonial Web App.  On the next screen click the "Edit Web App Settings" button.  Next, click the "Layout" tab on top which will bring you to the layouts for your web app.
    You can update these layouts however you wish.  It looks like with the {module_webapps} tag you are using that you are using the default List layout so you'll want to update/edit the default list layout. By default, BC generates some basic HTML layout for you with some TABLE code which is messy so you can easily update it.
    Guarav above wants to know what fields you included but every Web App has a title and content by default so you can easily get your Testimonial to look how you'd like with the following List Layout HTML:
    <p>{tag_name_nolink} {tag_description}</p>
    Replace your List Layout with the above code and when you use {module_webapps} to display a list of web apps it will use this layout to display them.  You can add other fields that you added to your list layout as well.  Let's say you added a field called "Job Title" to your Testimonials Web app and wanted to include it when you used {module_webapps} to list your web app items.  Edit that list layout again and add {tag_job title} (notice the space-- if your field in your web app has a space, be sure to code it that way in your {tag_})  If you named your field "JobTitle" the tag would be {tag_jobtitle} (no space).
    Good luck.

  • Handling Content Events SAXParser

    In SAXParser tutorial :
    public void startElement(String namespaceURI,
    String sName, // simple name (localName)
    String qName, // qualified name
    Attributes attrs)
    throws SAXException
    String eName = sName; // element name
    if ("".equals(eName)) eName = qName; // namespaceAware = false
    emit("<"+eName);
    Note that when the startElement() method is invoked, the simple name ("local name") for elements and attributes could turn out to be the empty string, "if namespace processing was not enabled". The code handles that case by using the qualifed name whenever the simple name is the empty string.
    My question is: when(how) namespace processing is enabled?
    I always obtain: sName="";

    It's possible that namespace handling is enabled, but that doesn't require your element names to be in a namespace. Why don't you just do some debugging and see what you are getting in sname and qname?

  • PL/SQL 101 : Exception Handling

    Frequently I see questions and issues around the use of Exception/Error Handling in PL/SQL.  More often than not the issue comes from the questioners misunderstanding about how PL/SQL is constructed and executed, so I thought I'd write a small article covering the key concepts to give a clear picture of how it all hangs together. (Note: the examples are just showing examples of the exception handling structure, and should not be taken as truly valid code for ways of handling things)
    Exception Handling
    Contents
    1. Understanding Execution Blocks (part 1)
    2. Execution of the Execution Block
    3. Exceptions
    4. Understanding Execution Blocks (part 2)
    5. How to continue exection of statements after an exception
    6. User defined exceptions
    7. Line number of exception
    8. Exceptions within code within the exception block
    1. Understanding Execution Blocks (part 1)
    The first thing that one needs to understand is almost taking us back to the basics of PL/SQL... how a PL/SQL execution block is constructed.
    Essentially an execution block is made of 3 sections...
    +---------------------------+
    |    Declaration Section    |
    +---------------------------+
    |    Statements  Section    |
    +---------------------------+
    |     Exception Section     |
    +---------------------------+
    The Declaration section is the part defined between the PROCEDURE/FUNCTION header or the DECLARE keyword (for anonymous blocks) and the BEGIN keyword.  (Optional section)
    The Statements section is where your code goes and lies between the BEGIN keyword and the EXCEPTION keyword (or END keyword if there is no EXCEPTION section).  (Mandatory section)
    The Exception section is where any exception handling goes and lies between the EXCEPTION keyword at the END keyword. (Optional section)
    Example of an anonymous block...
    DECLARE
      .. declarative statements go here ..
    BEGIN
      .. code statements go here ..
    EXCEPTION
      .. exception handlers go here ..
    END;
    Example of a procedure/function block...
    [CREATE OR REPLACE] (PROCEDURE|FUNCTION) <proc or fn name> [(<parameters>)] [RETURN <datatype>] (IS|AS)
      .. declarative statements go here ..
    BEGIN
      .. code statements go here ..
    EXCEPTION
      .. exception handlers go here ..
    END;
    (Note: The same can also be done for packages, but let's keep it simple)
    2. Execution of the Execution Block
    This may seem a simple concept, but it's surprising how many people have issues showing they haven't grasped it.  When an Execution block is entered, the declaration section is processed, creating a scope of variables, types , cursors, etc. to be visible to the execution block and then execution enters into the Statements section.  Each statment in the statements section is executed in turn and when the execution completes the last statment the execution block is exited back to whatever called it.
    3. Exceptions
    Exceptions generally happen during the execution of statements in the Statements section.  When an exception happens the execution of statements jumps immediately into the exception section.  In this section we can specify what exceptions we wish to 'capture' or 'trap' and do one of the two following things...
    (Note: The exception section still has access to all the declared items in the declaration section)
    3.i) Handle the exception
    We do this when we recognise what the exception is (most likely it's something we expect to happen) and we have a means of dealing with it so that our application can continue on.
    Example...
    (without the exception handler the exception is passed back to the calling code, in this case SQL*Plus)
    SQL> ed
    Wrote file afiedt.buf
      1  declare
      2    v_name VARCHAR2(20);
      3  begin
      4    select ename
      5    into   v_name
      6    from   emp
      7    where  empno = &empno;
      8    dbms_output.put_line(v_name);
      9* end;
    SQL> /
    Enter value for empno: 123
    old   7:   where  empno = &empno;
    new   7:   where  empno = 123;
    declare
    ERROR at line 1:
    ORA-01403: no data found
    ORA-06512: at line 4
    (with an exception handler, we capture the exception, handle it how we want to, and the calling code is happy that there is no error for it to report)
    SQL> ed
    Wrote file afiedt.buf
      1  declare
      2    v_name VARCHAR2(20);
      3  begin
      4    select ename
      5    into   v_name
      6    from   emp
      7    where  empno = &empno;
      8    dbms_output.put_line(v_name);
      9  exception
    10    when no_data_found then
    11      dbms_output.put_line('There is no employee with this employee number.');
    12* end;
    SQL> /
    Enter value for empno: 123
    old   7:   where  empno = &empno;
    new   7:   where  empno = 123;
    There is no employee with this employee number.
    PL/SQL procedure successfully completed.
    3.ii) Raise the exception
    We do this when:-
    a) we recognise the exception, handle it but still want to let the calling code know that it happened
    b) we recognise the exception, wish to log it happened and then let the calling code deal with it
    c) we don't recognise the exception and we want the calling code to deal with it
    Example of b)
    SQL> ed
    Wrote file afiedt.buf
      1  declare
      2    v_name VARCHAR2(20);
      3    v_empno NUMBER := &empno;
      4  begin
      5    select ename
      6    into   v_name
      7    from   emp
      8    where  empno = v_empno;
      9    dbms_output.put_line(v_name);
    10  EXCEPTION
    11    WHEN no_data_found THEN
    12      INSERT INTO sql_errors (txt)
    13      VALUES ('Search for '||v_empno||' failed.');
    14      COMMIT;
    15      RAISE;
    16* end;
    SQL> /
    Enter value for empno: 123
    old   3:   v_empno NUMBER := &empno;
    new   3:   v_empno NUMBER := 123;
    declare
    ERROR at line 1:
    ORA-01403: no data found
    ORA-06512: at line 15
    SQL> select * from sql_errors;
    TXT
    Search for 123 failed.
    SQL>
    Example of c)
    SQL> ed
    Wrote file afiedt.buf
      1  declare
      2    v_name VARCHAR2(20);
      3    v_empno NUMBER := &empno;
      4  begin
      5    select ename
      6    into   v_name
      7    from   emp
      8    where  empno = v_empno;
      9    dbms_output.put_line(v_name);
    10  EXCEPTION
    11    WHEN no_data_found THEN
    12      INSERT INTO sql_errors (txt)
    13      VALUES ('Search for '||v_empno||' failed.');
    14      COMMIT;
    15      RAISE;
    16    WHEN others THEN
    17      RAISE;
    18* end;
    SQL> /
    Enter value for empno: 'ABC'
    old   3:   v_empno NUMBER := &empno;
    new   3:   v_empno NUMBER := 'ABC';
    declare
    ERROR at line 1:
    ORA-06502: PL/SQL: numeric or value error: character to number conversion error
    ORA-06512: at line 3
    SQL> select * from sql_errors;
    TXT
    Search for 123 failed.
    SQL>
    As you can see from the sql_errors log table, no log was written so the WHEN others exception was the exception that raised the error to the calling code (SQL*Plus)
    4. Understanding Execution Blocks (part 2)
    Ok, so now we understand the very basics of an execution block and what happens when an exception happens.  Let's take it a step further...
    Execution blocks are not just a single simple block in most cases.  Often, during our statements section we have a need to call some reusable code and we do that by calling a procedure or function.  Effectively this nests the procedure or function's code as another execution block within the current statement section so, in terms of execution, we end up with something like...
    +---------------------------------+
    |    Declaration Section          |
    +---------------------------------+
    |    Statements  Section          |
    |            .                    |
    |  +---------------------------+  |
    |  |    Declaration Section    |  |
    |  +---------------------------+  |
    |  |    Statements  Section    |  |
    |  +---------------------------+  |
    |  |     Exception Section     |  |
    |  +---------------------------+  |
    |            .                    |
    +---------------------------------+
    |     Exception Section           |
    +---------------------------------+
    Example... (Note: log_trace just writes some text to a table for tracing)
    SQL> create or replace procedure a as
      2    v_dummy NUMBER := log_trace('Procedure A''s Declaration Section');
      3  begin
      4    v_dummy := log_trace('Procedure A''s Statement Section');
      5    v_dummy := 1/0; -- cause an exception
      6  exception
      7    when others then
      8      v_dummy := log_trace('Procedure A''s Exception Section');
      9      raise;
    10  end;
    11  /
    Procedure created.
    SQL> create or replace procedure b as
      2    v_dummy NUMBER := log_trace('Procedure B''s Declaration Section');
      3  begin
      4    v_dummy := log_trace('Procedure B''s Statement Section');
      5    a; -- HERE the execution passes to the declare/statement/exception sections of A
      6  exception
      7    when others then
      8      v_dummy := log_trace('Procedure B''s Exception Section');
      9      raise;
    10  end;
    11  /
    Procedure created.
    SQL> exec b;
    BEGIN b; END;
    ERROR at line 1:
    ORA-01476: divisor is equal to zero
    ORA-06512: at "SCOTT.B", line 9
    ORA-06512: at line 1
    SQL> select * from code_trace;
    TXT
    Procedure B's Declaration Section
    Procedure B's Statement Section
    Procedure A's Declaration Section
    Procedure A's Statement Section
    Procedure A's Exception Section
    Procedure B's Exception Section
    6 rows selected.
    SQL>
    Likewise, execution blocks can be nested deeper and deeper.
    5. How to continue exection of statements after an exception
    One of the common questions asked is how to return execution to the statement after the one that created the exception and continue on.
    Well, firstly, you can only do this for statements you expect to raise an exception, such as when you want to check if there is no data found in a query.
    If you consider what's been shown above you could put any statement you expect to cause an exception inside it's own procedure or function with it's own exception section to handle the exception without raising it back to the calling code.  However, the nature of procedures and functions is really to provide a means of re-using code, so if it's a statement you only use once it seems a little silly to go creating individual procedures for these.
    Instead, you nest execution blocks directly, to give the same result as shown in the diagram at the start of part 4 of this article.
    SQL> ed
    Wrote file afiedt.buf
      1  create or replace procedure b (p_empno IN VARCHAR2) as
      2    v_dummy NUMBER := log_trace('Procedure B''s Declaration Section');
      3  begin
      4    v_dummy := log_trace('Procedure B''s Statement Section');
      5    -- Here we start another execution block nested in the first one...
      6    declare
      7      v_dummy NUMBER := log_trace('Nested Block Declaration Section');
      8    begin
      9      v_dummy := log_trace('Nested Block Statement Section');
    10      select empno
    11        into   v_dummy
    12        from   emp
    13       where  empno = p_empno; -- Note: the parameters and variables from
                                         parent execution block are available to use!
    14    exception
    15      when no_data_found then
    16        -- This is an exception we can handle so we don't raise it
    17        v_dummy := log_trace('No employee was found');
    18        v_dummy := log_trace('Nested Block Exception Section - Exception Handled');
    19      when others then
    20        -- Other exceptions we can't handle so we raise them
    21        v_dummy := log_trace('Nested Block Exception Section - Exception Raised');
    22        raise;
    23    end;
    24    -- ...Here endeth the nested execution block
    25    -- As the nested block handled it's exception we come back to here...
    26    v_dummy := log_trace('Procedure B''s Statement Section Continued');
    27  exception
    28    when others then
    29      -- We'll only get to here if an unhandled exception was raised
    30      -- either in the nested block or in procedure b's statement section
    31      v_dummy := log_trace('Procedure B''s Exception Section');
    32      raise;
    33* end;
    SQL> /
    Procedure created.
    SQL> exec b(123);
    PL/SQL procedure successfully completed.
    SQL> select * from code_trace;
    TXT
    Procedure B's Declaration Section
    Procedure B's Statement Section
    Nested Block Declaration Section
    Nested Block Statement Section
    No employee was found
    Nested Block Exception Section - Exception Handled
    Procedure B's Statement Section Continued
    7 rows selected.
    SQL> truncate table code_trace;
    Table truncated.
    SQL> exec b('ABC');
    BEGIN b('ABC'); END;
    ERROR at line 1:
    ORA-01722: invalid number
    ORA-06512: at "SCOTT.B", line 32
    ORA-06512: at line 1
    SQL> select * from code_trace;
    TXT
    Procedure B's Declaration Section
    Procedure B's Statement Section
    Nested Block Declaration Section
    Nested Block Statement Section
    Nested Block Exception Section - Exception Raised
    Procedure B's Exception Section
    6 rows selected.
    SQL>
    You can see from this that, very simply, the code that we expected may have an exception was able to either handle the exception and return to the outer execution block to continue execution, or if an unexpected exception occurred then it was able to be raised up to the outer exception section.
    6. User defined exceptions
    There are three sorts of 'User Defined' exceptions.  There are logical situations (e.g. business logic) where, for example, certain criteria are not met to complete a task, and there are existing Oracle errors that you wish to give a name to in order to capture them in the exception section.  The third is raising your own exception messages with our own exception numbers.  Let's look at the first one...
    Let's say I have tables which detail stock availablility and reorder levels...
    SQL> select * from reorder_level;
       ITEM_ID STOCK_LEVEL
             1          20
             2          20
             3          10
             4           2
             5           2
    SQL> select * from stock;
       ITEM_ID ITEM_DESC  STOCK_LEVEL
             1 Pencils             10
             2 Pens                 2
             3 Notepads            25
             4 Stapler              5
             5 Hole Punch           3
    SQL>
    Now, our Business has told the administrative clerk to check stock levels and re-order anything that is below the re-order level, but not to hold stock of more than 4 times the re-order level for any particular item.  As an IT department we've been asked to put together an application that will automatically produce the re-order documents upon the clerks request and, because our company is so tight-ar*ed about money, they don't want to waste any paper with incorrect printouts so we have to ensure the clerk can't order things they shouldn't.
    SQL> ed
    Wrote file afiedt.buf
      1  create or replace procedure re_order(p_item_id NUMBER, p_quantity NUMBER) is
      2    cursor cur_stock_reorder is
      3      select s.stock_level
      4            ,r.stock_level as reorder_level
      5            ,(r.stock_level*4) as reorder_limit
      6      from stock s join reorder_level r on (s.item_id = r.item_id)
      7      where s.item_id = p_item_id;
      8    --
      9    v_stock cur_stock_reorder%ROWTYPE;
    10  begin
    11    OPEN cur_stock_reorder;
    12    FETCH cur_stock_reorder INTO v_stock;
    13    IF cur_stock_reorder%NOTFOUND THEN
    14      RAISE no_data_found;
    15    END IF;
    16    CLOSE cur_stock_reorder;
    17    --
    18    IF v_stock.stock_level >= v_stock.reorder_level THEN
    19      -- Stock is not low enough to warrant an order
    20      DBMS_OUTPUT.PUT_LINE('Stock has not reached re-order level yet!');
    21    ELSE
    22      IF v_stock.stock_level + p_quantity > v_stock.reorder_limit THEN
    23        -- Required amount is over-ordering
    24        DBMS_OUTPUT.PUT_LINE('Quantity specified is too much.  Max for this item: '
                                     ||to_char(v_stock.reorder_limit-v_stock.stock_level));
    25      ELSE
    26        DBMS_OUTPUT.PUT_LINE('Order OK.  Printing Order...');
    27        -- Here goes our code to print the order
    28      END IF;
    29    END IF;
    30    --
    31  exception
    32    WHEN no_data_found THEN
    33      CLOSE cur_stock_reorder;
    34      DBMS_OUTPUT.PUT_LINE('Invalid Item ID.');
    35* end;
    SQL> /
    Procedure created.
    SQL> exec re_order(10,100);
    Invalid Item ID.
    PL/SQL procedure successfully completed.
    SQL> exec re_order(3,40);
    Stock has not reached re-order level yet!
    PL/SQL procedure successfully completed.
    SQL> exec re_order(1,100);
    Quantity specified is too much.  Max for this item: 70
    PL/SQL procedure successfully completed.
    SQL> exec re_order(2,50);
    Order OK.  Printing Order...
    PL/SQL procedure successfully completed.
    SQL>
    Ok, so that code works, but it's a bit messy with all those nested IF statements. Is there a cleaner way perhaps?  Wouldn't it be nice if we could set up our own exceptions...
    SQL> ed
    Wrote file afiedt.buf
      1  create or replace procedure re_order(p_item_id NUMBER, p_quantity NUMBER) is
      2    cursor cur_stock_reorder is
      3      select s.stock_level
      4            ,r.stock_level as reorder_level
      5            ,(r.stock_level*4) as reorder_limit
      6      from stock s join reorder_level r on (s.item_id = r.item_id)
      7      where s.item_id = p_item_id;
      8    --
      9    v_stock cur_stock_reorder%ROWTYPE;
    10    --
    11    -- Let's declare our own exceptions for business logic...
    12    exc_not_warranted EXCEPTION;
    13    exc_too_much      EXCEPTION;
    14  begin
    15    OPEN cur_stock_reorder;
    16    FETCH cur_stock_reorder INTO v_stock;
    17    IF cur_stock_reorder%NOTFOUND THEN
    18      RAISE no_data_found;
    19    END IF;
    20    CLOSE cur_stock_reorder;
    21    --
    22    IF v_stock.stock_level >= v_stock.reorder_level THEN
    23      -- Stock is not low enough to warrant an order
    24      RAISE exc_not_warranted;
    25    END IF;
    26    --
    27    IF v_stock.stock_level + p_quantity > v_stock.reorder_limit THEN
    28      -- Required amount is over-ordering
    29      RAISE exc_too_much;
    30    END IF;
    31    --
    32    DBMS_OUTPUT.PUT_LINE('Order OK.  Printing Order...');
    33    -- Here goes our code to print the order
    34    --
    35  exception
    36    WHEN no_data_found THEN
    37      CLOSE cur_stock_reorder;
    38      DBMS_OUTPUT.PUT_LINE('Invalid Item ID.');
    39    WHEN exc_not_warranted THEN
    40      DBMS_OUTPUT.PUT_LINE('Stock has not reached re-order level yet!');
    41    WHEN exc_too_much THEN
    42      DBMS_OUTPUT.PUT_LINE('Quantity specified is too much.  Max for this item: '
                                  ||to_char(v_stock.reorder_limit-v_stock.stock_level));
    43* end;
    SQL> /
    Procedure created.
    SQL> exec re_order(10,100);
    Invalid Item ID.
    PL/SQL procedure successfully completed.
    SQL> exec re_order(3,40);
    Stock has not reached re-order level yet!
    PL/SQL procedure successfully completed.
    SQL> exec re_order(1,100);
    Quantity specified is too much.  Max for this item: 70
    PL/SQL procedure successfully completed.
    SQL> exec re_order(2,50);
    Order OK.  Printing Order...
    PL/SQL procedure successfully completed.
    SQL>
    That's better.  And now we don't have to use all those nested IF statements and worry about it accidently getting to code that will print the order out as, once one of our user defined exceptions is raised, execution goes from the Statements section into the Exception section and all handling of errors is done in one place.
    Now for the second sort of user defined exception...
    A new requirement has come in from the Finance department who want to have details shown on the order that show a re-order 'indicator' based on the formula ((maximum allowed stock - current stock)/re-order quantity), so this needs calculating and passing to the report...
    SQL> ed
    Wrote file afiedt.buf
      1  create or replace procedure re_order(p_item_id NUMBER, p_quantity NUMBER) is
      2    cursor cur_stock_reorder is
      3      select s.stock_level
      4            ,r.stock_level as reorder_level
      5            ,(r.stock_level*4) as reorder_limit
      6            ,(((r.stock_level*4)-s.stock_level)/p_quantity) as finance_factor
      7      from stock s join reorder_level r on (s.item_id = r.item_id)
      8      where s.item_id = p_item_id;
      9    --
    10    v_stock cur_stock_reorder%ROWTYPE;
    11    --
    12    -- Let's declare our own exceptions for business logic...
    13    exc_not_warranted EXCEPTION;
    14    exc_too_much      EXCEPTION;
    15  begin
    16    OPEN cur_stock_reorder;
    17    FETCH cur_stock_reorder INTO v_stock;
    18    IF cur_stock_reorder%NOTFOUND THEN
    19      RAISE no_data_found;
    20    END IF;
    21    CLOSE cur_stock_reorder;
    22    --
    23    IF v_stock.stock_level >= v_stock.reorder_level THEN
    24      -- Stock is not low enough to warrant an order
    25      RAISE exc_not_warranted;
    26    END IF;
    27    --
    28    IF v_stock.stock_level + p_quantity > v_stock.reorder_limit THEN
    29      -- Required amount is over-ordering
    30      RAISE exc_too_much;
    31    END IF;
    32    --
    33    DBMS_OUTPUT.PUT_LINE('Order OK.  Printing Order...');
    34    -- Here goes our code to print the order, passing the finance_factor
    35    --
    36  exception
    37    WHEN no_data_found THEN
    38      CLOSE cur_stock_reorder;
    39      DBMS_OUTPUT.PUT_LINE('Invalid Item ID.');
    40    WHEN exc_not_warranted THEN
    41      DBMS_OUTPUT.PUT_LINE('Stock has not reached re-order level yet!');
    42    WHEN exc_too_much THEN
    43      DBMS_OUTPUT.PUT_LINE('Quantity specified is too much.  Max for this item: '
                                  ||to_char(v_stock.reorder_limit-v_stock.stock_level));
    44* end;
    SQL> /
    Procedure created.
    SQL> exec re_order(2,40);
    Order OK.  Printing Order...
    PL/SQL procedure successfully completed.
    SQL> exec re_order(2,0);
    BEGIN re_order(2,0); END;
    ERROR at line 1:
    ORA-01476: divisor is equal to zero
    ORA-06512: at "SCOTT.RE_ORDER", line 17
    ORA-06512: at line 1
    SQL>
    Hmm, there's a problem if the person specifies a re-order quantity of zero.  It raises an unhandled exception.
    Well, we could put a condition/check into our code to make sure the parameter is not zero, but again we would be wrapping our code in an IF statement and not dealing with the exception in the exception handler.
    We could do as we did before and just include a simple IF statement to check the value and raise our own user defined exception but, in this instance the error is standard Oracle error (ORA-01476) so we should be able to capture it inside the exception handler anyway... however...
    EXCEPTION
      WHEN ORA-01476 THEN
    ... is not valid.  What we need is to give this Oracle error a name.
    This is done by declaring a user defined exception as we did before and then associating that name with the error number using the PRAGMA EXCEPTION_INIT statement in the declaration section.
    SQL> ed
    Wrote file afiedt.buf
      1  create or replace procedure re_order(p_item_id NUMBER, p_quantity NUMBER) is
      2    cursor cur_stock_reorder is
      3      select s.stock_level
      4            ,r.stock_level as reorder_level
      5            ,(r.stock_level*4) as reorder_limit
      6            ,(((r.stock_level*4)-s.stock_level)/p_quantity) as finance_factor
      7      from stock s join reorder_level r on (s.item_id = r.item_id)
      8      where s.item_id = p_item_id;
      9    --
    10    v_stock cur_stock_reorder%ROWTYPE;
    11    --
    12    -- Let's declare our own exceptions for business logic...
    13    exc_not_warranted EXCEPTION;
    14    exc_too_much      EXCEPTION;
    15    --
    16    exc_zero_quantity EXCEPTION;
    17    PRAGMA EXCEPTION_INIT(exc_zero_quantity, -1476);
    18  begin
    19    OPEN cur_stock_reorder;
    20    FETCH cur_stock_reorder INTO v_stock;
    21    IF cur_stock_reorder%NOTFOUND THEN
    22      RAISE no_data_found;
    23    END IF;
    24    CLOSE cur_stock_reorder;
    25    --
    26    IF v_stock.stock_level >= v_stock.reorder_level THEN
    27      -- Stock is not low enough to warrant an order
    28      RAISE exc_not_warranted;
    29    END IF;
    30    --
    31    IF v_stock.stock_level + p_quantity > v_stock.reorder_limit THEN
    32      -- Required amount is over-ordering
    33      RAISE exc_too_much;
    34    END IF;
    35    --
    36    DBMS_OUTPUT.PUT_LINE('Order OK.  Printing Order...');
    37    -- Here goes our code to print the order, passing the finance_factor
    38    --
    39  exception
    40    WHEN exc_zero_quantity THEN
    41      DBMS_OUTPUT.PUT_LINE('Quantity of 0 (zero) is invalid.');
    42    WHEN no_data_found THEN
    43      CLOSE cur_stock_reorder;
    44      DBMS_OUTPUT.PUT_LINE('Invalid Item ID.');
    45    WHEN exc_not_warranted THEN
    46      DBMS_OUTPUT.PUT_LINE('Stock has not reached re-order level yet!');
    47    WHEN exc_too_much THEN
    48      DBMS_OUTPUT.PUT_LINE('Quantity specified is too much.  Max for this item: '
                                  ||to_char(v_stock.reorder_limit-v_stock.stock_level));
    49* end;
    SQL> /
    Procedure created.
    SQL> exec re_order(2,0);
    Quantity of 0 (zero) is invalid.
    PL/SQL procedure successfully completed.
    SQL>
    Lastly, let's look at raising our own exceptions with our own exception numbers...
    SQL> ed
    Wrote file afiedt.buf
      1  create or replace procedure re_order(p_item_id NUMBER, p_quantity NUMBER) is
      2    cursor cur_stock_reorder is
      3      select s.stock_level
      4            ,r.stock_level as reorder_level
      5            ,(r.stock_level*4) as reorder_limit
      6            ,(((r.stock_level*4)-s.stock_level)/p_quantity) as finance_factor
      7      from stock s join reorder_level r on (s.item_id = r.item_id)
      8      where s.item_id = p_item_id;
      9    --
    10    v_stock cur_stock_reorder%ROWTYPE;
    11    --
    12    exc_zero_quantity EXCEPTION;
    13    PRAGMA EXCEPTION_INIT(exc_zero_quantity, -1476);
    14  begin
    15    OPEN cur_stock_reorder;
    16    FETCH cur_stock_reorder INTO v_stock;
    17    IF cur_stock_reorder%NOTFOUND THEN
    18      RAISE no_data_found;
    19    END IF;
    20    CLOSE cur_stock_reorder;
    21    --
    22    IF v_stock.stock_level >= v_stock.reorder_level THEN
    23      -- Stock is not low enough to warrant an order
    24      [b]RAISE_APPLICATION_ERROR(-20000, 'Stock has not reached re-order level yet!');[/b]
    25    END IF;
    26    --
    27    IF v_stock.stock_level + p_quantity > v_stock.reorder_limit THEN
    28      -- Required amount is over-ordering
    29     

    its nice article, have put up this one the blog
    site,Nah, I don't have time to blog, but if one of the other Ace's/Experts wants to copy it to a blog with reference back to here (and all due credit given ;)) then that's fine by me.
    I'd go for a book like "Selected articles by OTN members" or something. Does anybody have a list of links of all those mentioned articles?Just these ones I've bookmarked...
    Introduction to regular expressions ... by CD
    When your query takes too long ... by Rob van Wijk
    How to pipeline a function with a dynamic number of columns? by ascheffer
    PL/SQL 101 : Exception Handling by BluShadow

  • SOAP Adapter:  Content Type Issue in WebServices via HTTP

    Hi,
    I have configured a Receiver SOAP adapter. When i had to test the message i had an HTTP 415 error.
    i found that the sender SOAP adpater that received this message is not capable of handling Content-Type: Application/XML i.e. which is being transmitted by the Receiver SOAP Adapter.
    Please let me know how to configure in the Receiver SOAP adapter so that the HTTP Content-Type would be TEXT/XML instead of Application/XML .
    Thanks in Advance,
    Venkatesh

    Hi Michal,
    I have created a Web service for a RFC function Module. The webservice is available in SOAMANAGER.
    It got activated also .  But whenever I tried to test, I am getting the below error,
    "Message Envelope not found. Probably Empty SOAP message"
            Request:
            POST /sap/bc/srt/rfc/sap/yotci_i015_linkp8sap/100/yotci_i015_linkp8sap/yotci_i015_linkp8sap HTTP/1.1
    Host: sapkrftewd01.krft.net:8030
    Content-Type: text/xml; charset=UTF-8
    Connection: close
    Authorization: <value is hidden>
    Content-Length: 657
    SOAPAction: ""
    <?xml version="1.0" encoding="UTF-8" ?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Header><sapsess:Session xmlns:sapsess="http://www.sap.com/webas/630/soap/features/session/"><enableSession>true</enableSession></sapsess:Session></SOAP-ENV:Header><SOAP-ENV:Body><ns1:YotciI015Linkp8sap xmlns:ns1='urn:sap-com:document:sap:soap:functions:mc-style'><IvParam1>POD</IvParam1><IvParam2>00006095</IvParam2><IvParam3>01/14/2009</IvParam3><IvParam4>PDF</IvParam4></ns1:YotciI015Linkp8sap></SOAP-ENV:Body></SOAP-ENV:Envelope>
             Response:
            HTTP/1.1 500 Message E 1S 406 cannot be processed in plugin mode HTTP
    content-type: text/xml; charset=utf-8
    content-length: 0
    accept: text/xml
    sap-srt_id: 20090224/141936/v1.00_final_6.40/49A4677A2D0736EDE10000000A3597E9
    server: SAP Web Application Server (1.0;700)
    Is this because of "do not use SOAP envelope" check?
    I didn't check this check box.
    If that is the error could you please tell me how to see the "do not use SOAP envelope"?
    Where can I find SOAP channel?
    I am very new to SOAP concept. 
    One JAVA application is going to invoke this Webservice from SAP.
    Please help me.
    Thanks,
    Bala.

  • How do I watch Flash video content on iPad2?

    A large amount of video content on the Internet was created in Adobe Flash format. The iPad2 does not support Flash, which limit's its utility on a number of the websites I frequent.  This shortcoming was a big surprise after I purchased the iPad. Is there an Apple app available or under development that can play Flash video? Other sites talk about cracking or other techniques to force Flash to run on the iPad, but I'd like to know what Apple is doing to plug this hole?

    You have three choices.
    1. Just forget about Flash as I have.
    2. Try the alternate browsers that King_Penguin suggests. Also search the App Store for specific apps that will handle content from specific sites.
    3. Return or sell your iPad and buy a device (other table or a laptop) that will handle the Flash sites you want to visit.
    You might also review the "More like this..." section to the right of this message column for moe threads on this topic.

  • Transport of PCD and Content objects through JDI.

    Hi all,
    Pls share the views about the trasport procedure for PCD and Content objects.
    Is it possible to transport PCD and Content objects through JDI?
    If it is possible, could you pls share how to configure the JDI setup?
    Thanks in advance,
    Kishore.

    Hi Kishroe,
    First, there is no supported, out of the box way to handle content objects in the JDI (now NWDI- NetWeaver Development Infrastructure) With that said, since it is a repository you could export your content package. Make it a zip file or something like that and add it to the repository.
    Again, I believe this is theoretically possible. I'm sure some of the other SDN members can provide an automated approach to do this.
    Good luck,
    John

  • Does Oracle XML Parser support Content Validation

    Hi there,
    Could someone out there give me a hint on whether the Oracle XML Parser has the capability of handling Content Validation? If yes, what's the mechanism behind it?
    From my understanding of the Oracle XML Parser, even with the validating mode turned on, the parser only validates the XML data against the DTD (if any), which involves checking whether or not the attribute names and element tags are legal, whether nested elements belong to where they are, and so on. But I dont see any Content Validation. And my guess is that this feature, namely Content Validation, is simply not supported in the current version of the Oracle XML Parser. Am I right?
    Any suggestion would be greatly appreciated. Thanks.
    ---Denali
    null

    Hi there,
    Could someone out there give me a hint on whether the Oracle XML Parser has the capability of handling Content Validation? If yes, what's the mechanism behind it?
    From my understanding of the Oracle XML Parser, even with the validating mode turned on, the parser only validates the XML data against the DTD (if any), which involves checking whether or not the attribute names and element tags are legal, whether nested elements belong to where they are, and so on. But I dont see any Content Validation. And my guess is that this feature, namely Content Validation, is simply not supported in the current version of the Oracle XML Parser. Am I right?
    Any suggestion would be greatly appreciated. Thanks.
    ---Denali
    null

  • Webapps Folder ?

    Hello,
    i have made a small website; All its class files are in folder
    c:\tomcat\webapps\examples\web-inf\classes\mysite\
    and all of the jsp pages are in
    c:\tomcat\webapps\examples\jsp\mysite\
    but, somebody told me there is some procedure to be followed like ...
    PROCEDURE
    make a folder named "mysite" in "webapps" and then make a folder
    "web-inf" and then folder named as "classes" and keep class files there.... Then set class path.
    i am using tomcat 4.1.27
    Now my question is,
    Please tell me these things,what to do?,where to keep class files and jsp pages, and how to change classpath.
    And also please tell me if i have to edit some other files like web.xml etc...
    Thanks in Advance ....
    you can also contact me at [email protected]

    Normally, the structure is like this:
    webapps/
    webapps/myapp/
    webapps/myapp/images/ (or other special content folders)
    webapps/myapp/WEB-INF/ (should be all caps, I think)
    webapps/myapp/WEB-INF/classes/
    webapps/myapp/WEB-INF/lib/
    webapps/myapp/WEB-INF/src/
    In the src directory, I put the web app class file sources in their package structure. I have a build script that compiles them to the classes director. In the classes directory goes your compiled class files in their package structure. I'm assuming you now about packages and directories (if not, you should start with something other then JSP).
    In the lib directory goes and jar files for other library packages.
    In the WEB-INF directory itself is the web.xml and any tag library definition files, etc.
    I usually just put my JSP pages into the myapp directory itself, but some people will put them in a jsp subdirectory there or something. I don't find that useful, personally.
    As for WAR files, I don't use them during development, only when needing to deploy the app. It seems to me a waste of time to create it and let it unpack to test.

  • Using a link in reader to browse to a webpage

    I'm pretty new to all of this, but here is what I'm trying to do:
    I work at a research facility, and we are wanting to be able to send PDF surveys and forms to people, and then let them click on an http submit button that will send the data to a JEE5 servlet that will persist the data into our database, so we can reduce manual entry.
    We made a simple PDF form in LiveCycle Designer 8, and I have the servlet working fine, in that it takes all of the information and and persists it to the database. the only thing left is we want to give the user some sort of results to let them know that the data was entered, and if possible show them some generated content, such as a score or results or something. The "preview pdf" window in the LiveCycle Designer can read html fine, so it shows everything as we want. However, plain adobe reader cant, it pops up an error saying "Cannot handle content type: text/html". Now the data is entered into the database fine, but the user thinks there was an error.
    I found an opensource java api (iText) that can generate pdfs and send them out in the response stream. Normal browsers recognize it fine, saving a pdf that can then be opened in adobe reader, but adobe reader still thinks its a text/html stream, and the LiveCycle Designer thinks the new pdf has not pages.
    if I could get the reader to display some sort of results page, that would be great, but really I would be satisfied with as little as the pop up window saying "Data submitted successfully".

    Hi,
    You need to load detailed page in same window after clicking a link in overview page?
    How you implemented overview page, is it a template or seperate html page?
    If it is a template then you can open detailed template in the same window from a link in overview page. For this you have to set open template in same window parameters in your link.
    Regards
    Baby

  • Help needed regarding Closest srever roles 11.3

    We are running 11.3 in an organization that supports 2100 pc's using zenworks. We have 3 primary servers, a sql server and an audit server. Lately we have been running into issues with our sql process hitting 100% cpu usage on our zen databse server and eventually crashing. During this time frame our primary servers go from 5/100 connection to the database up to 100/100 connections.
    We have not configured the closest server default rule too much, all default server rules point to server 1, 2 and 3. I am thinking we need to set one server as the default for content, another for the default for collection, and a third to be the default for authentication and configuration. Or would it be more efficient to have a location rule that pointed one building to server 1 to handle content, collection, authentication and configuration, the other building to server 2 to handle content, collection, authentication and configuration etc. Any thoughts?
    I find our current environment is somewhat unstable and I am sure it is due to a lack of configuration.
    Any help would be greatly appreciated.

    Hi
    I have 29 buildings and 7 primaries all blades connected to a SAN. 9200
    pc's. We set it up exactly as your are proposing to spread the load. I
    currently don't have any SAT's in place and I have gig fiber to all of the
    buildings with 2012sql that is a virtual. CPU load on servers is negligible
    and the SQL goes up and down in the 20% range. But you might be having
    something else going on. I'm not an SQL guy but you may need to have some
    maintenance done and get a very knowledgeable person take a look at the
    database.
    "jorton" wrote in message news:[email protected]..
    We are running 11.3 in an organization that supports 2100 pc's using
    zenworks. We have 3 primary servers, a sql server and an audit server.
    Lately we have been running into issues with our sql process hitting
    100% cpu usage on our zen databse server and eventually crashing. During
    this time frame our primary servers go from 5/100 connection to the
    database up to 100/100 connections.
    We have not configured the closest server default rule too much, all
    default server rules point to server 1, 2 and 3. I am thinking we need
    to set one server as the default for content, another for the default
    for collection, and a third to be the default for authentication and
    configuration. Or would it be more efficient to have a location rule
    that pointed one building to server 1 to handle content, collection,
    authentication and configuration, the other building to server 2 to
    handle content, collection, authentication and configuration etc. Any
    thoughts?
    I find our current environment is somewhat unstable and I am sure it is
    due to a lack of configuration.
    Any help would be greatly appreciated.
    jorton
    jorton's Profile: https://forums.novell.com/member.php?userid=157965
    View this thread: https://forums.novell.com/showthread.php?t=481984

  • How do I open a .nrl extension in firefox, currently it returns a string of text instead of opening the file with the default program.

    When I click on a .nrl file extension (belongs to Autonomy I-Manage Software) it returns a string of code (what is in the shortcut link) instead of following the link and returning the document. Is there a way to tell Forefox connect to the document that the shortcut is linked to? The .nrl file extension belongs to a piece of software called FileSite (document management system).

    '''Adding download actions''' is the relevant section of that article for your situation.
    Is the *.nrl file on a website or already saved to your PC?
    If it is on a website, the server may not be sending the appropriate Mime-Type telling Firefox how that file is to be handled - ''"Content-Disposition"''.
    Can you give us the URL of the webpage where you have this problem? <br />
    So we can see first hand what the issue is.

  • How to send the payload to a jsp using receiver Http adapter?

    Hi experts,
    I have this scenario from Legacy to XI to external app server.I have a test jsp to execute that functionality .Its a jsp which has 1 textarea named "test" and when I click on the submit buton I get a response back.This way I am able to test this independently.Now from XI when I am executing my scenario I am getting status code '1250' and message as ' http request(test) is null'.Now in the scenario in http adapter I just provide the target host : ip of server ,
    service number : port no ,
    path: the container or the request handler. But this scenario fails and gives me the above erroneous response.Now Basically I am not able to get how to send the value to the textarea "test"? please provide help as soon as possible.Do we have to put the name of the jsp in the "path" in http adapter and use prolog as test=.I tried this but it doesnt work.
    Is there any way to check the URL that it forms after appending the querystring in the url ...?
    So please provide help on this or suggest a solution to [email protected] as soon as possible.....
    Thanx in advance.
    Akshata

    hey Shekhar,
    thanx for that prompt reply but I have configured the communication channel in the same manner as suggested by u.
    actually I have this jsp page http://xx.xx.xx.xx:8080/abcdef/try/efg.jsp where there is a textarea "test" which has to be filled and there is a submit button.When I test this http client i.e the above jsp page independently then it goes to handler
    http://xx.xx.xx.xx:8080/abcdef/trial/    And it gives a proper response message after clicking on the submit button.
    now I want to carry out the same using receiver http adapter. I need to pass the value for this inputfield names "test" on that jsp . so right now I have configyured the adapter as
    addressing type: url
    target host : xx.xx.xx.xx
    service no:8080
    path : here I have given the path of handler i.e /abcdef/trial I tried giving the jsp page also but logically I guess it should be the handler.
    content type: text/xml; charset=iso-8859-1
    xml code: UTF-8
    Mask special characters (URL escaping) checked.
    now since the name of the inputfield is "test" in the prolog I gave test=
    But it doesnt work I get this error "http request parameter [test] is null" in the response message  which I guess suggests that it is not able to send the value for the field"test" to that handler.Please suggest how to send this and tell me if there are any other configurations that I have to do in the receiver communication channel.
    Thanx ,
    Akshata

Maybe you are looking for