存储过程语句:
create proc proc_SameDaySameTimeSameProduct
@USERNAME VARCHAR(25),
@SPBH VARCHAR(25),
@JFLX int,
@HYJFDTSJ DATETIME,
@Result int output
AS
set @Result = (select count(*)
from dbo.HYGL_JFDT
where USERNAME=@USERNAME and SPBH=@SPBH and JFLX=@JFLX and datediff(dd,@HYJFDTSJ,getdate())=0)然后,动软DBUtility类下的一个方法如下 /// <summary>
/// 执行存储过程,返回影响的行数
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="rowsAffected">影响的行数</param>
/// <returns></returns>
public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
int result;
connection.Open();
SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
rowsAffected = command.ExecuteNonQuery();
//存储过程返回值,(这个是预留以后用的)
result = (int)command.Parameters["ReturnValue"].Value;
connection.Close();
return result;
}
} /// <summary>
/// 创建 SqlCommand 对象实例(用来返回一个整数值)
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand 对象实例</returns>
private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
command.Parameters.Add(new SqlParameter("ReturnValue",
SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
return command;
}
其中,result = (int)command.Parameters["ReturnValue"].Value;的"ReturnValue"怎么理解?
然后在DAL层调用,运用RunProcedure()方法???
在线等待
create proc proc_SameDaySameTimeSameProduct
@USERNAME VARCHAR(25),
@SPBH VARCHAR(25),
@JFLX int,
@HYJFDTSJ DATETIME,
@Result int output
AS
set @Result = (select count(*)
from dbo.HYGL_JFDT
where USERNAME=@USERNAME and SPBH=@SPBH and JFLX=@JFLX and datediff(dd,@HYJFDTSJ,getdate())=0)然后,动软DBUtility类下的一个方法如下 /// <summary>
/// 执行存储过程,返回影响的行数
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="rowsAffected">影响的行数</param>
/// <returns></returns>
public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
int result;
connection.Open();
SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
rowsAffected = command.ExecuteNonQuery();
//存储过程返回值,(这个是预留以后用的)
result = (int)command.Parameters["ReturnValue"].Value;
connection.Close();
return result;
}
} /// <summary>
/// 创建 SqlCommand 对象实例(用来返回一个整数值)
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand 对象实例</returns>
private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
command.Parameters.Add(new SqlParameter("ReturnValue",
SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
return command;
}
其中,result = (int)command.Parameters["ReturnValue"].Value;的"ReturnValue"怎么理解?
然后在DAL层调用,运用RunProcedure()方法???
在线等待
ReturnValue其实就是的参数,加上Value就是返回值你只需要在DAL层调用RunProcedure()来执行你的存储过程就行了!
错误信息:
过程或函数 'proc_SameDaySameTimeSameProduct' 需要参数 '@Result',但未提供该参数
其中SameDaySameTimeSameProduct' 是我写的一个存储过程,@Result是一个带输出的参数因为动软生成的三层中DBUtility有一个
public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected){;}这个方法
其中paramters只的是存储过程中的输入参数,但我的要的是存储过程带输出参数怎么弄?
如果直接在DAL层调用的话,编译不会不问题,但是执行功能就会报错的。李天平大哥肯定会想到带返回值的存储过程的处理的方法在DBUtility类中。???