78 lines
3.0 KiB
Markdown
78 lines
3.0 KiB
Markdown
|
# 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
|
||
|
|