存储过程的参数传递问题?
我用下面的命令调用有out参数的存储过程, 是可以正确执行的。
SqlParameter[] commandParameters = new SqlParameter[2];
commandParameters[0] = new SqlParameter( "@serviceid ", SqlDbType.Int);
commandParameters[0].Value = 0;
commandParameters[0].Direction = ParameterDirection.Output;
commandParameters[1] = new SqlParameter( "@pcid ", SqlDbType.Int);
commandParameters[1].Value = 0;
commandParameters[1].Direction = ParameterDirection.Output;
Database.ExecuteNonQuery(CommandType.StoredProcedure, "getfreePcidandServiceid ", commandParameters);
serviceid = (int) (commandParameters[0].Value);
pcid = (int)(commandParameters[1].Value);
可是这样有弊病:
一是参数数组大小必须定义好,
二是取得out参数的值要用数组顺序,不方便。如commandParameters[1].Value
有没有好的获得out参数的值的方法?
------解决方案--------------------没错,你那样不行,得用当前的SqlCommand对象Parameters去获取
不知道你Database类里怎么写的
实际上你需要在Database类里公开SqlCommand对象.
给你一个代码参考下:
using (SqlConnection connection = new SqlConnection(SqlConnstr))
{
connection.Open();
SqlCommand command = BuildIntCommand(connection,storedProcName, parameters );
command.ExecuteNonQuery();
return (int)command.Parameters[ "ReturnValue "].Value;
}
你要返回多个的话,就最好公开SqlCommand对象