存储过程:
CREATE PROCEDURE ch_CarBorneStat
(
@FormCode varchar(50),--派车单号
@UserID int,--用户ID
@IsAllowRide int output--是否允许该员工剩坐该车次(0不允许,1允许)
)
AS
Declare @Ride int,--已乘坐人数
@Seat int,--座位数量
@IsDown int--该员工是否已经搭乘该车次 Select @Ride=Count(FormCode)
From Cheeda_CarBorne
Where FormCode=@FormCode Select @Seat=Number
From Cheeda_CarName
Where RegMark=(Select distinct RegMark From Cheeda_CarControl Where FormCode=@FormCode) Select @IsDown=Count(UserID)
From Cheeda_CarBorne
Where UserID=@UserID if(@Seat>@Ride and @IsDown <1)
select @IsAllowRide = 1
else
select @IsAllowRide = 0
GO
CS文件
protected bool IsHitching(string FormCode)
{
return true;
using (SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["SqlString"]))
{
using (SqlCommand cmd = new SqlCommand("ch_CarBorneStat", conn))
{
try
{
cmd.Connection.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FormCode", FormCode).Direction = ParameterDirection.Input;
cmd.Parameters.AddWithValue("@iUserID", Session["uid"].ToString()).Direction = ParameterDirection.Input;
cmd.Parameters["@IsAllowRide"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
int err = (int)cmd.Parameters["@IsAllowRide"].Value; if (err == 0)
{
return false;
}
}
catch
{
Response.Write(" <script>alert('系统错误,请与管理员联系!');window.close(); </script>");
}
finally
{
cmd.Connection.Close();
cmd.Dispose();
conn.Dispose();
}
}
}
}
为什么我无法获得返回的值?
CREATE PROCEDURE ch_CarBorneStat
(
@FormCode varchar(50),--派车单号
@UserID int,--用户ID
@IsAllowRide int output--是否允许该员工剩坐该车次(0不允许,1允许)
)
AS
Declare @Ride int,--已乘坐人数
@Seat int,--座位数量
@IsDown int--该员工是否已经搭乘该车次 Select @Ride=Count(FormCode)
From Cheeda_CarBorne
Where FormCode=@FormCode Select @Seat=Number
From Cheeda_CarName
Where RegMark=(Select distinct RegMark From Cheeda_CarControl Where FormCode=@FormCode) Select @IsDown=Count(UserID)
From Cheeda_CarBorne
Where UserID=@UserID if(@Seat>@Ride and @IsDown <1)
select @IsAllowRide = 1
else
select @IsAllowRide = 0
GO
CS文件
protected bool IsHitching(string FormCode)
{
return true;
using (SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["SqlString"]))
{
using (SqlCommand cmd = new SqlCommand("ch_CarBorneStat", conn))
{
try
{
cmd.Connection.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FormCode", FormCode).Direction = ParameterDirection.Input;
cmd.Parameters.AddWithValue("@iUserID", Session["uid"].ToString()).Direction = ParameterDirection.Input;
cmd.Parameters["@IsAllowRide"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
int err = (int)cmd.Parameters["@IsAllowRide"].Value; if (err == 0)
{
return false;
}
}
catch
{
Response.Write(" <script>alert('系统错误,请与管理员联系!');window.close(); </script>");
}
finally
{
cmd.Connection.Close();
cmd.Dispose();
conn.Dispose();
}
}
}
}
为什么我无法获得返回的值?
解决方案 »
- 测试死链的问题
- 【交流--数据层开发的技巧】
- 一个关于Session的问题,高人来解答
- CheckBox 多选删除的问题?
- 在datagrid中绑定多个TEXTBOX控件和dropdownlist控件,但是显示的格式不美观,咋办啊.请高手帮助
- 关于客户端身份验证
- 如何在另一个.aspx.cs文件中调用?
- 求教:如何去掉字符串中"<"与">"之间的字符(包括"<" ">")
- C#里注册AJAX这句话 Ajax.Utility.RegisterTypeForAjax(typeof(test));放在VB里怎么写?
- mac+PD虚拟机+win10+vs2015 日期时间格式问题
- 关于视频播放效率问题
- 关于弹出窗口拦截的问题?
改成:
cmd.Parameters.Add(
new SqlParameter("@IsAllowRide", SqlDbType.Int, 4, ParameterDirection.Output,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
1.应该是存储过程出了问题,所以没有返回值。你可以使用print @xx类型的语句把变量的返回值打印出来看看。
2.程序上出了问题,因为你采用了多个select语句,这样会生成多个dataset,所以你要找对结果集才行。“Select @Seat=Number
From Cheeda_CarName
Where RegMark=(Select distinct RegMark From Cheeda_CarControl Where FormCode=@FormCode)
”
这样的写法好像是有问题的,你试着把它付给@s,然后执行exec @s试试
SqlParameter prmName = new SqlParameter("@IsAllowRide ", SqlDbType.Int, 4);
prmName.Direction = ParameterDirection.Output;
cmd.Parameters.AddWithValue(prmName); int total = = Convert.ToInt16(prmName.Value);
CS文件
/// <summary>
/// 检查该次车辆是否允许乘坐,0为不允许,1为允许
/// </summary>
/// <param name="FormCode"> </param>
/// <returns> </returns>
protected bool IsHitching(string FormCode)
{
string err = "1";
using (SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["SqlString"]))
{
using (SqlCommand cmd = new SqlCommand("ch_CarBorneStat", conn))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FormCode", FormCode);
cmd.Parameters.AddWithValue("@UserID", Session["uid"].ToString()); SqlParameter pRet = new SqlParameter("@ret", SqlDbType.Int, 4); //定义返回值参数
pRet.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(pRet);
cmd.Connection.Open();// conn.Open();
cmd.ExecuteNonQuery();
//取得存储过程返回的值
err = pRet.Value.ToString();
conn.Close();
}
catch
{
Response.Write(" <script>alert('系统错误,请与管理员联系!');window.close(); </script>");
}
finally
{
cmd.Connection.Close();
cmd.Dispose();
conn.Dispose();
}
}
}
if (err == "1")
return true;
else
return false;
} 存储过程
CREATE PROCEDURE ch_CarBorneStat
(
@FormCode varchar(50),--派车单号
@UserID int --用户ID
)
AS
Declare @Ride int,--已乘坐人数
@Seat int,--座位数量
@IsDown int--该员工是否已经搭乘该车次 Select @Ride=Count(FormCode)
From Cheeda_CarBorne
Where FormCode=@FormCode Select @Seat=Number
From Cheeda_CarName
Where RegMark=(Select distinct RegMark From Cheeda_CarControl Where FormCode=@FormCode) Select @IsDown=Count(UserID)
From Cheeda_CarBorne
Where UserID=@UserID
And FormCode=@FormCode if(@Seat>@Ride and @IsDown <1)
begin
return 1--是否允许该员工剩坐该车次(0不允许,1允许)
end
else
begin
return 0
end
GO