Inside Oracle APEX by Patrick Wolf

Für Kurzentschlossene

Gehörst Du zu den spontanen Personen? Dann ist das Deine Chance!

Bei unserem Oracle APEX Training nächste Woche vom Montag, 02. Juni bis Mittwoch, 04. Juni sind noch ein paar Plätze frei. Schnell anmelden und nächste Woche beballtes Oracle APEX Knowhow erfahren!

Bis nächste Woche!
Patrick


Labels:


« ... Read full posting ... »

New entry page for my Oracle APEX activities

Some time ago I have registered the domain oracleapex.info and I finally found a few spare minutes to create an entry page for all my Oracle Application Express (APEX) activities.

I want to move all my APEX related open source projects to this domain. The Oracle APEX Builder Plugin is already hosted there and for my new project, Oracle APEX Essentials I have created a new web page today. The ApexLib Framework should also follow as time permits. I'm having a busy schedule lately.

BTW, I'm still looking for more beta testers for Oracle APEX Essentials. Get the details here.

Update as of 25-May: I have created a new web site for the ApexLib Framework, too. Now everything is complete.

Labels:


« ... Read full posting ... »

Oracle APEX 3.1.1 is out!

Just read on Joel Kallman's blog that Oracle Application Express (APEX) 3.1.1 is out. That's the long await patchset for the recently released Oracle APEX 3.1, which fixes some bugs we where facing. The readme file lists 52 fixed bugs.

The patchset can be found on MetaLink (search for Patch Number 7032837). The full download of 3.1.1 should be available shortly on OTN.

Labels: ,


« ... Read full posting ... »

Caution with new "Runtime Where Clause" in Oracle APEX 3.1

Found out the hard way that the new property "Runtime Where Clause" for processes (eg. Fetch, DML) has a serious bug. The value of the property gets exported and is contained in the export file of an application, but it isn't set when you import an application!!!

Because most of us are not developing on the production system, that bug is a real show stopper for that feature, because you never get the identical application onto the production system or to the customer.

The problem has been reported and according to Scott from the APEX team, it's getting fixed in 3.1.1

Note: The "Optional Where Clause" of "Get Next or Previous Primary Key Value" processes is not effected by that behavior, this property was already available before Oracle APEX 3.1

Labels: ,


« ... Read full posting ... »

Oracle APEX Award - Your chance!!!

Oracle Germany has announced an Oracle Application Express (APEX) Award with a grand prize of

€ 5.000 (about USD 7.750)

for the winner! The terms and deadlines can be found at www.oracle-apex-award.de (in German), a translation can be found at the following OTN thread. The contest is open for all nationalities, but the created application has to be delivered in German.

A few months ago I made a minor mistake, I agreed to be in the jury so I can't take part myself. But you should take your chance!!! Not only can you win a lot of money, the winner is also announced on several German web sites and in the media. In case you always wanted to get famous or wanted to increase the publicity of your company, that's your chance!

Labels: ,


« ... Read full posting ... »

APEX Essentials - Looking for early adopters

drum roll...drum roll...drum roll...

APEX Essentials - A great new tool on the Oracle APEX horizon...

but to finish it I need your help!

What is it?

APEX Essentials is my current working title (might also be the final name) of a new open source project which includes essential Oracle APEX tools for your daily Oracle APEX application development.

The first tool of this collection is

The Oracle APEX Advisor

Ever had the problem that you referenced a non existing page item with the substitution- or bind variable syntax, but you didn't notice because Oracle APEX just returns NULL in such a case without raising an error?

You did some data model or PL/SQL package changes and didn't notice that you broke your APEX application code? If you are lucky you get a runtime error. In some cases you don't event get that. Oracle APEX just ignores your invalid code... See OTN forum threads here and here.

APEX Advisor is some kind of a "compiler"/LINT for your Oracle APEX application. It goes through your applications meta data and performs a variety of checks. Some of them are to find invalid PL/SQL code or invalid references to page items, but others are more kind of "Best Practice" checks like
  • don't use V/NV in SQL statements
  • unconditional branches before conditional ones
  • ...
Currently there are a total of 22 checks which are performed! And the good news is that it has a plugin system so that you can add your own QA checks!

Want to take a quick look?

I have set up a demo workspace on apex.oracle.com where I have uploaded most of the Packaged Applications which are provided by the Oracle APEX team. So you can try it online first, before you request a beta copy.

Login with

Workspace: ae_demo
User: guest
Password: 123456

and run the application "APEX Essentials". If you are prompted for a username/password enter guest/123456

Note: Don't change anything in this workspace!

You can also directly run it, but then it's not integrated into the Oracle APEX Builder.

Want to test it with our applications?

The reason why I'm calling out for early adopters/beta testers is that only your real world applications can prove if the tool works or not and if there are still unhandled cases. If you want to participate in the beta, send a mail to beta@oracleapex.info

Ideas to improve it?

Are there some checks which you perform on your application, ... or do you have other ideas how to improve it. Please post them on the following OTN thread.

Pre-requirements

The tool has been developed to work with Oracle APEX 3.0 and newer versions and requires Oracle 10g or newer versions.

Screen captures of a quick test




Labels: ,


« ... Read full posting ... »

Integrate Speech Recognition into Oracle APEX

Tyler Muth has posted a really cool example on how to integrate Oracle APEX with another service.

Jott is a speech recognition service and allows to integrate third party applications into there service. Tyler used this mechanism to write the output text of the speech recognition into the table of an Oracle APEX application. Read all the details on his Speech to text to Oracle APEX posting.

Great work Tyler!

Too bad that the service is not available in Europe :-(

Labels: , ,


« ... Read full posting ... »

ORA-02014: cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc.

If you get an ORA-02014: cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc. from your DML process when you submit the changes in an Oracle APEX application, then this is because Oracle APEX tries to lock the effected record before it updates/deletes it. This behavior was introduced in Oracle APEX 3.0, but with the side effect that complex updateable views with an instead of trigger get the above error.

BTW, why does Oracle not have a "locking" branch in an instead of trigger???

Back to the topic, what can we do?

In Oracle APEX 3.0.1.00.07/08 a new switch was added to disable that behavior, it's documented in the readme for the patch, but not in the online help (bug has been filed). The switch is called FSP_DML_LOCK_ROW and is a substitution value or an application/page item. If you set the value to FALSE, the locking will not be done by the DML process.

But is it a good idea to disable locking for the entire application?

I think No! It should only be done for those pages where it's necessary.
  1. Create an application item named FSP_DML_LOCK_ROW
  2. Create an application computation with the following settings
    • Sequence: 0
    • Computation Point: After Submit
    • Computation Type: Static Assignment
    • Computation: TRUE
  3. Create a computation on the pages which have the error
    • Sequence: 10
    • Computation Point: After Submit
    • Computation Type: Static Assignment
    • Computation: FALSE
BTW, there is another switch which effects the locking, it's called APEX_DML_LOCK_WAIT_TIME. For details have a look at the documentation.

Labels: , ,


« ... Read full posting ... »