0
我在互聯網上搜索過,發現了類似的帖子。但是,沒有解決方案爲我工作。所選的存儲過程或函數沒有返回列
我遇到了一個存儲過程的問題。將它添加到Visual Studio中的項目中時,我收到以下消息:
所選存儲過程或函數不返回任何列。
早些時候,我可以在我的程序添加SET FMTONLY OFF
(如回答here)解決問題。現在這不會改變任何事情;根據EF,它仍然不返回任何列。
我的存儲過程是這樣的:
ALTER PROCEDURE [dbo].[spImportData]
@someParameter
AS
BEGIN
SET NOCOUNT ON;
-- Some insertion
INSERT INTO dbo.SomeTable ([SomeField])
SELECT @someParameter
SELECT CAST(SCOPE_IDENTITY() AS BIGINT) AS ImportId
END
同樣的結果使用臨時表時:
CREATE TABLE #temp (ImportId BIGINT)
INSERT INTO #temp (ImportId)
SELECT CAST(SCOPE_IDENTITY() AS BIGINT)
SELECT ImportId FROM #temp
DROP TABLE #temp
還是沒有用表變量列:
DECLARE @importId BIGINT = SELECT CAST(SCOPE_IDENTITY() AS BIGINT)
SELECT @importId
當執行該過程直接在SQL Server中,我正在獲得所需的值。
我錯過了什麼?我認爲SET FMTONLY OFF
會做的伎倆,但在這種情況下,沒有任何變化,我的程序仍然「沒有列返回」。
編輯1
我試着在他的評論暗示什麼@NEER。我將SELECT
更改爲SELECT 1 AS ImportId
。但我仍然收到同樣的信息。
變化'SELECT CAST(SCOPE_IDENTITY()AS BIGINT)AS ImportId'爲'SELECT 1 AS ImportId'然後更新您的實體。 – NEER
@NEER我試過了,但EF仍然不能識別任何列。 –
你也可以試試這個嗎? '從OneOfYourTable'選擇1作爲Foo' – NEER