[英]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.