1

我有一个我喜欢与 LINQ to SQL 一起使用的存储过程。我很好地将它添加到 dbml 并设法调用它,但随后发生了奇怪的事情。我收到“找不到列“MySchema”或用户定义的函数或聚合“MySchema.pi_MyStoredProcedure”,或者名称不明确。-错误。试图弄清楚为什么会发生这种情况,因为我可以从 SSMS 很好地执行 proc。SQL Profiler 设法捕获了查询,它是这样的:

exec sp_executesql N'SELECT CONVERT(Int,[MySchema].[pi_MyStoredProcedure](@p0)) AS   [value]',N'@p0 nvarchar(4000)',@p0=N'ParameterValue'

当我尝试执行此操作时,我从 SSMS 收到相同的“找不到...”-错误。我怀疑这可能与我的存储过程的返回类型有关。我必须在 .dbml XML 代码中手动设置它。看起来像这样:

<Function Name="MySchema.pi_MyStoredProcedure" Method="pi_MyStoredProcedure" IsComposable="true">
    <Parameter Name="MyParameter" Type="System.String" DbType="NVarChar(512)" />
    <Return Type="System.Int32" />
</Function>

我在这里做错了什么?我设法找到的每个在线教程都告诉我这样做,但显然我还缺少其他东西?它是什么?

4

1 回答 1

1

我设法通过将存储过程更改为使用 OUTPUT 参数而不是 RETURN 来解决此问题。

于 2012-09-04T05:17:38.337 回答