diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 <!-- -*- Markdown -*- -->
 
+## 0.7.1.0
+
+- add convertible instances of Word8 type and Word16 type.
+- add foldlFetch and forFetch.
+
 ## 0.7.0.1
 
 - update haddock about bracketed-prepare operations.
diff --git a/relational-query-HDBC.cabal b/relational-query-HDBC.cabal
--- a/relational-query-HDBC.cabal
+++ b/relational-query-HDBC.cabal
@@ -1,5 +1,5 @@
 name:                relational-query-HDBC
-version:             0.7.0.1
+version:             0.7.1.0
 synopsis:            HDBC instance of relational-query and typed query interface for HDBC
 description:         This package contains the HDBC instance of relational-query and
                      the typed query interface for HDBC.
diff --git a/src/Database/HDBC/Record/Query.hs b/src/Database/HDBC/Record/Query.hs
--- a/src/Database/HDBC/Record/Query.hs
+++ b/src/Database/HDBC/Record/Query.hs
@@ -23,6 +23,9 @@
   runPreparedQuery',
   runQuery',
 
+  -- * Fetch loop
+  foldlFetch, forFetch,
+
   -- * Fetch with Lazy-IO
   -- $fetchWithLazyIO
   fetchAll,
@@ -31,7 +34,10 @@
   runQuery,
   ) where
 
+import Control.Applicative ((<$>))
+import Data.Monoid (mempty, (<>))
 import Data.Maybe (listToMaybe)
+import Data.DList (toList)
 import Database.HDBC (IConnection, Statement, SqlValue)
 import qualified Database.HDBC as HDBC
 
@@ -125,6 +131,32 @@
   z <- listToUnique recs
   HDBC.finish $ executed es
   return z
+
+-- | Fetch fold-left loop convenient for
+--   the sequence of cursor-solid lock actions.
+--   Each action is executed after each fetch.
+foldlFetch :: FromSql SqlValue a
+           => (b -> a -> IO b)    -- ^ action executed after each fetch
+           -> b                   -- ^ zero element of result
+           -> ExecutedStatement a -- ^ statement to fetch from
+           -> IO b
+foldlFetch f z st =
+    go z
+  where
+    go ac = do
+      let step = (go =<<) . f ac
+      maybe (return ac) step =<< fetch st
+
+-- | Fetch loop convenient for
+--   the sequence of cursor-solid lock actions.
+--   Each action is executed after each fetch.
+forFetch :: FromSql SqlValue a
+         => ExecutedStatement a -- ^ statement to fetch from
+         -> (a -> IO b)         -- ^ action executed after each fetch
+         -> IO [b]
+forFetch st action =
+  toList <$>
+  foldlFetch (\ac x -> ((ac <>) . pure) <$> action x) mempty st
 
 -- | /Lazy-IO/ version of 'runStatement''.
 runStatement :: FromSql SqlValue a => BoundStatement a -> IO [a]
diff --git a/src/Database/HDBC/SqlValueExtra.hs b/src/Database/HDBC/SqlValueExtra.hs
--- a/src/Database/HDBC/SqlValueExtra.hs
+++ b/src/Database/HDBC/SqlValueExtra.hs
@@ -14,6 +14,7 @@
 
 import Data.Convertible (Convertible(safeConvert), ConvertResult)
 import Data.Int (Int8, Int16, Int32)
+import Data.Word (Word8, Word16)
 import Database.HDBC (SqlValue)
 
 -- Convert from narrower width than Int32
@@ -35,4 +36,16 @@
   safeConvert = safeConvertFromIntegral32
 
 instance Convertible SqlValue Int16 where
+  safeConvert = safeConvertToIntegral32
+
+instance Convertible Word8 SqlValue where
+  safeConvert = safeConvertFromIntegral32
+
+instance Convertible SqlValue Word8 where
+  safeConvert = safeConvertToIntegral32
+
+instance Convertible Word16 SqlValue where
+  safeConvert = safeConvertFromIntegral32
+
+instance Convertible SqlValue Word16 where
   safeConvert = safeConvertToIntegral32
