0

我正在尝试使用存储过程从我的数据库中选择最后一条记录值,为此我将@UPID参数设置为SCORE_IDENTITY(),但是在执行存储过程后没有输出结果

CREATE PROCEDURE [dbo].[spAuditLogSelect_NewUser]

@UPID   int
AS
BEGIN

SET @UPID = SCOPE_IDENTITY()


SELECT
siUserProfile.UPID
,siUserProfile.ProfileType, siProfileType.RGDName AS ProfileTypeName
,siUserProfile.CBID, siCompany.ComName + ' - ' + siComBranch.ComBranchName AS CBName
,siUserProfile.FullName
,siUserProfile.ShortName
,siUserProfile.SerialCode
,siUserProfile.Serial
,siUserProfile.Gender



from siUserProfile WITH (NOLOCK)
inner join siUserProfileDetail WITH (NOLOCK) on siUserProfile.upid =             siUserProfileDetail.UPID 
left outer join siReferenceGroupDetail siProfileType WITH (NOLOCK) ON siUserProfile.ProfileType = siProfileType.RGDID
left outer join siComBranch WITH (NOLOCK) on siComBranch.CBID = siUserProfile.CBID
left outer join siCompany WITH (NOLOCK) ON siComBranch.CompanyID = siCompany.CompanyID


where siUserProfile.UPID = @UPID
4

3 回答 3

1

您需要使用 IDENT_CURRENT('tablename')。

请参考下面的链接,它说明了@@IDENTITY、SCOPE_IDENTITY() 和 IDENT_CURRENT('tablename') 之间的区别。

http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/

希望这会帮助你。

于 2013-05-02T11:07:32.980 回答
1

SCOPE_IDENTITY()应该在 之后使用insert。它不会在不同的会话中工作。

要检索最新条目,请尝试top 1

select  top 1 *
...
where   siUserProfile.UPID = @UPID
order by
        siUserProfile.ID desc
于 2013-05-02T09:55:19.360 回答
0

我假设您的表中有一些主键(PK)。编写程序,在该程序中触发查询

     select * from Your_Table where PK_Column in(select max(PK_Column) from Your_Table)

这样您就可以从数据库中获取最新记录。通过打开光标,您可以在程序中播放记录。

于 2013-05-02T10:39:05.650 回答