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;");