Thursday, September 24, 2015

Oracle Database Developer Choice Award Nominee = Me

Oracle is celebrating the Oracle Community by having us developers nominate and vote for
Oracle Database Developer Choice Awards to our fellow developers in five database development technologies:

The nomination period is over and it has been possible to vote since September 15th. Voting is open until October 15th and winners will be announced during Oracle OpenWorld 2015.

The nominees are all active in the Oracle Community helping others as they themselves have been helped when they started out in Oracle technology.

I am honored and humbled to be nominated in two categories:
- my absolute favorite technology: SQL
- as well as my second favorite: PL/SQL 

So if you think I am helpful to the Oracle Community, you can help me out by voting:

You can upvote me in the SQL category here.

You can upvote me in the PL/SQL category here.

But wait, why should you do that? Guess I'm not much of a politician, I haven't yet told you of how bad my competitors are and how brilliant I myself am ;-) Well, the first I won't ever do - my competitors are all deserving the honor too, many have helped me selflessly.

But how brilliant am I? Well, just middling, if I say so myself ;-) But I have an absolute passion for using SQL to the full utilizing the potential of the database to the max. I go against anyone who try to use the database as a simple black-box bit-bucket. So I will help anyone who wants to learn how to make their applications perform astoundingly fast by learning analytic functions, for example.

Similarly PL/SQL is awesome both to expand the database capabilities and to encapsulate business logic as APIs for UI code to call. That way of coding applications I have used with success since 2000 and I'm happy to teach others how this helps applications in the long term.

What have I done to help others share my knowledge?
  • I write weekly quizzes on the PL/SQL Challenge website.
    You can see the quizzes I have written here.
  • I do presentations at conferences.
    I have presented on analytic functions and external data at ODTUG Kscope and UKOUG.
    I will present at DOAG this year.
    I will be part of an expert PL/SQL panel at Oracle OpenWorld this year.
    You can see slides of my presentations here.
  • I write on this blog and from time to time answer questions on Oracle-L mailinglist and OTN forums.
But can you trust what I say? Well, I have a few testimonials ;-)
  • A user at the PL/SQL Challenge has been learning by taking quizzes from the library and has been kind enough to vote for me with this comment:
    "I voted for Kim because once I realized his login name kibeha was the same Kim Berg Hansen, then I knew to vote for him for coming up with some great quizzes on the PL/SQL Challenge website. The website has been great for me to expand my knowledge and to help prepare for my OCP Advanced PL/SQL Developer."
    I think it is awesome that my work can help prepare for an OCP certification :-)
  • An attendee at ODTUG Kscope 2012 met me in the corridors the day after my presentation on analytic functions and told me, that he used to find them difficult to understand but my examples helped a lot to make it clear to him how they worked.
    That made my day :-)
  • A reader of my blog read a post I wrote on RANGE versus ROWS BETWEEN in analytic functions and commented:
    Thanks! I've been reading the training kit for 70-461 but it didn't make this clear. You blog here lays it our perfectly.
    Again I am delighted I can help passing certification exams.
So I guess that's my sales pitch done for. Go and vote now! Go!
If you vote for me, I sincerely thank you for your help.
If you vote for others, that's also fine, just as long as you vote.

Remember it is OK to vote for more than one person in each category if you feel they deserve it :-)

Thursday, July 30, 2015

Row pattern matching nested within hierarchy

I've been playing around with MATCH_RECOGNIZE - the data pattern matching extension to SELECT that was introduced in version 12.

Most examples I've seen have used the default AFTER MATCH SKIP PAST LAST ROW as most often the logic dictates, that when we have found a match in a group of rows, we want to search for further matches after those rows to avoid unwanted "double" matches.

But can there be uses where we want overlapping or even nested matches? Well, I found at least one case where I think it makes perfect sense...

Friday, June 26, 2015

ODCI dynamic table function parser

Supposing you've got data as a text string with "row" and "column" delimiters and you would like to parse out those columns and rows. The external table syntax would actually be great for this, but that requires writing the text out to a file first, and then you can import it back again as columns and rows.

There are various other alternatives using SQL and/or XML manipulations, but one method that I don't see much used is to use the Data Cartridge functionality to in a sense expand the SQL language to do this. This solution is greatly inspired by an OTN forum post I stumbled upon, where Anton Scheffer demonstrates the use of ODCITable* functions.

Monday, June 22, 2015

Escope very early status

Just a brief summary of the status of Escope so far - I know it's very very early and too early to even tell whether it'll become real or not, but anyway ... ;-)

  1. For those who don't know yet, we're trying to see if it is possible to create a conference in Europe like the Kscope conference by ODTUG. See my early thoughts here:
  2. We're gathering feedback from as many European developers as we can via a survey designed to find out if there is a basis for such an Escope conference:
    Please share that link with all your colleagues and network of Oracle developers throughout Europe - the more responses we can get, the more valid conclusions we can make.
  3. As of today (21. june 2015) we have 80 responses - definitely mostly positive, thank you for that :-) And getting valuable information on what the European Oracle developers are looking for. We have started getting in touch with a little of the Hyperion/Essbase/EPM/BI community in Europe as well and hope to get responses from them as well as the DbDev and APEX developers that so far seem to have been the majority of responses. Opinions af all developers are valuable to us.
  4. We have some thoughts on what might be the challenges we have to overcome to make this dream come true. See some discussion points I've made here:
    I invite you all to pitch in with your own opinions and ideas as comments to that blog post.
  5. If you are attending Kscope15 right now, we can discuss the idea of Escope face to face.
    I will be in the exhibition hall nearby the ODTUG social media booth (booth 613) during happy hours monday as well as tuesday:
    - Monday 22. june 17:00 to 17:30 (or 5 PM to 5:30 PM if you prefer ;-)
    - Tuesday 23. june 18:00 to 18:30 (or 6 PM to 6:30 PM)
  6. You can sign up for a newsletter to be kept up to date on the progress of Escope here:
That's about it so far - we don't know yet if this will remain a dream or if it will take off and be a new shining star. You can help just by circulating the news and sharing the survey link as much as you can. Here it is again:

You'll be hearing more of Escope from me, don't worry :-)

Friday, June 19, 2015

How to make dream of Escope come true?

In my last post, I wrote about a dream of a European version of ODTUG Kscope conference - working title "Escope." ;-) We're trying to determine whether it would be feasible to create such a conference - if you haven't already, go and fill out the survey and help us find out if there's basis for the dream. And send the survey link to you colleagues and friends and network - the more of Europe we can cover, the more solid conclusions can be made from the survey.

But what else would it take to make this dream come true? Well, here are some thoughts and opinions and ramblings on the topic - all my own personal opinions, don't shoot anybody else but me for this ;-) And don't misunderstand me - I really really would love for Escope to happen, I'm just trying to figure out how it actually could become more realistically possible than just a dream :-)...

Thursday, June 11, 2015

Feasibility survey of a possible European Kscope-like conference

As most people likely to read this blog will know, I am a great fan of the ODTUG Kscope yearly conference for Oracle developers. In my opinion it is one of the absolute best places for awesome content, presenters, attendees and networking - all wrapped in one high quality package that's fun too.

Some Dutch developers (Erik van Roon, Gert Poel and more) and I had a little twitter discussion some time ago. Some european developers would love to attend Kscope due to the high quality, but they simply can't attend a US based conference, either due to lack of funding or company policy that prohibits travelling far away for conferences. A European version of Kscope we think would have potentially a large number of attendees who would love the ODTUG experience but can't go to Kscope.

We believe there is room for such a conference, even though Europe has great national OUG conferences like UKOUG, DOAG, OUGN, Harmony, BGOUG and more. These also have developer content, but they are not conferences dedicated solely to developers. We think a developer conference could supplement the existing european conferences, not replace them.

But so far that is just a feeling we have. We would like some more facts and figures on how many would be interested in an "ODTUG Escope" conference - somewhat like Kscope but in Europe.

So just in time before Kscope15 starts, here is a feasibility survey on what you would all think about an Escope conference:

Please fill out the survey and give us your opinion about the idea of Escope. That way we can better know whether the idea is stillborn, or whether we have a good idea to present to ODTUG :-)

For further news on the progress of the Escope initiative, sign up for the newsletter at:

Friday, December 19, 2014

DATE row generator with DBMS_SCHEDULER

A recent question on the Oracle-L mailing list was about generating dates in a given period. If you had a string like 'MWF', all Mondays, Wednesdays and Fridays between the from- and to-dates should be generated.

That reminded me of a quiz on I did on using DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING. I had created a table function to test calendar expressions - that might be useful for something similar to what was asked on the mailing list.

So here's a way to generate rows of DATEs using DBMS_SCHEDULER calendaring syntax.