使用ExecuteReader我能夠返回DataReader
返回的輸出參數,但是out
參數返回0。可以使用DataReader
使用ExecuteNonQuery我能夠檢索out
參數(正確的值)但ExecuteNonQuery
不返回DataReader
。
下面是該過程給背景:
SQL查詢:
CREATE PROCEDURE [dbo].[SelectDays]
@dateStart datetime,
@dateEnd datetime,
@recordCount bigint out
AS
BEGIN
select @recordCount = count(*)
from dbo.[Days]
where [Date]>[email protected] and [Date]<[email protected];
select [ID],[Name]
from dbo.[Days]
where [Date]>[email protected] and [Date]<[email protected];
END
有沒有一種方法,我可以返回一個DataReader
還有out
參數,或者我應該創建兩個單獨的程序每?
C#代碼:
Int32 returnValue = 0;
Parameters parameters = new Parameters();
parameters.Add(new SqlParameter("@dateStart", dateStart != null ? (object)dateStart : DBNull.Value));
parameters.Add(new SqlParameter("@dateEnd", dateEnd != null ? (object)dateEnd : DBNull.Value));
SqlParameter out_recordCount = new SqlParameter("@recordCount", SqlDbType.BigInt);
out_recordCount.Direction = ParameterDirection.InputOutput;
out_recordCount.Value = recordCount;
parameters.Add(out_recordCount);
SqlParameter return_Value = new SqlParameter("@RETURN_VALUE", SqlDbType.Int);
return_Value.Direction = ParameterDirection.ReturnValue;
parameters.Add(return_Value);
dataReader = this.command.ExecuteReader("dbo.SelectDays", CommandType.StoredProcedure, parameters.ToArray());
if(out_recordCount.Value != DBNull.Value)
recordCount = Convert.ToInt64(out_recordCount.Value);
returnValue = Convert.ToInt32(return_Value.Value);
return returnValue;
你能告訴你的C#代碼?你是否將'CommandType'設置爲'CommandType.StoredProcedure'?你如何將參數傳遞給命令? – juharr
也許[這](http://stackoverflow.com/questions/6374193/sql-output-stored-procedures-not-working-with-executereader)將有所幫助。 – juharr
添加了C#代碼 –