
Ateş Kuşu bu başka ne diyem

Hıza bakarsan sanki ateş suyu içmiş gibi..Kuri_YJ yazdı:Recep'im Şimşek'im Karadeniz Fırtınam![]()
Ateş Kuşu bu başka ne diyem
Eskiden imaj her şeydi, programcılıkta da tasarım her şeydir! Projeyi iyi bir projeksiyona tabi tutmadan şiştikçe gelişigüzel şişirirseniz kontrolünü de kaybedersiniz verminini de. Tablolardan alanların tasrımına ve de hangi alanların sorgulanacaksa uygun indekslerin oluşturulmasına, hepsi bir bütün halinde gözönünde bulundurulup tasarlanmalıdır. Yoksa bu 7 KG balı 100 TL ye satanların işine döner. Hasbel kader aileden ve bizzat arıcılığa az da olsa zamanında bulaşmış biri olarak hep şunu derim; Arılar balın kilosunun 10 TL nin altında satıldığını duysa inanın bal yapmazlar! Bu işte de firebird geliştiricilerine yazık değil mi? Onca emek veriyorlar biz elimize yüzümüze bulaştırırsak, hakkını veremezsek adamlar projeyi bırakır be.cecihan yazdı:35 sn. sürmesinin sebebi şu:
ben büyük bir numune grubunda çalıştırdım hız farkının ne kadar fark edeceğini anlamak için.aynı sql ve diğer tablodan harmanlama işi her laboratuvar için ve her numune için çalıştığı için 47 kere çalışmış. harmanladığım tabloda da sırano, başlık ve başlangıç, bitiş sıra nolar var. eğer ilk tablodaki sıra nolar başlangıç ve bitiş grubunun içindeyse ilk tablo sonuçlarındaki ilk sıra nosundan önce başlık yazılarak bir tür grup başlığı yazdırıyorum. harman tablo'da 47 kere sorgulanıyor ve hafızaya alınıyor, karşılaştırmada hafızada yapılıyor.
c++builder ile yazıyorum kodu. isterseniz o bölümü gönderebilirim. ama bu bile pazartesi bizim numune kabulcülerin ağzını açık bırakacak. 20 dk. bekledikleri rapor oluyordu.(50-60 defa aynı SQL çalışıyordu)
Kod: Tümünü seç
TStringList *Mevzuat, *Temp, *Edenler;
TStringList *Notlar2;
TRichEdit *Deger;
TpFIBQuery *Que,*Que2;
TpFIBQuery *GepQ, *RapKalem;
TMemoryStream *MStream;
bool DEBUG=false;
AnsiString Lii,gg;
TStrings *Liste;
int i;
Edenler =new TStringList;
GepQ= new TpFIBQuery(0);
GepQ->Database=DM->Database;
GepQ->Options=GepQ->Options<<qoTrimCharFields;
Deger = new TRichEdit(Form2);
Deger->Parent = Form2;
Deger->Lines->Clear();
Deger->Width=0;
Deger->Height=0;
Deger->WordWrap=false;
//1 başlangıcı
Que= new TpFIBQuery(0);
Que->Database=DM->Database;
Que->Options=Que->Options<<qoTrimCharFields;
Que->SQL->Add("Select OLUMLU, TESTADI, LABID, TIP from TESTKALEMLISTE");
Que->SQL->Add("where Refidx="+idx+" and GRUP='"+grup+"' order by sirano");
Que->ExecQuery();
SonucHazirla(Form2,Deger, DM->fdNumune->FieldByName("MEVZUATDISI")->AsString, Que,gg,gg);
delete Que;
//1 sonu
DM->RaporKalem->Active=false;
DM->RaporKalem->CreateDataSet();
DM->RaporKalem->Active=true;
GepQ->Close();
GepQ->SQL->Clear();
//2. başlangıcı
//viewli hali
GepQ->SQL->Add("Select REFIDX, TESTADI, GRUP, BIRIM, METHOD, REFERANS, TLIMIT, ANBASTARIH, ANBITTARIH,");
GepQ->SQL->Add(" SIRANO, V1, V2, V3, V4, V5, V6, G0, G1, G2, SONUC, TLA, TLIMITID, OLUMLU, SINIR, AKREDITE from TESTKALEMLISTE");
GepQ->SQL->Add("where Refidx="+idx+" and GRUP='"+grup+"' order by sirano");//*/
Que= new TpFIBQuery(0);
Que->Database=DM->Database;
Que->Options=Que->Options<<qoTrimCharFields;
Que->SQL->Add("select TABAKAID from testgrup Where ID=");
Que->SQL->Add("(Select PAKET as PAKET from NUMUNE where Numune.IDX="+idx+")");
Que->ExecQuery();
//2.sonu
RapKalem= new TpFIBQuery(0);
RapKalem->Database=DM->Database;
RapKalem->Options=RapKalem->Options<<qoTrimCharFields;
RapKalem->SQL->Add("SELECT IDX, SIRANO, PARAMETRE, BIRIM, SONUC,");
RapKalem->SQL->Add(" YONETMELIK, METHOD, TLIMIT, KOMUT, GRUP, REFIDX, MINIDX, MAXIDX FROM RAPKALEM");
RapKalem->SQL->Add(" Where REFIDX="+IntToStr(Que->FieldByName("TABAKAID")->AsInteger)+" and (GRUP='"+grup.SubString(1,2)+"' or GRUP='HP') Order by SIRANO");
RapKalem->ExecQuery();
delete Que;
if(DEBUG) ShowMessage("1.3");
3. başlangıcı
Liste=new TStringList();
GepQ->ExecQuery();
while(!GepQ->Eof)
{
Liste->Add(GepQ->FieldByName("SIRANO")->AsString);
GepQ->Next();
}
GepQ->ExecQuery();
//3.sonu
//4. başlangıcı
while(!GepQ->Eof)
{
cc:
if(!RapKalem->Eof)
if(GepQ->FieldByName("SIRANO")->AsInteger>=RapKalem->FieldByName("SIRANO")->AsInteger)
{
if(RapKalem->FieldByName("MINIDX")->AsInteger==0 && RapKalem->FieldByName("MAXIDX")->AsInteger==0)
{
RapKalemEkle(RapKalem);
RapKalem->Next();
continue;
}
if(RapKalem->FieldByName("MINIDX")->AsInteger>0 || RapKalem->FieldByName("MAXIDX")->AsInteger>0)
{
for(i=0;i<Liste->Count;i++)
if(RapKalem->FieldByName("MINIDX")->AsInteger<=StrToInt(Liste->Strings[i]))
if(RapKalem->FieldByName("MAXIDX")->AsInteger>=StrToInt(Liste->Strings[i]))
{
RapKalemEkle(RapKalem);
RapKalem->Next();
goto cc;
}
RapKalem->Next();
continue;
}
}
DM->RaporKalem->Append();
DM->RaporKalem->FieldByName("SIRANO")->AsString=GepQ->FieldByName("SIRANO")->AsString;
JvRichEdit1->Lines->Clear();
MStream=new TMemoryStream();
GepQ->FieldByName("TESTADI")->SaveToStream(MStream);
MStream->Position = 0;
JvRichEdit1->Lines->LoadFromStream(MStream);
delete MStream;
if(DM->fdNumune->FieldByName("MEVZUATDISI")->AsString!="E")
if(GepQ->FieldByName("OLUMLU")->AsString=="F")
{
JvRichEdit1->SelectAll();
JvRichEdit1->SelAttributes->Style=TFontStyles()<<fsBold;
}
MStream=new TMemoryStream();
JvRichEdit1->Lines->SaveToStream(MStream);
MStream->Position = 0;
dynamic_cast<TBlobField*>(DM->RaporKalem->FieldByName("PARAMETRE"))->LoadFromStream(MStream);
delete MStream;
DM->RaporKalem->FieldByName("SATIR")->AsInteger=JvRichEdit1->Lines->Count;
DM->RaporKalem->FieldByName("BIRIM")->AsString=GepQ->FieldByName("BIRIM")->AsString;
if(DM->fdNumune->FieldByName("ALMAZAMAN")->AsInteger<=0)
DM->RaporKalem->FieldByName("YONETMELIK")->Value=GepQ->FieldByName("SINIR")->Value;
if(DM->fdNumune->FieldByName("ALMAZAMAN")->AsInteger==1)
DM->RaporKalem->FieldByName("YONETMELIK")->Value=GepQ->FieldByName("G1")->Value;
if(DM->fdNumune->FieldByName("ALMAZAMAN")->AsInteger==2)
DM->RaporKalem->FieldByName("YONETMELIK")->Value=GepQ->FieldByName("G2")->Value;
DM->RaporKalem->FieldByName("METHOD")->AsString=GepQ->FieldByName("METHOD")->AsString;
DM->RaporKalem->FieldByName("REFERANS")->AsString=GepQ->FieldByName("REFERANS")->AsString;
if(GepQ->FieldByName("TLIMITID")->AsInteger>0)
DM->RaporKalem->FieldByName("LIMIT")->AsString=GepQ->FieldByName("TLIMIT")->AsString;
else
DM->RaporKalem->FieldByName("LIMIT")->AsString="---";
DM->RaporKalem->FieldByName("V1")->AsString=GepQ->FieldByName("V1")->AsString;
DM->RaporKalem->FieldByName("V2")->AsString=GepQ->FieldByName("V2")->AsString;
DM->RaporKalem->FieldByName("V3")->AsString=GepQ->FieldByName("V3")->AsString;
DM->RaporKalem->FieldByName("V4")->AsString=GepQ->FieldByName("V4")->AsString;
DM->RaporKalem->FieldByName("V5")->AsString=GepQ->FieldByName("V5")->AsString;
DM->RaporKalem->FieldByName("V6")->AsString=GepQ->FieldByName("V6")->AsString;
DM->RaporKalem->FieldByName("G0")->AsString=GepQ->FieldByName("G0")->AsString;
DM->RaporKalem->FieldByName("G1")->AsString=GepQ->FieldByName("G1")->AsString;
DM->RaporKalem->FieldByName("G2")->AsString=GepQ->FieldByName("G2")->AsString;
DM->RaporKalem->FieldByName("ANBASTARIH")->AsString=GepQ->FieldByName("ANBASTARIH")->AsString;
DM->RaporKalem->FieldByName("ANBITTARIH")->AsString=GepQ->FieldByName("ANBITTARIH")->AsString;
DM->RaporKalem->FieldByName("SONUC")->AsString=GepQ->FieldByName("SONUC")->AsString;
if(GepQ->FieldByName("TLA")->AsString=="1")
DM->RaporKalem->FieldByName("SONUC")->AsString="Tespit Edilmedi";
DM->RaporKalem->FieldByName("OLUMLU")->AsString=GepQ->FieldByName("OLUMLU")->AsString;
DM->RaporKalem->FieldByName("KOMUT")->AsString="01";
DM->RaporKalem->Post();
GepQ->Next();
}
//4.sonu.
delete RapKalem;
delete Liste;
DM->RaporKalem->First();
Lii="";
if(DEBUG) ShowMessage("1.4.1");
Notlar2=new TStringList;
Que= new TpFIBQuery(0);
Que->Database=DM->Database;
Que->Options=Que->Options<<qoTrimCharFields;
Que->SQL->Add("Select distinct TESTKALEM.HIDX from TESTKALEM Inner Join TESTDATA on testkalem.testidx=Testdata.idx");
Que->SQL->Add(" Where testkalem.refidx="+idx+" and (Select LAB_ADI from LABORATUAR where IDX=TESTDATA.GRUPID)='"+grup+"' order by Testdata.sirano");
Que->ExecQuery();
if(DEBUG) ShowMessage("1.4.2");
while(!Que->Eof)
{
if(Lii!="") Lii=Lii+" or ";
Lii=Lii+"IDX="+Que->FieldByName("HIDX")->AsString;
Que->Next();
}
Que->Close();
if(Lii!="")
{
try
{
Que->Close();
Que->SQL->Clear();
Que->SQL->Add("Select distinct (select KULLANICIAD from USERS where ID=HAVEDENID) from HAVALE Where ("+Lii+") and HAVALE.HDURUM<>'099'");
Que->ExecQuery();
while(!Que->Eof)
{
Edenler->Add(Que->FieldByName("KULLANICIAD")->AsString);
Que->Next();
}
}
catch(...)
{
}
try
{
bool FirstA=true;
Que->Close();
Que->SQL->Clear();
Que->SQL->Add("Select ACIKLAMA from HAVALE Where ("+Lii+")");// and HAVALE.HDURUM='007'");
Que->ExecQuery();
if(DEBUG) ShowMessage("1.4.3");
while(!Que->Eof)
{
int i;
Temp=new TStringList;
MStream=new TMemoryStream();
Que->FieldByName("ACIKLAMA")->SaveToStream(MStream);
MStream->Position = 0;
Temp->LoadFromStream(MStream);
delete MStream;
for(i=0;i<Temp->Count;i++)
{
if(FirstA)
Notlar2->Add("Not: "+Temp->Strings[i]);
else
Notlar2->Add(Temp->Strings[i]);
FirstA=false;
}
delete Temp;
Que->Next();
}
}
catch(...)
{
}
}
delete Que;
Que= new TpFIBQuery(0);
Que->Database=DM->Database;
Que->Options=Que->Options<<qoTrimCharFields;
Que->SQL->Add("Select RAPOR,RAPORBASLIK,MEVZUAT From TESTGRUP Where ID="+DM->fdNumune->FieldByName("PAKET")->AsString);
Que->ExecQuery();
Mevzuat=new TStringList;
MStream=new TMemoryStream();
dynamic_cast<TBlobField*>(DM->fdNumune->FieldByName("MEVZUAT"))->SaveToStream(MStream);
MStream->Position = 0;
Mevzuat->LoadFromStream(MStream);
delete MStream;
if(Que->RecordCount>0)
{
TfrxComponent *op;
if(DEBUG) ShowMessage("1.7");
DM->frxReport1->ReportOptions->HiddenPassword = "0943";
DM->frxReport1->LoadFromFile(RaporDir+"\\"+Que->FieldByName("RAPOR")->AsString);
//ShowMessage("zzzz"+RaporDir+"\\"+Que->FieldByName("RAPOR")->AsString);
if(DM->frxReport1->Variables->IndexOf("Database")!=-1) DM->frxReport1->Variables->Variables["Database"]="'"+dbName+"'";
if(DM->frxReport1->Variables->IndexOf("User")!=-1) DM->frxReport1->Variables->Variables["User"]="'"+UserName+"'";
if(DM->frxReport1->Variables->IndexOf("Password")!=-1) DM->frxReport1->Variables->Variables["Password"]="'"+Password+"'";
if(DM->frxReport1->Variables->IndexOf("TaslakRapor")!=-1) DM->frxReport1->Variables->Variables["TaslakRapor"]="'E'";
if(DM->frxReport1->Variables->IndexOf("RAPORBASLIK")!=-1) DM->frxReport1->Variables->Variables["RAPORBASLIK"]="'"+Que->FieldByName("RAPORBASLIK")->AsString+"'";
if(DM->frxReport1->Variables->IndexOf("LABORATUAR")!=-1) DM->frxReport1->Variables->Variables["LABORATUAR"]="'"+grup+"'";
try
{
dynamic_cast<TfrxMemoView *>(DM->frxReport1->FindObject("NumuneAdresBaslik"))->Lines->Text="Numunenin Alındığı Yer ve Tarih";
dynamic_cast<TfrxMemoView *>(DM->frxReport1->FindObject("NumuneCinsiBaslik"))->Lines->Text="Numunenin Adı/Cinsi";
dynamic_cast<TfrxMemoView *>(DM->frxReport1->FindObject("NumuneAmbalajBaslik"))->Lines->Text="Numunenin Ambalaj Şekli ve Miktarı";
} catch(...) {}
if(Tipi==2)
{
try
{
dynamic_cast<TfrxMemoView *>(DM->frxReport1->FindObject("KIMYASEFIUNVAN"))->Lines->Assign(Edenler);
if(DM->frxReport1->Variables->IndexOf("OlumsuzBold")!=-1)
{
if(DM->fdNumune->FieldByName("MEVZUATDISI")->AsString!="E")
DM->frxReport1->Variables->Variables["OlumsuzBold"]="'E'";
else
DM->frxReport1->Variables->Variables["OlumsuzBold"]="'H'";
}
} catch(...) {}
}
{
TStringList *Calisanlar;
Calisanlar=new TStringList;
CalisanlariBul(idx,Calisanlar,grup);
try
{
op=DM->frxReport1->FindObject("CALISANLAR");
if(!VarIsNull(op))
dynamic_cast<TfrxMemoView *>(op)->Lines->Assign(Calisanlar);
} catch(...) {}
delete Calisanlar;
}
{
try
{
op=DM->frxReport1->FindObject("NOTLAR2");
if(!VarIsNull(op)) dynamic_cast<TfrxMemoView *>(op)->Lines->Assign(Notlar2);
} catch(...) {}
}
try
{
op=DM->frxReport1->FindObject("MEVZUAT");
if(!VarIsNull(op)) dynamic_cast<TfrxMemoView *>(op)->Lines->Assign(Mevzuat);
} catch(...) {}
if(DEBUG) ShowMessage("1.9");
try
{
op=DM->frxReport1->FindObject("DEGERLENDIRME");
if(!VarIsNull(op))
{
MStream=new TMemoryStream();
Deger->Lines->SaveToStream(MStream);
MStream->Position = 0;
dynamic_cast<TfrxRichView *>(op)->RichEdit->Lines->LoadFromStream(MStream);
delete MStream;
}
} catch(...) {}
if(DEBUG) ShowMessage("1.11");
if(PrepareReport)
{
int Sonuc,Sayi=1;
Sonuc=0;
DM->frxReport1->EngineOptions->DoublePass=false;
SetfdNumune(DM->fdNumune);
if(TaslakRaporUret(DM->frxReport1, Tipi, true))
if(ViewReport2(9)) CiktiLogTut(4,NumuneNo+" No'lu Numune "+grup,Sayi);
}
}
cikis:
delete Notlar2;
delete Deger;
delete Que;
delete GepQ;
delete Edenler;
delete Mevzuat;
Kod: Tümünü seç
CREATE PROCEDURE SP_REPORT_01 (
PRM_CAMPAIGN_ID DMN_BIGINT,
PRM_CALL_LIST_ID DMN_BIGINT,
PRM_B_TARIH DMN_DATETIME,
PRM_S_TARIH DMN_DATETIME)
returns (
RET_CAMPAIGN_ID DMN_BIGINT,
RET_CAMPAIGN_DESCRIPTION DMN_DESCRIPTION,
RET_CALL_LIST_ID DMN_BIGINT,
RET_CALL_LIST_NAME DMN_DESCRIPTION,
RET_TOTAL_REC_COUNT DMN_BIGINT,
RET_CONNECTED_REC_COUNT DMN_BIGINT,
RET_POSITIVE_REC_COUNT DMN_BIGINT,
RET_NEGATIVE_REC_COUNT DMN_BIGINT,
RET_IGNORED_REC_COUNT DMN_BIGINT,
RET_OTHER_REC_COUNT DMN_BIGINT,
RET_TOTAL_ATTEMPT_COUNT DMN_BIGINT)
AS
BEGIN
/* ARANAN ULAŞILAN OLUMLU OLUMSUZ RAPORU */
/* ONCE TOPLAM ARAMA DENEMELERINI BULUYORUZ */
IF (PRM_CALL_LIST_ID = 0) THEN
BEGIN
IF (PRM_CAMPAIGN_ID = 0) THEN
BEGIN
/* TUM DATA CEKILECEK */
FOR
SELECT CL.CAMPAIGN_ID, C.CAMPAIGN_DESCRIPTION, CL.CALL_LIST_ID, CL.CALL_LIST_NAME
FROM CALL_LIST CL
INNER JOIN CAMPAIGN C ON CL.CAMPAIGN_ID = C.CAMPAIGN_ID
INTO :RET_CAMPAIGN_ID, :RET_CAMPAIGN_DESCRIPTION, :RET_CALL_LIST_ID, :RET_CALL_LIST_NAME
DO
BEGIN
RET_TOTAL_REC_COUNT = 0;
RET_CONNECTED_REC_COUNT = 0 ;
RET_IGNORED_REC_COUNT = 0 ;
RET_POSITIVE_REC_COUNT = 0 ;
RET_NEGATIVE_REC_COUNT = 0 ;
RET_OTHER_REC_COUNT = 0 ;
/* CAMPAIGN VE CALL_LIST UZERINDE DON */
/* TOPLAM ARANAN KAYIT SAYISI VE TOPLAM ULASILABILEN KAYIT SAYISINI BUL */
SELECT SUM(VIR_CALL_COUNTER), SUM(VIR_CONNECTED_CALL_COUNTER), SUM(VIR_IGNORED_CALL_COUNTER), SUM(VIR_POSITIVE_CALL_COUNTER), SUM(VIR_NEGATIVE_CALL_COUNTER), SUM(VIR_OTHER_CALL_COUNTER)
FROM (SELECT CALL_LIST_ID, 1 VIR_CALL_COUNTER,
CASE WHEN D.AGENT_CONNECT_TIME IS NULL THEN 0 ELSE 1 END VIR_CONNECTED_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 1 THEN 1 ELSE 0 END VIR_IGNORED_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 2 THEN 1 ELSE 0 END VIR_POSITIVE_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 3 THEN 1 ELSE 0 END VIR_NEGATIVE_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 4 THEN 1 ELSE 0 END VIR_OTHER_CALL_COUNTER
FROM ARC_CALL_LIST_DETAIL D
INNER JOIN PRM_FINISH_REASONS R ON D.FINISH_REASON_ID = R.FINISH_REASON_ID
WHERE D.CALL_LIST_ID = :RET_CALL_LIST_ID
AND D.START_TIME >= :PRM_B_TARIH
AND D.START_TIME <= :PRM_S_TARIH) X
GROUP BY CALL_LIST_ID
INTO :RET_TOTAL_REC_COUNT, :RET_CONNECTED_REC_COUNT, :RET_IGNORED_REC_COUNT, :RET_POSITIVE_REC_COUNT, :RET_NEGATIVE_REC_COUNT, :RET_OTHER_REC_COUNT ;
/* TOPLAM ARAMA DENEME SAYILARINI BUL */
SELECT COUNT(1)
FROM ARC_CALL_ATTEMPTS
WHERE CALL_LIST_ID = :RET_CALL_LIST_ID
AND START_TIME >= :PRM_B_TARIH
AND START_TIME <= :PRM_S_TARIH
INTO :RET_TOTAL_ATTEMPT_COUNT ;
SUSPEND ;
END
END
ELSE
BEGIN
/* SADECE KAMPANYA VERILMIS ISE */
RET_CAMPAIGN_ID = PRM_CAMPAIGN_ID ;
SELECT CAMPAIGN_DESCRIPTION
FROM CAMPAIGN
WHERE CAMPAIGN_ID = :PRM_CAMPAIGN_ID
INTO :RET_CAMPAIGN_DESCRIPTION ;
RET_TOTAL_REC_COUNT = 0;
RET_CONNECTED_REC_COUNT = 0 ;
RET_IGNORED_REC_COUNT = 0 ;
RET_POSITIVE_REC_COUNT = 0 ;
RET_NEGATIVE_REC_COUNT = 0 ;
RET_OTHER_REC_COUNT = 0 ;
/* TOPLAM ARANAN KAYIT SAYISI VE TOPLAM ULASILABILEN KAYIT SAYISINI BUL */
SELECT SUM(VIR_CALL_COUNTER), SUM(VIR_CONNECTED_CALL_COUNTER), SUM(VIR_IGNORED_CALL_COUNTER), SUM(VIR_POSITIVE_CALL_COUNTER), SUM(VIR_NEGATIVE_CALL_COUNTER), SUM(VIR_OTHER_CALL_COUNTER)
FROM (SELECT 1 VIR_CALL_COUNTER,
CASE WHEN D.AGENT_CONNECT_TIME IS NULL THEN 0 ELSE 1 END VIR_CONNECTED_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 1 THEN 1 ELSE 0 END VIR_IGNORED_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 2 THEN 1 ELSE 0 END VIR_POSITIVE_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 3 THEN 1 ELSE 0 END VIR_NEGATIVE_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 4 THEN 1 ELSE 0 END VIR_OTHER_CALL_COUNTER
FROM ARC_CALL_LIST_DETAIL D
INNER JOIN PRM_FINISH_REASONS R ON D.FINISH_REASON_ID = R.FINISH_REASON_ID
WHERE D.CAMPAIGN_ID = :PRM_CAMPAIGN_ID
AND D.START_TIME >= :PRM_B_TARIH
AND D.START_TIME <= :PRM_S_TARIH) X
INTO :RET_TOTAL_REC_COUNT, :RET_CONNECTED_REC_COUNT, :RET_IGNORED_REC_COUNT, :RET_POSITIVE_REC_COUNT, :RET_NEGATIVE_REC_COUNT, :RET_OTHER_REC_COUNT ;
/* TOPLAM ARAMA DENEME SAYILARINI BUL */
SELECT COUNT(1)
FROM ARC_CALL_ATTEMPTS
WHERE CAMPAIGN_ID = :PRM_CAMPAIGN_ID
AND START_TIME >= :PRM_B_TARIH
AND START_TIME <= :PRM_S_TARIH
INTO :RET_TOTAL_ATTEMPT_COUNT ;
SUSPEND ;
END
END
ELSE
BEGIN
/* SADECE KAMPANYA VERILMIS ISE */
RET_CALL_LIST_ID = PRM_CALL_LIST_ID ;
SELECT CALL_LIST_NAME
FROM CALL_LIST
WHERE CALL_LIST_ID = :PRM_CALL_LIST_ID
INTO :RET_CALL_LIST_NAME ;
RET_TOTAL_REC_COUNT = 0;
RET_CONNECTED_REC_COUNT = 0 ;
RET_IGNORED_REC_COUNT = 0 ;
RET_POSITIVE_REC_COUNT = 0 ;
RET_NEGATIVE_REC_COUNT = 0 ;
RET_OTHER_REC_COUNT = 0 ;
/* TOPLAM ARANAN KAYIT SAYISI VE TOPLAM ULASILABILEN KAYIT SAYISINI BUL */
SELECT SUM(VIR_CALL_COUNTER), SUM(VIR_CONNECTED_CALL_COUNTER), SUM(VIR_IGNORED_CALL_COUNTER), SUM(VIR_POSITIVE_CALL_COUNTER), SUM(VIR_NEGATIVE_CALL_COUNTER), SUM(VIR_OTHER_CALL_COUNTER)
FROM (SELECT 1 VIR_CALL_COUNTER,
CASE WHEN D.AGENT_CONNECT_TIME IS NULL THEN 0 ELSE 1 END VIR_CONNECTED_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 1 THEN 1 ELSE 0 END VIR_IGNORED_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 2 THEN 1 ELSE 0 END VIR_POSITIVE_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 3 THEN 1 ELSE 0 END VIR_NEGATIVE_CALL_COUNTER,
CASE WHEN R.FINISH_TYPE_ID = 4 THEN 1 ELSE 0 END VIR_OTHER_CALL_COUNTER
FROM ARC_CALL_LIST_DETAIL D
INNER JOIN PRM_FINISH_REASONS R ON D.FINISH_REASON_ID = R.FINISH_REASON_ID
WHERE D.CALL_LIST_ID = :PRM_CALL_LIST_ID
AND D.START_TIME >= :PRM_B_TARIH
AND D.START_TIME <= :PRM_S_TARIH) X
INTO :RET_TOTAL_REC_COUNT, :RET_CONNECTED_REC_COUNT, :RET_IGNORED_REC_COUNT, :RET_POSITIVE_REC_COUNT, :RET_NEGATIVE_REC_COUNT, :RET_OTHER_REC_COUNT ;
/* TOPLAM ARAMA DENEME SAYILARINI BUL */
SELECT COUNT(1)
FROM ARC_CALL_ATTEMPTS
WHERE CALL_LIST_ID = :PRM_CALL_LIST_ID
AND START_TIME >= :PRM_B_TARIH
AND START_TIME <= :PRM_S_TARIH
INTO :RET_TOTAL_ATTEMPT_COUNT ;
SUSPEND ;
END
END
Kod: Tümünü seç
SELECT *
FROM SP_REPORT_01(:INT_CAMPAIGN_ID, :INT_CALL_LIST_ID, :DT_BAS_TARIH, :DT_SON_TARIH)