我正在寻找一种方法让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]]
我们在这里看到第二个结果集的结果被丢弃了
我想知道是否有除 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 的空列表