Thoughts

10g (1) 11c (1) 11g (5) 12c (4) 3.0 (1) ApEx (4) Cloud (11) database (10) DBA (1) EBR (1) EC2 (2) education (3) EOUC (1) ExaData (1) F2F (1) Forms (7) java (1) language (2) memorabilia (2) Metalink vs MOS (4) multi-cultural (4) on-line communities (1) oracle (7) performance (5) projects (1) reciproke (1) Reports (2) RUP (1) sales (2) services (5) silence (1) SOA (3) SQL Server (3) standards (6) Sun (1) support (6) W8 (1) WebLogic Server (5)

Wednesday, October 23, 2013

Moving from Forms 10g to 11g

Remember that there is a new version PL/SQL engine taking care of calls to the database. I stumbled upon a strange error moving from 10g to 11g.

Now in 11g, the PL/SQL is more restricted in functions behaviour.

A function MUST return av value. So code that looked like this, roughly, in Forms 10g passed, but should not have passed. When run in a 11g environment there are strange behaviour of this new more robust view of a function. Some of these errors can be hard to find, but a &debug and/or

MESSAGE('Informative text');

does the trick.

Here is what passed earlier, but no longer during run-time. It compiles, but is giving strange errors in Forms 11g. Note that the solution is just to RETURN something in the THEN-clause.

FUNCTION MyFunc(i_personId) RETURN VARCHAR2 IS
  l_MyVariable VARCHAR2(80);

BEGIN
 IF some_expression 
   THEN NULL;
   ELSE
   /* Do something */
   RETURN('RESULT');
 END IF;

END;