
2008/6/24 Henning Thielemann
(I remain on the list in order to fill the archive with information, others may need, too.)
As you wish.
(Btw. Takusen should be split into several packages for all database backends because Cabal flags must not influence the package interface.)
I don't understand this (cabal flags must not influence package interface). I thought that was the point of cabal flags? I wanted to have a single package installation, and this seems like the best way.
But on installation Cabal complains about missing /usr/oci directory.
When you run configure, you should get output that says: Using Oracle: <path> What is <path>? The Setup.hs assumes the entire Oracle installation is under a single root folder ($ORACLE_HOME); is this not true on Linux? If not, then we will have to find some other way of locating the bin and include folders. Perhaps we can do something like the Postgres installation, where there is a program you can run which will print the include and lib folders. That may mean a little hacking on Setup.hs, but there's already a good example there for Postgres.
Once I will get Takusen running with OCI - how would I use it? Is there a minimal example which connects to an Oracle database, performing a very simple query?
There's an example in the README.txt, which I've tweaked here for Oracle: {-# OPTIONS -fglasgow-exts #-} {-# OPTIONS -fallow-overlapping-instances #-} module Main where import Database.Oracle.Enumerator import Control.Monad.Trans (liftIO) main = flip catchDB reportRethrow $ withSession (connect "user" "pswd" "dbname") (do let iter (s::String) (_::String) = result s result <- doQuery (sql "select 'Hello world.' from dual") iter "" liftIO (putStrLn result) ) Alistair