Ripping Yarns – Music, Samba, Ubuntu and Various Discworld Characters

Yes, I know this is supposed to be a blog about Oracle stuff. It’s just that, well, Larry’s been busy this week upsetting large chunks of the Open Source Community – MySQL; OpenSolaris; even James Gosling has had T-shirts printed up urging Oracle to “Let Java Go”. Suffice to say that, given all of this furore, I’ve concluded that I could do with improving my Open Source Karma a bit.
Fortunately, I’ve been busy this week, loading all of my newly inherited music collection onto by Ubuntu Server to enable playback from any other machine on the network. What follows is an account of my adventures.
It was a simple plan – rip all of the CDs to an existing Samba Share on the server and then find software that can read the format and allow playback on both Windows and Linux. Continue reading

Setting the Windows Path Variable for Cygwin…when you’re not allowed to

Several years ago, whilst working in an organisation that thought that organising functions into silos was an outstanding idea, I needed to have a UTL_FILE_DIR added to the init.ora ( this was back on Oracle 8i, since you ask).
Not having sufficient access to be able to implement this change myself I had to request it from the DBA group….based in Madrid.
The request was to enable us to write to a directory on the same server as the Database. Not being involved in the physical configuration of the database, I left it to the DBAs to pick which directory to use.
This change, which would’ve taken me 2 minutes, disappeared into the system. The DBAs had to refer it to the Linux Admins( Poland), who had to then discuss the matter with the Storage Team (Switzerland).
End result : six weeks later I get an automated mail saying that the call has been resolved…and I end up with a unix environment variable called $UTL_FILE_DIR. Oh, how we laughed. Continue reading

Getting output from Ref Cursors in PL/SQL

A colleague of mine (Martin, you know who you are), remarked the other week that he wasn’t overly interested in the contents of the blogosphere. He said that it usually put him in mind of the cartoon of the tag-cloud consisting solely of the word “me”. This got me to thinking, why do I do this ?
Let’s put my ego to one side for a moment ( pause to sounds of straining, followed by a dull thud). That was heavier than it looked.

One of the reasons for maintaining this blog is that I’ve got a quick reference to look at if I come across something I did a while ago and need a quick reminder of syntax etc. Also, my Mum likes to know what I’m up to.
The starting point for this entry was to attempt to drag together all the basic bits about Ref Cursors in PL/SQL – specifically, accessing them from within PL/SQL itself.

Whilst I was writing this, it was pointed out to me that SQLDeveloper doesn’t handle Ref Cursors quite as nicely as Toad. The specific issue was the difficulty in dumping the results into a grid, from whence it can be transferred to Open Office Spreadsheet ( or Excel).

For the most part, Ref Cursors are used to transfer data from the database to a web application. So, why would you need to start fiddling about with getting results back in PL/SQL ?
There are probably several answers to this question. However, for me, it’s mainly a case of having to trace problems raised in various support calls. Knowing what data results from each of the calls in a process usually helps a bit. Continue reading

Windows Bashing…with Cygwin

I was in Wales last week, land of my girlfriend ( yes, I have got one, try not to look so shocked).
Wales, land of story and legend….where the rain goes for it’s summer holidays.

Stepping gingerly between the puddles in picturesque ( albeit, soggy) Laugharne, we spent an instructive ( and mainly dry) hour or so at the boathouse once occupied by Dylan Thomas. In the course of this cultural interlude, I learned that the Great Man’s last words were “ I’ve had 18 straight whiskys. I think that might be the record.”

Hmmm, I wonder if he’d been trying to write a Windows batch script ?

Whatever the merits of Windows in terms of it’s ubiquity, one undeniable fact is that the facilities provided for batch scripting on the command line are stone-age compared to those in Unix.
This is something I’ve often reflected on, usually when confronted with a problem that requires a bit more than a simple for loop.

Help is at hand however, in the form of Cygwin – a toolset which enables you to more-or-less run a bash shell on Windows. Sounds good to me. Let’s have a look…. Continue reading

Triggers on Views in SQLDeveloper

So, you’ve noticed that SQLDeveloper ( any version prior to 2.1.1) doesn’t show triggers on views. At the same time SQLDeveloper 2.1.1 doesn’t show package bodies unless you have a very highly privileged account.
If you’re determined to press-on with 2.1.1, you can see a workaround for the package body problem here.
If however, you’d prefer to wait until they’ve ironed out this particular kink before taking the plunge, but want a solution to the invisible triggers, read on … Continue reading

Unable to See Package Bodies in SQLDeveloper 2.1.1

After many happy months spent sauntering contentedly through the database, I recently came across a curious little bug in SQLDeveloper 1.5.4 where the Triggers on a View are not displayed in the appropriate Tab.
Not to worry, it’s about time I upgraded to 2.1.1 anyway. Or so I thought. I should have known – it’s the summer and bugs are everywhere.
Incidentally, if you need a workaround for the Views issue ( which seems to afflict all version up to 2.1.x, then a workaround is available here.

Fast forward then and I’m now sitting here front of SQLDeveloper on Windows Vista…and wondering what exactly it’s done to all of those package bodies that were there a moment ago.
What follows is a summary of my attempts to find out just what is going on and how to get around it. Continue reading

Going Postal – Validating UK Postcode format in PL/SQL

As a database programmer, addresses will crop up from time to time with the inevitability of death and taxes. Depending on the state of the database your working on at the time, it can feel like either or, in extreme cases, both.
This post is about the joy of UK postcodes and how you can validate that they are correctly formatted with…wait for it….regular expressions.
Before you run off screaming into the woods, I’d hasten to add that this can be achieved without overdue exertion of the top row of your keyboard. Continue reading

More Nefarious Nullable Nonsense – Coalesce

OK so it’s not really nefarious but I couldn’t think of another word beginning with “N”.
You may also be relieved to know that this is the dying parp of the vuvuzela on this blog.

This is really just a bit about coalesce – a little used but extremely useful SQL function.

Let’s get the World Cup example out of the way. Here’s a table containing details of the four semi-finalists from this year’s tournament.

Conveniently enough, they consist of two previous winners, one with a best performance as beaten-finalists, and one with a previous best of 4th. Too good an opportunity to miss…. Continue reading

Passing parameters in SQL*Plus – or What’s the opposite of a Chick Flick ?

Watching Iron Man 2 the other night, I was somewhat surprised by a brief appearance on screen of someone who looked remarkably like Larry Ellison.
No, he wasn’t the villain although – depending on what Oracle ends up doing to MySQL – he could be a candidate for the role in Iron Man 3.
As a result of riding this cinematic rollercoaster, I experienced two profound revalations.
The first is that, despite it’s poor relation status in the array of tools available to the Oracle developer, SQL*Plus can still be incredibly useful ( OK, I’ve always thought this – but I’m flashing my Poetic License here and no, it hasn’t expired yet).
The second is that the opposite of a Chick Flick must be a Bloke Buster. I know, I should really just stick to the programming stuff.
Continue reading