【发布时间】:2015-03-07 08:40:00
【问题描述】:
从外部文件加载 T-Sql 时,我无法编译此代码。当 T-Sql 直接插入 F# 时,该代码起作用:
type GetRecentMedia =
SqlCommandProvider<"DECLARE @MedId NVARCHAR(128);
DECLARE @TopN INT;
select Top(@TopN) * from media.mediaInfo
where MediaId = @MedId",
Admin.connectionString, ConfigFile = "Web.config">
但是在尝试从 sql 文件加载 T-Sql 时出现此错误:
Execute 需要 0 个参数,但这里给出 2 个。
T-Sql:
DECLARE @MedId NVARCHAR(128);
DECLARE @TopN INT;
select Top(@TopN) * from media.mediaInfo
where MediaId = @MedId
F#:
module internal FeedRecentMedia =
type GetRecentMedia =
SqlCommandProvider<"Social\InstagramFeed_Select_GetRecentMedia.sql",
Admin.connectionString, ConfigFile = "Web.config">
module MediaTool =
// get current media
let rM = new FeedRecentMedia.GetRecentMedia()
let curMedia = rM.Execute(MedId = "Id", TopN = 1) |> Seq.head
我在 Management Studio 中测试了 t-sql,它在那里工作。我只收到上述错误。我在这里错过了什么?
【问题讨论】:
-
我进行了更新。我发现直接在F#中插入t-sql时效果很好,但在外部加载时仍然无法正常工作。
-
你认为为什么需要在 T-SQL 中声明变量?
-
主要用于在管理工作室中测试查询。我离开声明只是因为我认为它不会影响任何事情。我应该完全删除它吗?
-
是的,我认为它吓坏了 SQL 分析器
标签: f# f#-data fsharp.data.sqlclient