set row count = ? באורקל

yael800

New member
set row count = ? באורקל

היי, איך אני מביאה מספר רשומות רצוי (מקסימום רשומות), כאשר MAX_RESULT = 100, אני רוצה לשלוף עד מאה רשומות. כאשר MAX_RESULT = 0 אני רוצה להביא את הכל.. (אם יש אפשרות כזו, בשאילתא אחת).
 

s h i m s h o n

New member
תשובה

להביא סתם 100 רשומות:
select * from tbl where rownum <= 100​
להביא 100 רשומות ראשונות (ע"פ מיון ספציפי מבוקש):
select * from (select * from tbl order by...) where rownum <= 100​
להביא max_result רשומות ראשונות (ע"פ מיון ספציפי מבוקש) או את כל הרשומות:
select * from (select * from tbl order by...) where ((rownum <= :max_result) or :)max_result = 0))​
בברכה, ש.
 

yael800

New member
תודה.. יש אפשרות

שאם max_result = 0 אז שיביא הכל? האם אני צריכה לעשות SELECT * על הכל ? הסינטקס הוא של אורקל? select * from (select * from tbl order by...) where rownum <= 100 המון תודה
 

s h i m s h o n

New member
הסינטקס הוא רק של אורקל

ושימי לב לאופציה השלישית שנתתי. זה בדיוק מה שאת צריכה (כולל ה- max_result=0). בברכה, ש.
 

yael800

New member
נכון

המון תודה, מממ.. בעיה נוספת, אני שולחת מ JAVA פרמטר: max_result where ((rownum <= :?) or :)?= 0)) אבל בשאילתא מצפה לשני פרמטרים... נכון?
 

yael800

New member
אין מנוס ניראה לי מלהפריד בין המקרים

כאשר שולחים מערך של ארגומנטים בקוד (שניים) ויש לי בשאילתא 3 סימני שאלה, אני מקבלת את השגיאה: Missing IN or OUT parameter at index:: 3
 

s h i m s h o n

New member
אינטרקציה בין ה-Client לבין ה-DB

זאת כבר שאלה של אינטרקציה בין ה-Client לבין ה-DB. לצערי בצד הזה אין לי כל-כך נסיון. אבל אני לא רואה סיבה לבעיה, אם בכל המקומות בשאילתא ישנו שימוש באותו ה-bind variable:
where ((rownum <= :max_result) or :)max_result = 0))​
תוכלי גם לבנות דינמית את מחרוזת השאילתא:
'where ((rownum <= ' || max_result || ') or (' || max_result || ' = 0))'​
בברכה, ש.
 
למעלה