我寫了一個小腳本提取從Oracle數據使用Takusen:Takusen:截斷誤差
{-# LANGUAGE ScopedTypeVariables #-}
module Test where
import Database.Oracle.Enumerator
import Control.Monad.Trans (liftIO)
import Connections (watDevDb, watProdDb)
import System.Environment
import Data.Char
main :: IO()
main = do
[fn] <- getArgs
sqls <- readFile fn
flip catchDB reportRethrow (withSession watProdDb $ do
let iter (c1::Maybe String) (c2::Maybe String) (c3::Maybe String) (r::Maybe String) = result' c3
rslt <- doQuery (sql sqls) iter (Nothing::Maybe String)
liftIO (putStrLn . show $ rslt))
test = withArgs ["extract.sql"] main
c2
和c3
是CLOB-S 當我嘗試執行它,我收到以下錯誤信息:
*** Exception: DBError ("01","000") 1406 " : ORA-01406: fetched column value was truncated\n"
原來c3
是有問題的。當我從查詢中排除它時,它工作得很好。 根據錯誤判斷,我需要增加c3
的緩衝區大小以避免截斷,但在Takusen文檔中找不到類似的東西。
任何幫助?
這似乎很奇怪,但我把它轉到524288,它仍然拋出相同的錯誤:-( – sandre 2011-03-09 23:19:13