存储过程返回@@identity的问题!!!

BearRui 2004-05-07 09:27:02
有个表Orders,中有个主键OrderID,我想向表Orders插入一行,因为OrderID不能与以前的相同,而且不能为空,所以我就希望通过存储过程自己返回一个不相同的OrderID值。
----------------------------------
下面是我的存储过程:

CREATE PROCEDURE AddOrder
@OrderDate datetime
AS
insert Orders(OrderDate) values(@OrderDate)
return @@identity
GO
-----------------------------------
下面是我程序中的代码。

DataRow OrderRow=ds.Tables["Orders"].NewRow();
OrderRow["OrderID"]=0; //因为不能为空,所以设置为0
OrderRow["OrderDate"]=DateTime.Today;
ds.Tables["Orders"].Rows.Add(OrderRow);

SqlTransaction tsn=Cnn.BeginTransaction();
SqlCommand Cmd=new SqlCommand("AddOrder",Cnn,tsn);
Cmd.CommandType=CommandType.StoredProcedure;

SqlParameter param=Cmd.Parameters.Add("@OrderID",SqlDbType.Int);
param.SourceColumn="OrderID";
param.Direction=ParameterDirection.ReturnValue;

param=Cmd.Parameters.Add("@OrderDate",SqlDbType.DateTime);
param.SourceColumn="OrderDate";
param.SourceVersion=DataRowVersion.Current;

da.InsertCommand=Cmd;
da.Update(ds,"Orders"); //出错行。
-----------------------------------
但老是在最后一行出错,说OrderID字段不能为空,INSERT失败,

请问各位这是什么原因啊,

谢谢!!!
...全文
105 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
BearRui 2004-05-08
不好意思,终于解决了,原来不是代码出问题。

而是忘了对数据库进行设置标志列了。

还是谢谢,给分!!!
  • 打赏
  • 举报
回复
lxcc 2004-05-07
param.SourceColumn="OrderID";
param.Direction=ParameterDirection.ReturnValue;

//OrderID要设置为标志列
CREATE PROCEDURE AddOrder
@OrderDate datetime,
@id int
AS
insert Orders(OrderDate) values(@OrderDate)
select @id=@@IDENTITY
GO

SqlParameter param=Cmd.Parameters.Add("@id",SqlDbType.Int);
param.Direction=ParameterDirection.ReturnValue;
  • 打赏
  • 举报
回复
BearRui 2004-05-07
我也试过这样的

CREATE PROCEDURE AddOrder
@OrderID int
@OrderDate datetime
AS
insert Orders(OrderID,OrderDate) values(@OrderID,@OrderDate)
return @@identity
GO

但仍然在最后一句出错,说AddOrder存储过程需要@OrderID参数,而Update方法中没有这个
参数,可我明明SqlParameter param=Cmd.Parameters.Add("@OrderID",SqlDbType.Int);

这不是@OrderID参数吗。不知道什么原因,郁闷。

还请各位赐教!!!
  • 打赏
  • 举报
回复
lxcc 2004-05-07
insert Orders(OrderID,OrderDate) values(@OrderID,@OrderDate)
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-05-07 09:27
社区公告

让您成为最强悍的C#开发者