我试图通过使用存储过程从我的数据库中选择最后一个记录值,为此我将@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
答案 0 :(得分:1)
SCOPE_IDENTITY()
意味着在insert
之后使用。它不适用于不同的会话。
要检索最新条目,请尝试top 1
:
select top 1 *
...
where siUserProfile.UPID = @UPID
order by
siUserProfile.ID desc
答案 1 :(得分:1)
您需要使用IDENT_CURRENT('tablename')。
请参阅以下链接,说明@@ IDENTITY,SCOPE_IDENTITY()和IDENT_CURRENT('tablename')之间的区别。
希望这会对你有所帮助。
答案 2 :(得分:0)
我假设您的表中有一些主键(PK)。编写程序,在该程序中触发查询
select * from Your_Table where PK_Column in(select max(PK_Column) from Your_Table)
这样您就可以从DB获取最新记录。通过打开光标,您可以在程序中使用记录。