ÖNCELİkle Forumumuza Girdiğiniz İcin Cok TEsekkur Ediyorunuz Umarım Cok iyi Vakit Geçirirsiniz
[b]Herkez bizi Tercih Ediyorsa Bu Bir Tesadüf Değildir
Umarım İhtiyacı Olan Arkadaşların İşini Görür
Prosedürün Özelliklerini Maddelendirirsek
1. İstediğiniz Kadar Günlük GM Verebilirsin
2. LOAD_USER_DATA da Olmadığı İçin Sürekli SQL Servera Procedur Göndermez ve Transcation Log(LDF) Dosyanızda Dolayısıyla Şişmez yine Buna Bağlı Olarak SQL Serverınız Yorulmaz ve Kaynak Kullanımları Artmaz.
3. CHECK_DAYS_GMS i Sadece Günde 1 Kere Çalıştırmanız Yeterli isteğe Göre 2 de Yapabilirsiniz Size Kalmış Birşey...
USERDATA Tablomuzu Değiştiriyoruz...
ALTER TABLE USERDATA ADD GM_CreatedDate smalldatetime NOT NULL DEFAULT 0;
ALTER TABLE USERDATA ADD GM_Day tinyint NOT NULL DEFAULT 0;
Query Anayzlere Procedureyi Giriyoruz ;
-------------------------------------------
CREATE PROCEDURE CHECK_DAY_GMS
AS
/*
Author : AKUMA
*/
BEGIN TRAN
DECLARE @strUserID char(21),@GM_CreatedDate smalldatetime,@GM_Day tinyint
DECLARE USERDATA CURSOR FOR
SELECT strUserID,GM_CreatedDate,GM_Day FROM USERDATA WHERE Authority = 0
OPEN USERDATA
FETCH NEXT FROM USERDATA INTO @strUserID,@GM_CreatedDate,@GM_Day
WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE @Calc_Date smalldatetime
SET @Calc_Date = DATEDIFF(dd,@GM_CreatedDate,GetDate())
IF @Calc_Date >= @GM_Day
BEGIN
UPDATE USERDATA SET Authority = 1 WHERE strUserID = @strUserID
END
FETCH NEXT FROM USERDATA INTO @strUserID,@GM_CreatedDate,@GM_Day
END
CLOSE USERDATA
DEALLOCATE USERDATA
COMMIT TRAN
İKİNCİ KOd ;
------------------
CREATE PROCEDURE INSERT_GM_DAY
(
@strUserID char(21),
@Day tinyint
)
AS
/*
Author : AKUMA
*/
BEGIN TRAN
DECLARE @CheckUserID tinyint
SELECT @CheckUserID = COUNT(strUserID) FROM USERDATA WHERE strUserID = @strUserID
IF @CheckUserID <> 0
BEGIN
UPDATE USERDATA SET GM_CreatedDate = GetDate(),GM_Day = @Day,Authority = 0 WHERE strUserID = @strUserID
PRINT RTRIM(LTRIM(@strUserID)) + ' Karakterine ' + RTRIM(LTRIM(STR(@Day))) + ' Günlük GM''lik Verildi.'
END
ELSE
BEGIN
PRINT RTRIM(LTRIM(@strUserID)) + ' Karakteri Veritabaninda Bulunamadi.'
END
COMMIT TRAN
Süreli GM Vermek İçin Kullanacığınız Kod ;
--------------------------------------------------
EXEC CHECK_DAY_GMS
İyi Eğlenceler Dileğiyle...