簡體   English   中英

存儲過程不返回任何列

[英]Stored procedure returns no columns

我有以下存儲過程:

 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER ON
 GO
 ALTER PROCEDURE [dbo].[SearchMediaTitles] 

   @query varchar(50),
   @limit int = 6,
   @userId int
 AS
 SET FMTONLY OFF
 BEGIN

 declare @searchString varchar(52)

 set @searchString = '"' + @query +'*"'
 IF @userId!=NULL
 SELECT TOP (@limit) ID, Title from Media where CONTAINS([Title], @searchString)
 AND ID IN
  (
  SELECT FavoriteMedia_ID
  FROM dbo.UserMedia
  WHERE UserMedia_Media_ID=@userId
  )
 ELSE
 SELECT TOP (@limit) ID, Title from Media where CONTAINS([Title], @searchString)

 END

在實體框架中,當我嘗試在函數導入時將其映射為復雜類型時,它說

所選的存儲過程不返回任何列

我已經在互聯網上閱讀了有關此內容的信息,發現需要將SET FMTONLY OFF設置為,但是如您所見,它不起作用。

有任何想法嗎?

編輯

我將SELECT更改為* ,它返回一個空結果。 我認為這與上述問題有關

對於每個有相同問題的人,這就是我所做的。

首先,我將存儲過程修改為一個簡單的過程,如下所示:

  SELECT  [column1],[column2] FROM [table]

我將其導入Entity Framework ,創建了復雜的類型和映射屬性

然后我將其改回並更新了模型,現在它可以工作了。 我認為Entity Framework在復雜的存儲過程中存在一些問題。 從我的閱讀來看,它無法獲得動態存儲過程或使用temp tables的存儲過程的結果。

PS:當我用Ajax調用它時,我使用data.column1 and data.column2來調用它。 如果我使用data.value' it returns undefined`。

有點奇怪

編輯:就像馬丁說的,但我不知道為什么它最初沒有奏效! 謝謝你!

我猜您在prefix_term上缺少單引號。 所以這:

set @searchString = '"' + @query +'*"'

應該:

set @searchString = CHAR(39) + '"' + @query +'*"' + CHAR(39)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM