0
我只問SqlCommand
類的sync
方法。 有三種方法(衆所周知) - ExecuteReader()
,ExecuteScalar()
和ExecuteNonQuery()
。當我只需要輸出參數時,哪一種SqlCommand方法更可取?
哪一種方法,這是更適合的存儲過程喜歡這樣的:
CREATE PROCEDURE [dbo].[pr_test]
@partherId UNIQUEIDENTIFIER,
@lowerBound SMALLINT = -1 out,
@upperBound SMALLINT = -1 out
AS
BEGIN
SET NOCOUNT ON;
SELECT
@lowerBound = ISNULL(MIN(SrartDayNumber), -1)
,@upperBound = ISNULL(MAX(EndDayNumber), -1)
FROM [CpsOther].[dbo].[FinDocument] f
WHERE f.partherId = @partherId
END
我只需要out
PARAMS而已。我不知道哪種方法的SqlCommand
更適合這種情況?或者沒關係。 (結果相同)
int lowerBound = -1;
int upperBound = -1;
using (SqlConnection connection = new SqlConnection(_connectionString))
{
using (SqlCommand command = new SqlCommand())
{
command.Connection = connection;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "[dbo].[pr_test]";
SqlParameter lowerBoundParam = new SqlParameter
{
ParameterName = "@lowerBound",
Value = lowerBound,
Direction = ParameterDirection.Output
};
SqlParameter upperBoundParam = new SqlParameter
{
ParameterName = "@upperBound",
Value = upperBound,
Direction = ParameterDirection.Output
};
command.Parameters.AddWithValue("@partnerId", Guid.Empty);
command.Parameters.Add(lowerBoundParam);
command.Parameters.Add(upperBoundParam);
connection.Open();
object result = command.ExecuteScalar();
//or object result = command.ExecuteNonQuery();
lowerBound = lowerBoundParam.Value as int? ?? -1;
lowerBound = lowerBoundParam.Value as int? ?? -1;
}
}