【发布时间】:2014-01-02 19:59:58
【问题描述】:
我正在尝试将此过程拖到 VS 2012 中的 dbml 中,但我收到了无法检测到返回类型的消息。
我已经尝试过这些: LINQ to SQL - Stored Procedure Return Type Error The return types for the following stored procedures could not be detected
我尝试将程序重写为 CTE 和联合以删除 OR,但它给了我相同的信息。
该方法的设计器属性中唯一的返回类型是 int32。
这是我的程序:
ALTER PROCEDURE [dbo].[GetStringFromFiles]
@SearchWord NVARCHAR(100) = null
AS
BEGIN
SET NOCOUNT ON
SET @SearchWord = UPPER(@SearchWord);
Select
a.FileId <---Guid
, a.FileData <---Binary
, a.BaselineId <---Guid
, a.FileName <---NVARCHAR
, a.FileExtension <---NVARCHAR
, b.FileByItemId <----Guid
, b.ItemId <---Guid
From FileTable a
Inner Join
FileByItem b on a.FileId = b.FileId
WHERE CONTAINS(a.FileData,'FORMSOF(INFLECTIONAL, @SearchWord)') or FREETEXT(a.FileData, @SearchWord)
RETURN 1
END
更新:
A.如果我注释掉整个 Where 子句,我可以添加它 -- Auto-Generated-ReturnType
B.如果我拿走 or 并只使用:
WHERE CONTAINS(a.FileData,'FORMSOF(INFLECTIONAL, @SearchWord)')
它让我添加它 -- Auto-Generated-ReturnType
C.如果我只是使用
WHERE FREETEXT(a.FileData, @SearchWord)
它抛出错误,所以它不喜欢 FREETEXT
如果我将 where 子句注释掉并添加它并让它生成返回类型然后更改数据库中的过程是否有任何问题?
【问题讨论】:
-
你不能在最后删除多余的
RETURN吗? -
它可能是返回的位置,将它移动到 WHERE 的右侧,看看是否有帮助。
-
我更新了我的问题。它不喜欢 FREETEXT 出于某种原因
-
您想通过添加
RETURN来完成什么?我的建议是要么完全忽略它,要么显式返回一个值(即RETURN 1)。
标签: c# sql sql-server linq linq-to-sql