HDBCが単一のステートメントで複数の結果セットをサポートする方法を探しています
testMultipleResultsetSingleStatement = do
let sql = "select 1,2,3 union all select 2,3,4 select 'a', 'b'"
c <- connectODBC connectionString
rs <- quickQuery c sql []
return rs
これは返すだけです[[SqlInt32 1,SqlInt32 2,SqlInt32 3],[SqlInt32 2,SqlInt32 3,SqlInt32 4]]
ここで、2 番目の結果セットの結果が破棄されていることがわかります
これをサポートする QuickQuery 以外の関数があるかどうか疑問に思っていますか?
理想的には、戻り値の型は[[[SqlValue]]]
代わりに[[SqlValue]]
、最初の最も外側のリストがクエリによって返される各結果セットに対応します。
HDBCがその方法を提供しない場合、複数の結果セットを返すステートメントを処理する他のパッケージはどれでしょうか?
編集: 実際には、API の変更を伴わない解決策は、次のように機能させることです。
testMultipleResultsetSingleStatement = do
let
sql = "select 1,2,3 union all select 2,3,4 select 'a', 'b'"
c <- connectODBC connectionString
statement <- prepare c sql
_ <- execute statement []
rows1 <- fetchAllRows statement
rows2 <- fetchAllRows statement
return (rows1, rows2)
私がチェックしたところ、sqlserverの場合、rows2の空のリストが返されました