Oracle'da Son Kayıt'ı Getirmek
Oracle'da stored procedures ile son kaydı getirebilmek. İstediğimiz kirterlere göre bulmak.
Kategori: biraz programcılık Editör: Mustafa ÖZKAN Tarih: 06 Şubat 2010 Cumartesi 13:10 

Elimizde şu şekilde senaryomuz olsun. Varsayalımki son kayıt numarasını elde etmemiz gereksin ve bu numaranın üzerine bir ekleyip başka bir numara olacağımızı düşünelim. Uygulamamıza gereken son numarayı ona verebilmek bu işlemi MS SQL'de aa.. TOP(1) diyerek yapabiliyoruz.. Ben bunu Oracle'da select içinde select yazarak yapabiliriz diyorum çünkü başka bir yol bulamadım.. Yada bendeki PL SQLde problem vadır.. Direk rownum=1 dediğimde örneğin elimize 1,2,3,4 ... 9 'a kadar numaralar olsun hierarşiye göre 9'un gelmesi gerekirken 1 geliyordu aşağıdaki kod ile 9'un gelmesini sağlamış oldum..

Farklı bir yöntem ile yaparım diyen arkadaşların yorumlarını bekliyorum...

CREATE OR REPLACE Procedure Haber_NO_SON
(
ParamHaberNo VARCHAR2,
spDonenSonuc out sys_refcursor
)AS
Begin
                  open spDonenSonuc for
                   SELECT * FROM (Select * From Haber
                  Where HaberSilindi = 0 AND HaberYeni=1
                    AND HaberNo Like ParamHaberNo
                  Order By HaberTarih desc) 
                  WHERE ROWNUM<=1;
End Haber_NO_SON;

PL SQL Kopyası;

'CREATE OR REPLACE Procedure Haber_NO_SON' || chr(10) ||
'(' || chr(10) ||
'ParamHaberNo VARCHAR2,' || chr(10) ||
'spDonenSonuc out sys_refcursor' || chr(10) ||
')AS' || chr(10) ||
'Begin' || chr(10) ||
'  open spDonenSonuc for' || chr(10) ||
'  SELECT * FROM (Select * From Haber' || chr(10) ||
'                  Where HaberSilindi = 0 AND HaberYeni=1' || chr(10) ||
'                    AND HaberNo Like ParamHaberNo' || chr(10) ||
'                  Order By HaberTarih desc)' || chr(10) ||
'  WHERE ROWNUM<=1;' || chr(10) ||
'End Haber_NO_SON;';

Visual Basic Kopyası;

"CREATE OR REPLACE Procedure Haber_NO_SON" & vbNewLine & _
"(" & vbNewLine & _
"ParamHaberNo VARCHAR2," & vbNewLine & _
"spDonenSonuc out sys_refcursor" & vbNewLine & _
")AS" & vbNewLine & _
"Begin" & vbNewLine & _
"  open spDonenSonuc for" & vbNewLine & _
"  SELECT * FROM (Select * From Haber" & vbNewLine & _
"                  Where HaberSilindi = 0 AND HaberYeni=1" & vbNewLine & _
"                    AND HaberNo Like ParamHaberNo" & vbNewLine & _
"                  Order By HaberTarih desc)" & vbNewLine & _
"  WHERE ROWNUM<=1;" & vbNewLine & _
"End Haber_NO_SON;"

C++ Kopyası;


String("CREATE OR REPLACE Procedure Haber_NO_SON\n") +
String("(\n") +
String("ParamHaberNo VARCHAR2,\n") +
String("spDonenSonuc out sys_refcursor\n") +
String(")AS\n") +
String("Begin\n") +
String("  open spDonenSonuc for\n") +
String("  SELECT * FROM (Select * From Haber\n") +
String("                  Where HaberSilindi = 0 AND HaberYeni=1\n") +
String("                    AND HaberNo Like ParamHaberNo\n") +
String("                  Order By HaberTarih desc)\n") +
String("  WHERE ROWNUM<=1;\n") +
String("End Haber_NO_SON;");

 

Bookmark İçeriği Puanla:
My Info