Oracle
如何在oracle中進行受限視圖?
我必須為應用程序模式提供數據,但是要求使用該模式使用者連接的應用程序一次不能查詢超過五行,應用程序從視圖中查詢數據,我如何重寫所有應用程序查詢(所有這些使用者查詢)
rownum < 5
在 where 子句中有什麼?我正在使用 Oracle 12c。
解決方案 - 無狀態應用程序(網路)
修復應用程序。
應用程序必須將and
OFFSET
子句添加FETCH NEXT
到 SQL,因為它是定義and子句的應用程序。ORDER BY``WHERE
這就是 Oracle APEX 為其互動式報告所做的。
解決方案 - 有狀態的應用程序
修復應用程序。
與其一次獲取所有數據,不如讓語句句柄保持打開 (
sth
) 並一次獲取 5 行。原因
數據庫不會讓事情井井有條。(我忽略了物聯網)
如果您告訴數據庫“我只需要 5 行”,那麼每次執行查詢時您將獲得 5 個隨機行。(通常是相同的 5 行。但是,你需要像他們隨機吃一樣計劃)
這使您的書面請求具有不確定性。
如果您需要“第n
ORDER BY
5 行”,則必須首先使用子句定義這些行的順序。然後(在該級別)您可以“一次獲取 5 行”。
您可以使用
FETCH NEXT
子句。連結教程中的範例:SELECT product_name, quantity FROM inventories INNER JOIN products USING(product_id) ORDER BY quantity DESC FETCH NEXT 5 ROWS ONLY;
在您的情況下,由於您想限制從現有視圖返回的行數,您所要做的就是:
SELECT YourColumns FROM YourView ORDER BY SomeFieldToOrderBy FETCH NEXT 5 ROWS ONLY;