C# 存储过程的返回日期时间

C# 存储过程的返回日期时间,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我有一个疑问: CREATE PROCEDURE [dbo].[spGetWhenTaskLastRun] @dt datetime out AS BEGIN SELECT @dt = whenTaskLastRan FROM [dbo].[t_whenTaskLastRan] END SqlDataReader reader; string ConnectionString = SafaConnect

我有一个疑问:

CREATE PROCEDURE [dbo].[spGetWhenTaskLastRun]   
    @dt datetime out         
AS
BEGIN
    SELECT  
        @dt = whenTaskLastRan
    FROM
        [dbo].[t_whenTaskLastRan]   
END
SqlDataReader reader;

string ConnectionString = SafaConnectionString.ConnectionString;

SqlConnection Connection = new SqlConnection(ConnectionString);

SqlCommand cmd = new SqlCommand("spGetWhenTaskLastRun", Connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@dt", SqlDbType.DateTime);
cmd.Parameters["@dt"].Direction = ParameterDirection.Output;

try
{
    Connection.Open();
    reader = cmd.ExecuteReader();

    if (reader.HasRows)
        return (DateTime)cmd.Parameters["@dt"].Value;
    else
        return DateTime.Now;
}
执行此查询的C#代码:

CREATE PROCEDURE [dbo].[spGetWhenTaskLastRun]   
    @dt datetime out         
AS
BEGIN
    SELECT  
        @dt = whenTaskLastRan
    FROM
        [dbo].[t_whenTaskLastRan]   
END
SqlDataReader reader;

string ConnectionString = SafaConnectionString.ConnectionString;

SqlConnection Connection = new SqlConnection(ConnectionString);

SqlCommand cmd = new SqlCommand("spGetWhenTaskLastRun", Connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@dt", SqlDbType.DateTime);
cmd.Parameters["@dt"].Direction = ParameterDirection.Output;

try
{
    Connection.Open();
    reader = cmd.ExecuteReader();

    if (reader.HasRows)
        return (DateTime)cmd.Parameters["@dt"].Value;
    else
        return DateTime.Now;
}
但是它总是返回
reader.HasRows=false
并且没有记录


查询是否出错?

存储过程没有返回结果集;它只分配输出参数值。改用
ExecuteNonQuery
方法。如果没有符合条件的行或列值为
NULL
,则输出参数将为
NULL

cmd.ExecuteNonQuery();
if (cmd.Parameters["@dt"].Value == DBNull.Value)      
    return (DateTime)cmd.Parameters["@dt"].Value;
else
    return DateTime.Now;

存储过程未返回结果集;它只分配输出参数值。改用
ExecuteNonQuery
方法。如果没有符合条件的行或列值为
NULL
,则输出参数将为
NULL

cmd.ExecuteNonQuery();
if (cmd.Parameters["@dt"].Value == DBNull.Value)      
    return (DateTime)cmd.Parameters["@dt"].Value;
else
    return DateTime.Now;