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