从存储过程返回日期时间

本文关键字:时间 日期 返回 存储过程 | 更新日期: 2023-09-27 18:09:07

我有这样的查询:

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

和下面的c#代码来执行查询:

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;