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;