asp.net中如何取得自动Sql中自动生成的ID(此ID不是标识,而是用用户自定义函数生成的)?请进
在如下的存储过程中,◎LendID是标识,此存储过程是正确的,但如果将LendID不用标识,而是用用户自定义函数自动生成的,那注释下面的语句该如何写?
CREATE PROCEDURE LendFromWHTableIndexInsert
(@LendID varchar(14) output,
@Linkman char(10),
@LinkPhone char(20)
)
AS INSERT INTO LendFromWHTableIndex
(
[fLinkman],
[fLinkPhone])
VALUES
(
@Linkman ,
@LinkPhone
)
/*如果@LendID是标识,此存储过程是正确的。但如果是用用户自定义函数自动生成的,下面的语句该如何写?*/
Select @LendID=@@identity
GO
此外如何在asp.net得到返回值(如果◎LendID是用标识,是正确的)?如下可以嘛?
声明参数时
cmd.Parameters.Add("@LendID", SqlDbType.VarChar, 14)
cmd.Parameters("@LendID").Direction = ParameterDirection.Output
得到返回值:
cmd.ExecuteNonQuery()
LendIDAuto = cmd.Parameters("@LendID").Value.ToString()
谢谢!!!!!!!!!!!!!
问题点数:20、回复次数:5Top
1 楼dahua1980(落叶飞花)回复于 2005-08-03 11:54:27 得分 0
问题我已经解决了:改为如下:
CREATE PROCEDURE LendFromWHTableIndexInsert
(@LendID varchar(14) output,
@Linkman char(10),
@LinkPhone char(20)
)
AS INSERT INTO LendFromWHTableIndex
(
[fLinkman],
[fLinkPhone])
VALUES
(
@Linkman ,
@LinkPhone
)
/*改为此就可*/
Select top 1 @lendid=fLendID from LendFromWHTableIndex order by fLendID desc
GO
但有一个疑问:
如果多用户同时操作,会不会冲突?
需不需要先锁定表?
如果在aspnet中我将插入数据表操作放在事务中是否会就没有冲突了?有就是说如果在进行事务时,是否就将表锁定了?
Top
2 楼devilzh(魔鬼)回复于 2005-08-04 10:36:26 得分 0
帮你顶一下了啊Top
3 楼adandelion(水源是CSDN最黑的地方,但这个最黑是CSDN一手制造的!)回复于 2005-08-04 10:37:06 得分 0
GZ
恭喜楼主.Top
4 楼jimu8130(火箭的未来在哪里?)回复于 2005-08-04 11:03:44 得分 20
最好用触发器来做了,不过那样就必须得定时清理了
锁表如果在人数多的时候影响效率Top
5 楼jimu8130(火箭的未来在哪里?)回复于 2005-08-04 11:05:12 得分 0
还有生成临时id也可以用时间加上随机数来做Top




