存储过程的问题,大家帮忙~!! 存储过程。
我要做一个购物车的程序,其中 @CID 传递的是当前浏览的用户; @PID是当前用户正在浏览的货物号。
表 tosell 代表正在销售中的物品,其中PK 是 PID ,外键 有 CID (customer表中主键)
先检测 当前正在浏览的用户 @CID 是不是与 tosell 中的 CID 一样,如果一样,就不能把自己的物品放入购物车....后面的就不用说了吧 ,可是,为什么我得不到
@flag=2的情况,就算是自己买自己的东西。 帮忙。。。。。
CREATE PROCEDURE Select_Insert_Cart_Proc
@CID int,
@PID int
AS
declare @flag int
declare @tempID int
set @flag=0
select top 1 @tempID = CID from tosell where PID=@CID
if @CID = @tempID
begin
set @flag=2
end
else
begin
if not exists( select * from cart where CID=@CID and PID=@PID)
begin
set @flag=1
insert into cart (CID,PID) values (@CID,@PID)
end
else
begin
set @flag=-1
end
end
return @flag
GO
@flag=2 代表 自己在企图买自己的东西 (不允许放入购物车)
@flag=1 代表 自己在买别人的东西,并且自己的购物车中没有这种东西 (放入购物车)
@flag=-1代表 自己在买别人的东西,但自己的购物车中已经有了这种东西 (重复放入购物车,不允许)
下面是调用存储过程的代码,看看对吗》帮忙
protected void Button1_Click(object sender, EventArgs e)
{
if (Session[ "CID "] == null || Session[ "CID "] == " ")
{
ShowMessage( "Please Login.... ");
Response.Write( " <script> this.location.href= 'Default.aspx '; </script> ");
return;
}
string cid = Session[ "CID "].ToString();
using (SqlConnection Con = new SqlConnection(ConfigurationManager.ConnectionStrings[ "SQLCONNECTIONSTRING "].ConnectionString))
{
SqlCommand Cmd = new SqlCommand( "Select_Insert_Cart_Proc ", Con);
Cmd.Connection.Open();
Cmd.CommandType = CommandType.StoredProcedure;
int flag = 0;
SqlParameter CID = Cmd.Parameters.Add( "@CID ", SqlDbType.Int);
SqlParameter PID = Cmd.Parameters.Add( "@PID ", SqlDbType.Int);
CID.Value = cid;
PID.Value = id;
flag = Cmd.ExecuteNonQuery();
Cmd.Connection.Close();
if (flag == 1)
{
ShowMessage( "Cart successfully. ");
}
if (flag == -1)
{
ShowMessage( "Can not cart again ! ");
}
if (flag == 2)
{
ShowMessage( "Can not cart yourselves ' product ! ");
}
}
}
[解决办法]
存储过程:
CREATE PROCEDURE Select_Insert_Cart_Proc
@CID int,
@PID int
AS
declare @flag int
if exists(select 1 from tosell where PID=@CID)
select @flag = 2
else
begin
if not exists( select * from cart where CID=@CID and PID=@PID)
begin
set @flag=1
insert into cart (CID,PID) values (@CID,@PID)
end
else
begin
set @flag=-1
end
end
select @flag
GO
页面:
flag = Cmd.ExecuteNonQuery();
-->
falg = (int)cmd.ExecuteScalar();
[解决办法]
有错误啊,79 行未将对象引用设置到对象的实例。
______________________________________________
应该是没有查到任何结果,你直接在查询分析器里执行这句:
exec Select_Insert_Cart_Proc cid的值,pid的值
看看是什么结果