exercism/plsql/hamming/GETTING_STARTED.md

3.0 KiB

Getting Started

These exercises lean on Test-Driven Development (TDD), but they're not an exact match.

Setup

You'll need access to a mounted Oracle DB. If you don't have one already installed, here are a few options:

  • download VirtualBox from Oracle and run one of the freely available images; at the time of writing, the easiest to get started with at the time of writing might be Database App Development VM. The image is quite large...
  • download and install the a version of the Oracle DB itself. Developer licenses are free.
  • get a free workspace at https://apex.oracle.com

Note: if you're using the online version of APEX, compilation errors will not be indicated very clearly when working in SQL Commands - you will simply get "Error at line XX: PL/SQL: Statement ignored"... More insight can be found using the Object Browser and navigating to the object you created (select either Packages or Procedures in the dropdown menu showing Tables, depending on what you created for the exercise). Also, when you run statements, "run" each individual create statement individually by selecting its text. APEX does not seem to like doing too much work at once...

To work on individual problems, a nice and free way is to use SQL Developer. If you don't want to use yet another IDE, you can simply copy and paste your code into a terminal / command prompt connected to the database. The files are prepared in a way that will simply overwrite the previously compiled version.

#Exercise

Step 1

Compile the test suite. You can easily do that by copy / pasting (let's call that installing for simplicity) into your terminal connected to a mounted Oracle database.

This will fail, complaining that there is no package called HAMMING#.

To fix the error create the package by installing the prepared solution stub. Note that you will have to re-install the package body of UT_HAMMING#.

A few words about naming: the # at the end of the name signifies that this is a package. UT means unit test. PL/SQL has a maximum identifier length of 30 characters, which is why you will find that many words are abbreviated.

If you've worked with PL/SQL before, you might wonder why the template is a package and not simply a standalone function. That would of course also be a possibility, but in practice standalone procedures or functions are rarely used.

Step 2

Try to run the test. You will notice that you are missing the function's implementation. Create it (see the test package for examples).

Note that functions have to return a value, so for now just return null;.

Step 3

Run the test again. It should now execute, but the test will fail. That's where you get to actually implement the function!

Wash, Rinse, Repeat

Only the first test is enabled at first, the others are commented out. To enable them, simply delete the -- in front of the procedure call and they'll run when you next install the test package!

Submit

When everything is passing, you can submit your code with the following command:

$ exercism submit hamming#.plsql