繁体   English   中英

Esqueleto:如何执行多于16列的查询?

[英]Esqueleto: How to execute a query with more then 16 columns?

好吧,基本上可以归结为是否有可能在esqueleto中返回多于16列的查询?

我有一个必须与之交互的旧数据库,它需要联接具有30-40列的表,然后从需要的80-100列中选择20列,因此除非需要,否则我不会提取较大的列。 似乎esqueleto只能将我限制在16列? 没有孤儿实例,有什么方法可以解决这个问题?

提前致谢!

附言:如果需要一个人为的例子,我会提供一个。

UPDATE

我在文档中发现,您可以执行元组的元组,这实际上使我可以获得更多的16列,然后对结果进行嵌套的元组和模式匹配,以将其转换为所需的数据类型,或根据需要使用单个值。

FYI

如果您查看SqlSelect的文档(如果您查看实例),然后一直浏览到最右边,那么您将看到一个“提示”,这使我知道我可以执行元组。

您可以创建一个自定义数据类型来表示该查询的结果,该数据类型将具有所需的任意多个字段。 然后,您需要为该数据实现相关的类型类( PersistEntity似乎是主要的类型)。 这也使您有机会向字段提供相关/有意义的名称,以帮助防止潜在的错误。

data MyResult
    = MyResult
    { fieldOne :: SomeType
    , fieldTwo :: OtherType
    , ...
    , fieldSixteen :: Text
    }

而不是返回(a, b, c, ..., e) ,而是返回MyResult abc ... e

为方便起见,您可能需要使用Persistent的Entity定义准引用程序来定义结果。 您将以不尝试为此生成迁移的方式使用该定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM