If @intTotal>@intCount /*如果已经察看的消息个数大于规定的存储个数*/
begin
declare @变量 varchar(10)
set @变量=19
exec('Delete Tbl_User_Message From (Select Top  '+@变量+'  * From Tbl_User_Message Where State=1 Order By PostDate)As T1 Where Tbl_User_Message.Id=T1.Id'
end

解决方案 »

  1.   

    /*检查用户的消息存储*/
    /*代码:王中涛*/
    CREATE PROCEDURE Sp_User_MessageCheck
    @lngUserId Bigint /*用户id*/
    @num int  
    AS
    Set NoCount On Declare @intGrade TinyInt
    Declare @intCount TinyInt
    Declare @intTotal TinyInt Declare @intError Int

    /*得到用户的级别*/
    Select @intGrade=Grade From Tbl_User_Info Where UserId=@lngUserId /*根据用户的级别决定个人消息存储区的大小*/
    Select @intCount=
    Case @intGrade
    When 1 Then 10
    When 2 Then 20
    When 3 Then 30
    When 4 Then 40
    End
    /*删除用户已经察看的,超出存储个数的,最老的消息纪录*/ Select @intTotal=Count(Id) From Tbl_User_Message Where (ReceiveId=9) And (State=1) Group By ReceiveId

    If @intTotal>@intCount /*如果已经察看的消息个数大于规定的存储个数*/
    Exec('Delete Tbl_User_Message From (Select Top '+ cast(@num as varchar(10)) +' * From Tbl_User_Message Where State=1 Order By PostDate)As T1 Where Tbl_User_Message.Id=T1.Id')
    GO