2016-04-19 108 views
0

我想從存儲過程返回值。我在執行SQL,一切工作正常,但是從C#調用的時候,我得到0帶輸出/輸入參數的存儲過程返回計數

CREATE PROCEDURE [dbo].[USerFilter_SP_MatchUserFilter](
@User varchar(50), 
@Car varchar(50), 
@Part varchar(50), 
@State varchar(50), 
@Year varchar(50)) 
AS 
Begin 
SELECT COUNT(*) 
FROM 
(

    /* Statement here request row count */ 

)X 
End 
+3

如果問題只從你的應用程序中調用時,它出現時,你應該告訴我們您正在使用.. – Rob

+4

我的靈力告訴代碼我使用'ExecuteNonQuery'而不是'ExecuteScalar'。 – Blorgbeard

+0

哪種RDBMS適用於?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –

回答

0

嘗試在設置NOCOUNT:

https://msdn.microsoft.com/en-nz/library/ms189837.aspx

我想你會看到的情況是在SSMS中的「消息」窗口將返回內部查詢的行計數。這可以將C#填充一點點。 SET NOCOUNT ON抑制了,所以你只返回的好東西:

CREATE PROCEDURE [dbo].[USerFilter_SP_MatchUserFilter](
    @User varchar(50), 
    @Car varchar(50), 
    @Part varchar(50), 
    @State varchar(50), 
    @Year varchar(50)) 
AS 
Begin 

    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    SELECT COUNT(*) 
    FROM 
    (
     /* Statement here request row count */ 
    )X 
End