Oracle Open World – Larry’s keynote: some announcements

Larry talks first about Fusion Apps.
After a controlled test period, it’s now officially available.

And now for really the first announcement…
Larry Ellison: “Everybody has a cloud, we too need a cloud”
So here it is Oracle Public Could.
Great to see Apex is strongly supported.

You can move your application and data from your datacenter to the cloud and back without a problem.
The Oracle Cloud is based on industry standards(Java, XML, Web services,…).
Pricing is based on monthly subscription, and that’s all, no extra licenses.

A second announcement: Oracle Social Network.
Collaborate, share, application integration, BI Navigation, …
He even gave a live demo of the Oracle Social Network.

Oracle Open World starts today!

And I’m the lucky one that is in San Francisco!

So, what’s on for today…
Wake up, breakfast, presentation rehearsal and off to Moscone to register.

And we kick of with ADF EMG sunday.

This should be interesting when you take a look at that list of speakers.

And of course later on today the keynote by Larry Ellison.
Very curious about that!

Like I said before, tomorrow is my own presentation:

  • Session: What’s Your Choice for Oracle Forms: Modernize, Upgrade, Integrate, or Migrate? (session id 08262)
  • Time and place: Monday, 12:30 PM, Marriott Marquis – Golden Gate A

This will be an interesting session for all Forms developers and users!

In case you’re not attending Oracle Open World, follow this blog and the iadvise twitter for regular updates from OOW.

If you want a complete overview from people attending Oracle Open World, come to the OpenXperience day on 21 October in Diegem, Belgium.
Visitors of Oracle Open World will bring you the most interesting information and hot news.

 

Statement restart

Today I explained the “statement restart” problem to a colleague.
Every database developer has to know about this one…

Short: Any statement can be restarted!
This means that when you do one update statement, oracle CAN restart the statement.
Every code in a trigger can be executed multiple times, so watch out with package variables and autonomous transactions in triggers.

Some code to test it:

CREATE TABLE test_trigger(val NUMBER)
/

CREATE OR REPLACE PACKAGE global_var
IS
g_val NUMBER;
END global_var;
/

CREATE OR REPLACE TRIGGER test_trig
BEFORE UPDATE
ON TEST_TRIGGER
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
global_var.g_val := global_var.g_val + 1;
END ;
/

BEGIN
global_var.g_val := 0;
END;
/

INSERT
INTO test_trigger
( val
)
VALUES
( 0
)
/

DECLARE
l_val NUMBER;
BEGIN
SELECT val
INTO l_val
FROM test_trigger;

dbms_output.put_line(‘value in package global variable:’||global_var.g_val);
dbms_output.put_line(‘value in table:’||l_val);
END;
/

BEGIN
FOR i IN 1..100000
LOOP
UPDATE test_trigger
SET val = val +1;
END LOOP;
END;
/

DECLARE
l_val NUMBER;
BEGIN
SELECT val
INTO l_val
FROM test_trigger;

dbms_output.put_line(‘value in package global variable:’||global_var.g_val);
dbms_output.put_line(‘value in table:’||l_val);
END;
/

What’s the value of your global variable?

Or like Tom Kyte says: “Triggers or evil!”
More on this topic by Tom Kyte: That old restart problem again