从存储过程返回日期时间
本文关键字:时间 日期 返回 存储过程 | 更新日期: 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;