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
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
解决方案 »
- 从SQL Server中导出上亿的数据,应该保存为什么格式?及一些后续问题!请大家帮忙
- 一句好难想的SQL,请帮帮忙啊!!!!!!!!!!在线等您!!!!!!
- 怎样判断一各表在数据库中已经存在?(试了好多,都不好使)
- 【求助贴】sql 2005 express,创建udl文件,连不上数据库
- 无法连接:邹建请进
- 多表查询
- 求一数据库语句~
- DELPHI调用SQL server7.0的数据库恢复时的问题?
- sqlserver里表示范围的SQL语句
- sql select 查询问题
- 如何在过程中动态生成临时表表名,然后创建它
- 一个比较复杂的select是用视图还是用存储过程实现好此地?分别有什么优缺点
/*代码:王中涛*/
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