public void selectOneChoice1_valueChangeListener(ValueChangeEvent valueChangeEvent) {
//for iterator name click binding tab in the jsf page
DCIteratorBinding listIter = getBindingsForDCB().findIteratorBinding(“yourViewObj1Iterator”);
int curIndex = (Integer)valueChangeEvent.getNewValue();
Row datRow = listIter.getRowAtRangeIndex(curIndex);
String name = (String)datRow.getAttribute(“Code”); //as in data control
}
Pl/Sql Exception
Exceptions
Oracle includes about 20 predefined exceptions (errors) – we can allow Oracle to raise these implicitly.
For errors that don’t fall into the predefined categories – declare in advance and allow oracle to raise an exception.
For problems that are not recognised as an error by Oracle – but still cause some difficulty within your application – declare a User Defined Error and raise it explicitly
i.e IF x >20 then RAISE …
Syntax:
EXCEPTION WHEN exception1 [OR exception2...]] THEN ... [WHEN exception3 [OR exception4...] THEN ...] [WHEN OTHERS THEN ...]
Where exception is the exception_name e.g. WHEN NO_DATA_FOUND… Only one handler is processed before leaving the block.
Trap non-predefined errors by declaring them You can also associate the error no. with a name so that you can write a specific handler.
This is done with the PRAGMA EXCEPION_INIT pragma.
PRAGMA (pseudoinstructions) indicates that an item is a ‘compiler directive’ Running this has no immediate effect but causes all subsequent references to the exception name to be interpreted as the associated Oracle Error.
–
Trapping a non-predefined Oracle server exception
DECLARE -- name for exception e_emps_remaining EXCEPTION PRAGMA_EXCEPTION_INIT ( e_emps_remaining, -2292); v_deptno dept.deptno%TYPE :=&p_deptno; BEGIN DELETE FROM dept WHERE deptno = v_deptno COMMIT; EXCEPTION WHEN e_emps_remaining THEN DBMS_OUTPUT.PUT_LINE ('Cannot remove dept '|| TO_CHAR(v_deptno) || '. Employees exist. '); END;
When an exception occurs you can identify the associated error code/message with two supplied functions SQLCODE and SQLERRM
SQLCODE – Number
SQLERRM – message
An example of using these:
DECLARE v_error_code NUMBER; v_error_message VARCHAR2(255); BEGIN ... EXCEPTION WHEN OTHERS THEN ROLLBACK; v_error_code := SQLCODE v_error_message := SQLERRM INSERT INTO t_errors VALUES ( v_error_code, v_error_message); END;
Trapping user-defined exceptions
DECLARE the exception
RAISE the exception
Handle the raised exception
e.g.
DECLARE e_invalid_product EXCEPTION BEGIN update PRODUCT SET descrip = '&prod_descr' WHERE prodid = &prodnoumber'; IF SQL%NOTFOUND THEN RAISE e_invalid_product; END IF; COMMIT; EXCEPTION WHEN e_invalid_product THEN DBMS_OUTPUT.PUT_LINE ('INVALID PROD NO'); END;
Propagation of Exception handling in sub blocks
If a sub block does not have a handler for a particular error it will propagate to the enclosing block – where it can be caught by more general exception handlers.
RAISE_APPLICATION_ERROR (error_no, message[,{TRUE|FALSE}]);
This procedure allows user defined error
messages from stored sub programs – call only from stored sub prog.
error_no = a user defined no (between -20000 and -20999)
TRUE = stack errors
FALSE = keep just last
This can either be used in the executable section of code or
the exception section
e.g.
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR (-2021,
‘manager not a valid employee’);
END;
Standard Exceptions, from the the STANDARD package
Oracle Exception Name |
Oracle Error |
Explanation |
DUP_VAL_ON_INDEX | ORA-00001 | You attempted to create a duplicate value in a field restricted by a unique index. |
TIMEOUT_ON_RESOURCE | ORA-00051 | A resource timed out, took too long. |
TRANSACTION_BACKED_OUT | ORA-00061 | The remote portion of a transaction has rolled back. |
INVALID_CURSOR | ORA-01001 | The cursor does not yet exist. The cursor must be OPENed before any FETCH cursor or CLOSE cursor operation. |
NOT_LOGGED_ON | ORA-01012 | You are not logged on. |
LOGIN_DENIED | ORA-01017 | Invalid username/password. |
NO_DATA_FOUND | ORA-01403 | No data was returned |
TOO_MANY_ROWS | ORA-01422 | You tried to execute a SELECT INTO statement and more than one row was returned. |
ZERO_DIVIDE | ORA-01476 | Divide by zero error. |
INVALID_NUMBER | ORA-01722 | Converting a string to a number was unsuccessful. |
STORAGE_ERROR | ORA-06500 | Out of memory. |
PROGRAM_ERROR | ORA-06501 | Generic "Contact Oracle support" message. |
VALUE_ERROR | ORA-06502 | You tried to perform an operation and there was a error on a conversion, truncation, or invalid constraining of numeric or character data. |
ROWTYPE_MISMATCH | ORA-06504 | |
CURSOR_ALREADY_OPEN | ORA-06511 | The cursor is already open. |
ACCESS_INTO_NULL | ORA-06530 | |
COLLECTION_IS_NULL | ORA-06531 |
Named exceptions
An exception can be given a name. In order to create such a named exceptions, two steps are necessary: first, it needs a line that readsexception_name exception
. Then, this exception must be connected to a number with the pragma exception_init(exception_name, exc-number)
. The number must be in the range -20999 through -20000 (these are negative numbers!).
create or replace package exc as some_exc exception; pragma exception_init(some_exc, -20005); procedure raise_exc; end exc; / create or replace package body exc as procedure raise_exc is begin raise some_exc; end raise_exc; end exc; / create or replace package use_exc as procedure do; end use_exc; / create or replace package body use_exc as procedure do is begin exc.raise_exc; exception when exc.some_exc then dbms_output.put_line('some_exc'); when others then dbms_output.put_line('others' ); end do; end use_exc; / set serveroutput on begin use_exc.do; end; /
The output:
some_exc
Reference -http://www.adp-gmbh.ch/ora/plsql/exception.html
Oracle ADF – Passing Data within a Task Flow- Techartifact
Passing Data within a Task Flow –
It is a common use case to pass parameters from ADF Task Flow with fragments into another ADF Task Flow without fragments.f the bounded task flows referenced by ADF regions share the data control scope and the transaction – we can access parameter directly through Expression Language. If data control scope is not shared – probably you will need to use ADF Contextual Event Framework.
Source- www.oracle.com -video upload by ADFInsiderEssentials on youtube