Bài viết này giải thích cách lấy bản ghi Top 1 từ Oracle bằng cách sử dụng PL / SQL.

Bạn đang xem : cách chọn hàng trên cùng trong oracle

Cách lấy bản ghi Top 1 từ Oracle bằng cách sử dụng PL / SQL

Bài viết này giải thích cách sử dụng các hàm Oracle để có được bản ghi top 1 bằng cách sử dụng PL / SQL.

Bài viết này giải thích cách sử dụng các hàm Oracle để có được bản ghi hàng đầu bằng cách sử dụng PL / SQL.

Đoạn mã trên trang này cho thấy cách sử dụng Oracle PL / SQL để truy xuất bản ghi top 1. Đây là những gì chúng tôi sẽ giải thích.

  1. Cách lấy giá trị cao nhất từ ​​một bảng. Các cú pháp SQL khác nhau cho Oracle 8i, 9i, 10g, 11g và cao hơn.
  2. Cách lấy giá trị từ một ô của bảng bằng các hàm Oracle.
  3. Phương pháp PL / SQL sử dụng con trỏ ẩn và con trỏ rõ ràng.

Để kiểm tra các chức năng trên trang này, vui lòng sử dụng cơ sở dữ liệu Oracle Northwind
đã được chuyển đổi từ cơ sở dữ liệu Access Northwind phổ biến.

Chức năng 1:

Hàm này sử dụng lệnh SELECT … INTO để lấy ngày đặt hàng mới nhất cho khách hàng bằng cách sử dụng con trỏ ngầm.

Lệnh SELECT … INTO là một loại con trỏ ẩn trong Oracle PL / SQL (được gọi là con trỏ ngầm) cho phép chúng ta bỏ qua các bước
sử dụng con trỏ rõ ràng, ví dụ. khai báo con trỏ, mở con trỏ, xử lý các hàng của nó trong một vòng lặp, sau đó đóng nó.

Hàm sau có thể được sử dụng cho Oracle 8i trở lên.

function get_latest_order_date (i_curstomer_id in number) ngày trả lại
Là
         
v_order_date date;
   
bắt đầu
    chọn Order_Date thành v_order_date
    từ
    (
        chọn Order_Date
        từ đơn đặt hàng
        nơi customer_id = i_curstomer_id
        đặt hàng theo Order_Date desc
    )
    nơi rownum & lt; 2; - Điều này đảm bảo chỉ có một hàng được trả lại.
    
    trả về v_order_date;

ngoại lệ
   khi no_data_found thì trở về_date ('01 / 01/1900 ',' DD / MM / YYYY ');
chấm dứt;

Hàm sau có thể được sử dụng cho Oracle 9i trở lên.

function get_latest_order_date (i_curstomer_id in number) ngày trả lại
Là
         
v_order_date date;
   
bắt đầu
    chọn Order_Date thành v_order_date
    từ
    (
        chọn Order_Date,
            ROW_NUMBER () over (đặt hàng theo Order_Date desc) dưới dạng row_number
        từ đơn đặt hàng
        nơi customer_id = i_curstomer_id
        đặt hàng theo Order_Date desc
    )
    nơi row_number & lt; 2; - Điều này đảm bảo chỉ có một hàng được trả lại.
    
    trả về v_order_date;

ngoại lệ
   khi no_data_found thì trở về_date ('01 / 01/1900 ',' DD / MM / YYYY ');
chấm dứt;

Để kiểm tra chức năng này, hãy sử dụng đoạn mã này.

Xem Thêm  SQL Server Chuyển đổi ngày giờ thành ngày tháng + Ví dụ - chuyển đổi sql ngày giờ thành ngày

tuyên bố
v_latest_order_date date;

bắt đầu
    v_latest_order_date: = pkg_task.get_latest_order_date (35);
    
      (v_latest_order_date);
chấm dứt;

SELECT … INTO đưa ra một ngoại lệ khi một trong hai điều kiện sau đây xảy ra.

  1. Nếu truy vấn cơ bản trả về nhiều hơn một hàng, nó sẽ tăng TOO_MANY_ROWS ngoại lệ.

    Thông báo lỗi thực tế của Oracle là: “ORA-01422: tìm nạp chính xác trả về nhiều hơn số hàng được yêu cầu.”

  2. Nếu không trả về hàng nào, nó sẽ tăng ngoại lệ NO_DATA_FOUND.

Chức năng 2:

Hàm này trình bày cách lấy ngày đặt hàng mới nhất bằng cách sử dụng một con trỏ rõ ràng. Lợi thế của việc sử dụng con trỏ rõ ràng là chúng tôi
có thể kiểm tra xem ngày đặt hàng gần nhất có phải là giá trị NULL hay không. Nếu đó là giá trị NULL, nó cho biết không có dữ liệu nào được tìm thấy. Đây là một cách tốt hơn và ngắn gọn hơn là sử dụng
no_data_found trong khối ngoại lệ như được hiển thị trong Hàm 1 ở trên, đặc biệt khi hàm hoặc thủ tục của bạn đang trở nên rất phức tạp.
Bởi vì chúng ta không sử dụng một vòng lặp cho con trỏ rõ ràng trong hàm, nó luôn trả về bản ghi đầu tiên trong con trỏ. Đây là hành vi mặc định.

function get_latest_order_date2 (i_curstomer_id in number) ngày trả lại
Là
         
v_order_date date;

con trỏ last_order_date (i_curstomer_id trong số)
Là
    chọn Order_Date
    từ đơn đặt hàng
    nơi customer_id = i_curstomer_id
    đặt hàng theo Order_Date desc;

bắt đầu
    mở_đặt_dùng_hàng mới nhất (i_curstomer_id);
    
    - Không có vòng lặp nào được sử dụng nên nó chỉ tìm nạp hàng đầu tiên.
    tìm nạp ngày_đơn_đầu_đến mới nhất vào ngày_đơn đặt hàng;
    
    - Ở đây chúng tôi kiểm tra giá trị NULL để xem có dữ liệu được tìm thấy hay không.
    nếu v_order_date là null thì
        return to_date ('01 / 01/1900 ',' DD / MM / YYYY ');
    khác
        trả về v_order_date;
    kết thúc nếu;

    đóng_đơn_bản mới nhất;
    
    trả về v_order_date;
chấm dứt;

Để kiểm tra chức năng này, hãy sử dụng đoạn mã sau.

Xem Thêm  PHP: Comparison Operators - các loại exception trong java

tuyên bố
v_latest_order_date date;

bắt đầu
    v_latest_order_date: = pkg_task.get_latest_order_date2 (3503473);
    
      (v_latest_order_date);
chấm dứt;

Chức năng 3:

Hàm này là một phiên bản được sửa đổi một chút từ hàm get_latest_order_date2 ở trên. Trong ví dụ này, chỉ một
tìm nạp là cần thiết, vì vậy không cần vòng lặp. Tuy nhiên, chức năng phải kiểm tra để xem liệu một bản ghi phù hợp
được tìm thấy trước khi nó trả về một giá trị. Điều này được thực hiện bằng cách sử dụng thuộc tính FOUND.

function get_latest_order_date3 (i_curstomer_id in number) ngày trả lại
Là
         
v_order_date date;

con trỏ last_order_date (i_curstomer_id trong số)
Là
    chọn Order_Date
    từ đơn đặt hàng
    nơi customer_id = i_curstomer_id
    đặt hàng theo Order_Date desc;

bắt đầu
    mở_đặt_dùng_hàng mới nhất (i_curstomer_id);
    
    - Khi không có vòng lặp nào được sử dụng, nó luôn tìm nạp hàng đầu tiên.
    tìm nạp ngày_đơn_đầu_đến mới nhất vào ngày_đơn đặt hàng;
    
    - Kiểm tra xem có thể tìm thấy bản ghi phù hợp hay không.
    nếu last_order_date% FOUND thì
        trả về v_order_date;
    khác
        return to_date ('01 / 01/1900 ',' DD / MM / YYYY ');
    kết thúc nếu;

    đóng_đơn_bản mới nhất;
chấm dứt;

Để kiểm tra chức năng này, hãy sử dụng đoạn mã sau.

tuyên bố
v_latest_order_date date;

bắt đầu
    v_latest_order_date: = pkg_task.get_latest_order_date3 (3503473);
    
      (v_latest_order_date);
chấm dứt;

Chúc bạn mã hóa thành công!

Bản quyền © GeeksEngine.com


Xem thêm những thông tin liên quan đến chủ đề cách chọn hàng trên cùng trong oracle

Raise Your Vibration ✨ Weekly Oracle Card Reading for the Week of October 7th

  • Tác giả: Colette Baron-Reid Official
  • Ngày đăng: 2019-10-06
  • Đánh giá: 4 ⭐ ( 3337 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Own Your Light & Raise Your Vibration Pick a Card Weekly Oracle Card Reading with BONUS Zodiac Oracle Reading for October 7th-13th.

    Thank you to Haute Goat for our amazing goat shmurgling experience! Check them out at https://hautegoat.com.

    Want to learn more about how to use Oracle Cards? Get access to my free Oracle Card Mini-Lessons here: http://bit.ly/31MqBFp

    💖Oracle Cards of the Week Time Stamps💖
    ⭐Anchor Cards for the Week: 1:45 and 3:03 (Two anchor cards this week, so read them together for overall theme for the week)
    ✨Card 1: 6:42
    ⭐Card 2: 7:00
    ✨Card 3: 7:55
    ⭐Card 4: 8:45
    ✨Card 5: 9:25
    ⭐Card 6: 9:43

    💖Zodiac Cards of the Week Timestamps:💖
    ♈Aries: 11:36
    ♉Taurus: 11:47
    ♊Gemini: 11:55
    ♋Cancer: 12:03
    ♌Leo: 12:24
    ♍Virgo: 12:35
    ♎Libra: 12:45
    ♏Scorpio: 12:56
    ♐Sagittarius: 13:16
    ♑Capricorn: 13:26
    ♒Aquarius: 13:38
    ♓Pisces: 13:46

    The decks used in this week’s reading is The Crystal Spirits Oracle and Wisdom of the Oracle by Colette Baron-Reid. Get your own copy of these decks here: http://bit.ly/CBRstore

    Choose your own Oracle Cards for free on my website! Also get the Free e-booklet “How to Ask the Right Questions (every time) of the Oracle Cards”- http://bit.ly/2oTl41a

    💖 Get my Daily Oracle Card Picks on Social Media 💖
    Instagram: https://www.instagram.com/colettebaron_reid
    Facebook: https://www.facebook.com/cbr.psychic

    oraclecards pickacard colettebaronreid

Làm thế nào để chọn bản ghi cuối cùng của bảng trong SQL?

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 5291 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Không có thêm thông tin, Cơ sở dữ liệu nào tốt nhất chúng ta có thể…

Cách lựa chọn index trong Oracle

  • Tác giả: viblo.asia
  • Đánh giá: 4 ⭐ ( 8692 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: 1. Cách chọn index

Lọc kết quả ở Group By với lệnh Having trong Oracle

  • Tác giả: freetuts.net
  • Đánh giá: 5 ⭐ ( 8735 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn Lọc kết quả ở Group By với lệnh Having trong Oracle, bài này sẽ giúp bạn hiểu rõ bản chất của group By và Having thật chi tiết

SELECT TOP trong SQL

  • Tác giả: websitehcm.com
  • Đánh giá: 3 ⭐ ( 3471 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: SELECT TOP trong SQL w3seo Câu lệnh SELECT TOP trong SQL hiển thị số lượng bản ghi hoặc hàng giới hạn từ bảng cơ sở dữ liệu

7 cách đơn giản để chọn nhiều ô trong Excel

  • Tác giả: unitrain.edu.vn
  • Đánh giá: 3 ⭐ ( 4207 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Bật mí 2 Cách cố định hàng trong Excel chi tiết nhất

  • Tác giả: unica.vn
  • Đánh giá: 3 ⭐ ( 4184 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Thao tác cố định hàng trong Excel bạn đã biết hay chưa? Cách thức thực hiện bao gồm những bước nào? Cùng Unica tìm hiểu 2 cách cố định hàng trong Excel

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Loại nút HTML - Cách thêm các nút vào trang web của bạn - tạo một nút bằng html

By ads_php