日期:2014-05-19  浏览次数:20795 次

关于强类型数据集返回值的问题???
我使用的是强类型数据集(就是后缀为xsd)作为访问层,做的方法是返回一个scalar标量,在.net中调用存储过程,定义整形变量得到过程返回值.
我在存储过程里用return   @@error返回,在查询分析器里面返回的都是正确的,但是在.net中得到的返回值都是null

------解决方案--------------------
估计是你执行存过的方法不对,试试下面的demo:
/// <summary>
/// 执行SQL命令
/// </summary>
/// <param name= "CommandText "> 命令文本,可以是SQL语句/存储过程/表名 </param>
/// <param name= "Type "> 命令类型 </param>
/// <param name= "Params "> 参数集(仅在执行存储过程时使用) </param>
/// <returns> 影响到的行数 </returns>
public int ExecuteCommand(string CommandText, CommandType Type, params object[] Params)
{
int iRows = 0;
this.OpenConnection();
SqlCommand cmd = new SqlCommand(CommandText, this.m_DbConnection);
cmd.CommandType = Type;

if (Params != null && Type == CommandType.StoredProcedure)
{
SqlCommandBuilder.DeriveParameters(cmd);
// 第一个参数为@Return,忽略
for (int i = 1; i < cmd.Parameters.Count; i++)
cmd.Parameters[i].Value = Params[i - 1];
}

iRows = cmd.ExecuteNonQuery();

if (Params != null && Type == CommandType.StoredProcedure)
{
// 回传参数值

for (int i = 1; i < cmd.Parameters.Count; i++)
Params[i - 1] = cmd.Parameters[i].Value;
}

if (Type == CommandType.StoredProcedure)
iRows = (int)cmd.Parameters[0].Value;

return iRows;
}

------解决方案--------------------
应该是存储过程的问题
楼主再仔细看看