Vider une boîte de messages
De Wiki1000
(Différences entre les versions)
Ligne 1 : | Ligne 1 : | ||
− | Statistique par boite à message : | + | '''Statistique par boite à message :''' |
<pre> | <pre> | ||
select t2.Name, count(*) from dbo.TDBFMESSAGE t0 WITH (NOLOCK) | select t2.Name, count(*) from dbo.TDBFMESSAGE t0 WITH (NOLOCK) | ||
Ligne 9 : | Ligne 9 : | ||
</pre> | </pre> | ||
− | + | '''Procédure stockée pour supprimer les messages d'une boite:''' | |
+ | <pre> | ||
+ | IF EXISTS(SELECT * FROM sys.objects WHERE name='deleteMessages' AND type='P') | ||
+ | drop procedure dbo.deleteMessages | ||
+ | GO | ||
− | + | create procedure dbo.deleteMessages | |
+ | @Name varchar(80), | ||
+ | @Date datetime | ||
+ | As | ||
− | |||
BEGIN TRANSACTION | BEGIN TRANSACTION | ||
− | |||
− | |||
− | |||
− | |||
− | |||
insert into dbo.sysGlbTemp | insert into dbo.sysGlbTemp | ||
select '000000000000000000020000811E0003',t0.oid from dbo.TDBFMESSAGE t0 WITH (NOLOCK) | select '000000000000000000020000811E0003',t0.oid from dbo.TDBFMESSAGE t0 WITH (NOLOCK) | ||
Ligne 25 : | Ligne 26 : | ||
join TDBFMESSAGEBOX t2 on t2.oid= t1.oiddbfMessageBox | join TDBFMESSAGEBOX t2 on t2.oid= t1.oiddbfMessageBox | ||
join sysOTPs t3 on oidOTP=t0.idOTP | join sysOTPs t3 on oidOTP=t0.idOTP | ||
− | where (t3.oClass = 'TdbfMessage') and ((t2.Name = | + | where (t3.oClass = 'TdbfMessage') and ((t2.Name = @Name) and (t0.DateCreate < @Date)) |
+ | |||
+ | insert into dbo.sysGlbTemp | ||
+ | select '000000000000000000020000811E0003',t0.oid from dbo.TDBFMESSAGE t0 WITH (NOLOCK) | ||
+ | join sysOTPs t1 on oidOTP=t0.idOTP | ||
+ | where (t1.oClass = 'TdbfMessage') and ((t0.ReceivedFrom = @Name) and (t0.DateCreate < @Date)) | ||
+ | and not t0.oid in (select oid from dbo.sysGlbTemp where idOpe='000000000000000000020000811E0003') | ||
insert into dbo.sysGlbTemp | insert into dbo.sysGlbTemp | ||
Ligne 46 : | Ligne 53 : | ||
delete from dbo.sysGlbTemp where idOpe='000000000000000000870000811E0004' | delete from dbo.sysGlbTemp where idOpe='000000000000000000870000811E0004' | ||
− | |||
delete from dbo.sysGlbTemp where idOpe='000000000000000000040000811E0005' | delete from dbo.sysGlbTemp where idOpe='000000000000000000040000811E0005' | ||
− | |||
delete from dbo.sysGlbTemp where idOpe='000000000000000000020000811E0003' | delete from dbo.sysGlbTemp where idOpe='000000000000000000020000811E0003' | ||
COMMIT TRANSACTION | COMMIT TRANSACTION | ||
+ | GO | ||
</pre> | </pre> | ||
− | + | '''Exemple :''' | |
+ | |||
+ | <pre> | ||
+ | exec dbo.deleteMessages '660_SF_MONO', '01/01/2014' | ||
+ | </pre> |
Version du 15 avril 2015 à 08:05
Statistique par boite à message :
select t2.Name, count(*) from dbo.TDBFMESSAGE t0 WITH (NOLOCK) join TDBFMESSAGEBOXASSMESSAGE t1 on t1.oiddbfMessage = t0.oid join TDBFMESSAGEBOX t2 on t2.oid= t1.oiddbfMessageBox join sysOTPs t3 on oidOTP=t0.idOTP where (t3.oClass = 'TdbfMessage') group by t2.Name order by count(*) des
Procédure stockée pour supprimer les messages d'une boite:
IF EXISTS(SELECT * FROM sys.objects WHERE name='deleteMessages' AND type='P') drop procedure dbo.deleteMessages GO create procedure dbo.deleteMessages @Name varchar(80), @Date datetime As BEGIN TRANSACTION insert into dbo.sysGlbTemp select '000000000000000000020000811E0003',t0.oid from dbo.TDBFMESSAGE t0 WITH (NOLOCK) join TDBFMESSAGEBOXASSMESSAGE t1 on t1.oiddbfMessage = t0.oid join TDBFMESSAGEBOX t2 on t2.oid= t1.oiddbfMessageBox join sysOTPs t3 on oidOTP=t0.idOTP where (t3.oClass = 'TdbfMessage') and ((t2.Name = @Name) and (t0.DateCreate < @Date)) insert into dbo.sysGlbTemp select '000000000000000000020000811E0003',t0.oid from dbo.TDBFMESSAGE t0 WITH (NOLOCK) join sysOTPs t1 on oidOTP=t0.idOTP where (t1.oClass = 'TdbfMessage') and ((t0.ReceivedFrom = @Name) and (t0.DateCreate < @Date)) and not t0.oid in (select oid from dbo.sysGlbTemp where idOpe='000000000000000000020000811E0003') insert into dbo.sysGlbTemp select '000000000000000000870000811E0004',oid from dbo.TDMFDOCUMENT where oiddbfMessage in (select oid from dbo.sysGlbTemp where idOpe='000000000000000000020000811E0003') delete from dbo.TDMFDOCUMENT where oid in (select oid from dbo.sysGlbTemp where idOpe='000000000000000000870000811E0004') update dbo.TDBFMESSAGE set oidAnswerTo=NULL where oidAnswerTo in (select oid from dbo.sysGlbTemp where idOpe='000000000000000000020000811E0003') insert into dbo.sysGlbTemp select '000000000000000000040000811E0005',oid from dbo.TDBFMESSAGEBOXASSMESSAGE where oiddbfMessage in (select oid from dbo.sysGlbTemp where idOpe='000000000000000000020000811E0003') delete from dbo.TDBFMESSAGEBOXASSMESSAGE where oid in (select oid from dbo.sysGlbTemp where idOpe='000000000000000000040000811E0005') delete from dbo.TDBFMESSAGE where oid in (select oid from dbo.sysGlbTemp where idOpe='000000000000000000020000811E0003') delete from dbo.sysGlbTemp where idOpe='000000000000000000870000811E0004' delete from dbo.sysGlbTemp where idOpe='000000000000000000040000811E0005' delete from dbo.sysGlbTemp where idOpe='000000000000000000020000811E0003' COMMIT TRANSACTION GO
Exemple :
exec dbo.deleteMessages '660_SF_MONO', '01/01/2014'