Oracle is Insane

Oracle has a built in table that always has one row.
The table is called DUAL.

This is how you can call functions in a sql call, such as:
SELECT SYSDATE + 99 FROM DUAL

SQL Server lets you call functions explicitly such as:
SELECT GetDate()

Oracle is clearly insane.

Oracle – Where is the up side?

I am in the process of porting a large SQL Server project to Oracle.
The product needs to support both products going forward.

The more I look at Oracle the less impressive it seems. Hopefully I will find some pleasant features.
The problem is that I need to stay portable.

The big benefit is the lack of lock-in to the windows platform.
This does mean that we can’t guarentee to always have the same version that the customer is using.

Downsides include:

SQL/PLus – this is the best tool that you get out of the box. It may be guarenteed platform portable but it belongs in the 1980’s. You really need TOAD or PL/SQL Developer.

SQL/PLus error handling is painful at best. I am trying to create a 200 table database from a translated script. Some of the tables are not there and it is painful to find what is wrong with the script.

Lack of domains. You can’t specifiy aliases for primative types such as STD_REFERENCE VARCHAR(20)

You can’t return recordsets from stored procedures.

It is a resource hog. It has seriously slowed down my addmitedly old development machine to a crawl.

Benefit:

Lack of the poorly implemented COLLATION issue in SQL Server.

The majoirity of my script conversion is being done using sed.
Hopefully I should be able to perform 90% of the store dprocedure translations with this tool.

sed saves the day

The following command:

        sed -e 1,250000d report.tsv > output.txt

Removes the first 1/4 million rows from the given file before passing the output to a file.

This is very useful when a tsv file is 15 Mb – way too big for excel to view.
sed may be old, but it does do the job quickly that very few other tools handle so well.

Web Services and Mono

I have been experimenting with MonoDevelop on a Breezy Badger Ubuntu system. Until now I had limited myself to creating Hello World style console applications.

I have just got a Hello World web service client to run under MonoDevelop. The only sticking point that I had found was forgetting to add System.Web,Services as a reference.

Given that the mono wsdl works that well we have a great opertunity for interoperability. The promise of web services can be realised.

Web Services and Web References (part 2)

I have just finished a web services training course.
Apparently setting a web reference uses wsdl.exe in the background so the two are equivalent for creating a proxy. However wsdl.exe does provide far more control.

The problem comes with the update web reference option. If you have decorated the proxy with attributes (such as a soap extension) these are lost upon regeneration. There does not seem to be a clean way of managing this. We really need more control of the template than WSDL.exe provides. I am sure that xslt could be used…

.NET 2.0 does promise more control over this generation.