relational-query-HDBC- HDBC instance of relational join and typed query for HDBC

Copyright2013 Kei Hibino
Safe HaskellNone



This module provides typed statement running sequence which intermediate structres are typed.



data PreparedStatement p a Source

Typed prepared statement type.

untypePrepared :: PreparedStatement p a -> Statement Source

Unsafely untype prepared statement.

unsafePrepare Source


:: IConnection conn 
=> conn

Database connection

-> String

Raw SQL String

-> IO (PreparedStatement p a)

Result typed prepared query with parameter type p and result type a

Run prepare and unsafely make Typed prepared statement.

data BoundStatement a Source

Typed prepared statement which has bound placeholder parameters.




bound :: Statement

Untyped prepared statement before executed.

params :: [SqlValue]

Bound parameters.

bind' Source


:: RecordToSql SqlValue p

Proof object to convert from parameter type p into SqlValue list.

-> PreparedStatement p a

Prepared query to bind to

-> p

Parameter to bind

-> BoundStatement a

Result parameter bound statement

Typed operation to bind parameters.

bind :: ToSql SqlValue p => PreparedStatement p a -> p -> BoundStatement a Source

Typed operation to bind parameters. Infered RecordToSql is used.

bindTo :: ToSql SqlValue p => p -> PreparedStatement p a -> BoundStatement a Source

Same as bind except for argument is flipped.

data ExecutedStatement a Source

Typed executed statement.

executed :: ExecutedStatement a -> Statement Source

Untyped executed statement.

result :: ExecutedStatement a -> Integer Source

Result of HDBC execute.

execute :: BoundStatement a -> IO (ExecutedStatement a) Source

Typed execute operation.

prepareNoFetch :: (UntypeableNoFetch s, IConnection conn) => conn -> s p -> IO (PreparedStatement p ()) Source

Generalized prepare inferred from UntypeableNoFetch instance.

executeNoFetch :: BoundStatement () -> IO Integer Source

Typed execute operation. Only get result.

runPreparedNoFetch :: ToSql SqlValue a => PreparedStatement a () -> a -> IO Integer Source

Bind parameters, execute statement and get execution result.

runNoFetch :: (UntypeableNoFetch s, IConnection conn, ToSql SqlValue a) => conn -> s a -> a -> IO Integer Source

Prepare and run sequence for polymorphic no-fetch statement.

mapNoFetch :: (UntypeableNoFetch s, IConnection conn, ToSql SqlValue a) => conn -> s a -> [a] -> IO [Integer] Source

Prepare and run it against each parameter list.