存储过程返回@@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失败,

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

谢谢!!!
...全文
154 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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)

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧