如何在fsharp.data.sqlclient中使用SQL IN语句?

zyz*_*zhu 14 f# fsharp.data.sqlclient

我有以下示例代码.目标是使用多个输入参数运行SQL语句.

[<Literal>]
let connectionString = @"Data Source=Localhost;Initial Catalog=Instrument;Integrated Security=True"
[<Literal>]
let query = "SELECT MacroName, MacroCode FROM Instrument WHERE MacroCode IN (@codeName)"

type MacroQuery = SqlCommandProvider<query, connectionString>
let cmd = new MacroQuery()
let res = cmd.AsyncExecute(codeName= [|"CPI";"GDP"|]) |> Async.RunSynchronously
Run Code Online (Sandbox Code Playgroud)

但是,codeName被推断为字符串类型而不是数组或列表,并给我一个错误.

或者,我可以在没有where语句的情况下运行查询,并根据结果进行过滤.但是,在很多其他返回数百万行的情况下,我更希望SQL服务器级别的过滤数据更有效.

我没有在fsharp.data.sqlclient的文档中找到任何相关的示例.请帮忙!

Pet*_*etr 6

"请参阅文档中的表值参数(TVP)"部分:http: //fsprojects.github.io/FSharp.Data.SqlClient/configuration%20and%20input.html

  • 所以你必须将你的查询放入存储过程,并创建一个自定义SQL类型只是为了使用IN语句?呸. (6认同)