safeFromSql :: Convertible SqlValue a => SqlValue -> ConvertResult a
是你想要的,雖然它可能不會立即看起來像它。我們假設a ~ Integer
。首先我們檢查看看這個假設是否可以被seeing if there exists an instance Convertible SqlValue Integer
所接受。它不在convertible
包中,但它確實存在,我們可以在the instance list for SqlValue
中看到它。
所以現在我們知道safeFromSql :: SqlValue -> ConvertResult Integer
是可以接受的。讓我們看看我們如何使用它。
> safeFromSql (SqlInteger 10) :: ConvertResult Integer
Right 10
我們看到,ConvertResult
只是type ConvertResult a = Either ConvertError a
-i.e.任何一種類型。因此,我們需要處理故障,以正確使用ConvertResult
doWithSqlValue :: SqlValue -> IO()
doWithSqlValue someSqlValue =
case safeFromSql someSqlValue of
Left err -> print err
Right val -> print val
由於FB的Haskell線程上討論,http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=SqlValue%20 - %3E%20&start = 0是起點(ConvertResult就是你要找的)。 –
如果你不介意,你能告訴我是否有一種方法來計算查詢返回的元組數量:「quickQuery'conn_1」SELECT * FROM company WHERE code =?「[toSql code] – ashani123