我有以下示例代碼。目標是運行帶有多個輸入參數的SQL語句。如何在fsharp.data.sqlclient中使用SQL IN語句?
[<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
但是,codeName被推斷爲字符串類型而不是數組或列表,並給我一個錯誤。
或者,我可以根據結果運行沒有where語句和過濾器的查詢。但是,在許多其他情況下會返回數百萬行,我寧願在SQL Server級別過濾數據效率更高。
我在fsharp.data.sqlclient的文檔中找不到任何相關示例。請幫忙!
我假設你的目標是SQL Server。那麼,它不使用數組或列表的原因很簡單--SQL Server沒有這種數據類型。它有一種專門用於存儲多項數據的數據類型 - 表格。我不熟悉[tag:fsharp.data.sqlclient],但我建議您嘗試瞭解如何將表值參數傳遞給它。 – 2014-10-08 07:01:25