Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Có cách nào để chọn một số hàng bằng cách sử dụng các tham số không?

Bạn không thể trả về tập kết quả trong Oracle bằng cách chỉ sử dụng Truy vấn. Bạn cần sử dụng con trỏ Tham chiếu cho tương tự. Bạn có thể thử mã bên dưới -

CREATE OR REPLACE PROCEDURE p_find_all_routes (
   p_start   IN VARCHAR2 DEFAULT '%',
   p_end     IN VARCHAR2 DEFAULT '%',
   p_via     IN VARCHAR2 DEFAULT '%',
   multiroutes OUT SYS_REFCURSOR)
AS
BEGIN
   -- =======================================================================
   -- Author:       Coilin P. Boylan Jeritslev (CTBJ)
   -- Description:   Find all possible routes between two different points
   -- "p_start" and "p_end" via the choosen point "p_via" in a graph-tabel.
   -- =======================================================================
OPEN multiroutes FOR
   WITH multiroutes (p_from, p_to, full_route, total_distance)
        AS (SELECT p_from,
                   p_to,
                   p_from || '->' || p_to full_route,
                   distance total_distance
              FROM graph
             WHERE p_from LIKE p_start
            UNION ALL
            SELECT M.p_from,
                   n.p_to,
                   M.full_route || '->' || n.p_to full_route,
                   M.total_distance + n.distance total_distance
              FROM multiroutes M JOIN graph n ON M.p_to = n.p_from
             WHERE n.p_to <> ALL (M.full_route))
     SELECT *
       FROM multiroutes
      WHERE     p_to LIKE p_end
            AND (   full_route LIKE ('%->' || p_via || '%')
                 OR full_route LIKE ('%' || p_via || '->%'))
   ORDER BY p_from, p_to, total_distance ASC;
END;
/

Sau đó, bạn có thể gọi thủ tục này sau bằng cách khai báo biến con trỏ Tham chiếu.

DECLARE
    Result SYS_REFCURSOR;
BEGIN
    p_find_all_routes('A','E','%', Result);
END; 




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL - Tạo và cập nhật một cột với số ngẫu nhiên khác nhau trong mỗi hàng

  2. chạy tập lệnh sql oracle từ java

  3. CHÈN Hiệu suất - Bitmap so với B-Tree

  4. Làm thế nào để tạo chỉ mục duy nhất trên các trường có giá trị rỗng có thể có (Oracle 11g)?

  5. Phân trang kết quả truy vấn Oracle mà không có phương pháp truy cập dữ liệu TABLE FULL SCAN