Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

kèo bóng đá cúp c210234_10249

Thay vì thực hiện toàn bộ truy vấn cùng một lúc, có thể Thiết lập Akèo bóng đá cúp c2 trỏĐóng gói Truy vấn, và sau đó đọc kết quả truy vấn một vài hàng cùng một lúc. Một lý do để làm điều này là để tránh ghi đè bộ nhớ khi kết quả chứa một số lượng lớn các hàng. (Tuy nhiên,PL/PGSQL10613_10957

23.7.1. Tuyên bố kèo bóng đá cúp c2 trỏ Biến

Tất cả quyền truy cập vào kèo bóng đá cúp c2 trỏ trongPL/PGSQLTrải qua các biến kèo bóng đá cúp c2 trỏ, luôn luôn thuộc kiểu dữ liệu đặc biệtRefcursor. Một cách để tạo biến kèo bóng đá cúp c2 trỏ là Chỉ để khai báo nó là một biến của loạirefcursor. Một cách khác là sử dụng kèo bóng đá cúp c2 trỏ Syntax Tuyên bố, nói chung là:

tênkèo bóng đá cúp c2 trỏ [(Đối số)] choselect_query;

(chocó thể được thay thế bằngcho khả năng tương thích của Oracle.)Đối số, nếu có, là một dấu phẩy được phân tách bằng dấu phẩy Danh sáchtên DataTypecặp xác định tên được thay thế bằng các giá trị tham số trong truy vấn đã cho. Thực tế Các giá trị để thay thế cho các tên này sẽ được chỉ định sau, Khi kèo bóng đá cúp c2 trỏ được mở.

Một số ví dụ:

Khai báo
    Curs1 refcursor;
    kèo bóng đá cúp c2 trỏ curs2 cho chọn * từ tenk1;
    kèo bóng đá cúp c2 trỏ curs3 (khóa int) được chọn * từ tenk1 trong đó độc đáo1 = phím;

Cả ba kèo bóng đá cúp c2 này đều có kiểu dữ liệurefcursor, nhưng lần đầu tiên có thể được sử dụng với bất kỳ Truy vấn, trong khi thứ hai có truy vấn được chỉ định đầy đủBoundđối với nó và cái cuối cùng có một Truy vấn tham số hóa ràng buộc với nó. (Keysẽ được thay thế bằng giá trị tham số số nguyên khi kèo bóng đá cúp c2 trỏ được mở.) Biếncurs1được nói trở thànhkhông bị ràng buộcvì nó không bị ràng buộc bất kỳ truy vấn cụ thể nào.

23.7.2. Mở kèo bóng đá cúp c2 trỏ

Trước khi kèo bóng đá cúp c2 trỏ có thể được sử dụng để lấy hàng, nó phải làMở. (Đây là hành động tương đương đến lệnh sqlTuyên bố kèo bóng đá cúp c2 trỏ.)PL/PGSQLcó bốn dạng của Tuyên bố mở, hai trong số đó được sử dụng với kèo bóng đá cúp c2 trỏ không liên kết các biến và hai biến khác để sử dụng với kèo bóng đá cúp c2 trỏ bị ràng buộc biến.

23.7.2.1. Mở để chọn

Mởkhông liên kếtcho chọn ...;

Biến kèo bóng đá cúp c2 trỏ được mở và đưa ra truy vấn để thực hiện. kèo bóng đá cúp c2 trỏ không thể mở, và nó phải được tuyên bố là một kèo bóng đá cúp c2 trỏ không liên kết (nghĩa là, như một đơn giảnrefcursor14012_14102PL/PGSQL: PL/PGSQLTên kèo bóng đá cúp c2 được thay thế cho, và kế hoạch truy vấn được lưu trữ để sử dụng lại có thể.

Mở Curs1 để chọn * từ foo WHERE key = myKey;

23.7.2.2. Mở để thực thi

Mởkhông liên kếtcho thực thiTruy vấn chuỗi;

14675_14876refcursorkèo bóng đá cúp c2). Truy vấn được chỉ định làm biểu thức chuỗi theo cách tương tự như đối với lệnh thực thi. Như thường lệ, điều này mang lại sự linh hoạt cho truy vấn để thay đổi từ lần chạy này sang lần chạy tiếp theo.

Mở CULS1 để thực thi '' Chọn * từ '' || quote_ident ($ 1);

23.7.2.3. Mở một kèo bóng đá cúp c2 trỏ ràng buộc

MởBound-Cursor[(arging_values)];

Hình thức mở này được sử dụng để mở một biến kèo bóng đá cúp c2 trỏ có Truy vấn bị ràng buộc với nó khi nó được tuyên bố. kèo bóng đá cúp c2 trỏ không thể được mở rồi. Một danh sách các biểu thức giá trị đối số thực tế phải xuất hiện khi và chỉ khi kèo bóng đá cúp c2 trỏ được tuyên bố lấy lập luận. Các giá trị này sẽ được thay thế vào truy vấn. Kế hoạch truy vấn cho một kèo bóng đá cúp c2 trỏ ràng buộc luôn được xem xét có thể nhớ được --- không có tương đương với thực thi trong này trường hợp.

Mở Curs2;
Mở Curs3 (42);

23.7.3. Sử dụng kèo bóng đá cúp c2 trỏ

16239_16333

Những thao tác này không cần phải xảy ra trong cùng một chức năng mà mở kèo bóng đá cúp c2 trỏ để bắt đầu. Bạn có thể trả lại mộtRefcursorgiá trị từ một hàm và để Người gọi hoạt động trên kèo bóng đá cúp c2 trỏ. (Bên trong, ARefcursorGiá trị chỉ đơn giản là tên chuỗi của a Cổng thông tin chứa truy vấn hoạt động cho kèo bóng đá cúp c2 trỏ. Tên này có thể được truyền xung quanh, được gán cho khácRefcursorkèo bóng đá cúp c2, v.v. cổng thông tin.)

Tất cả các cổng được đóng hoàn toàn khi kết thúc giao dịch. Do đó ARefcursorGiá trị rất hữu ích cho tham chiếu chỉ một kèo bóng đá cúp c2 trỏ mở cho đến khi kết thúc giao dịch.

23.7.3.1. TÌM VỀ

Fetchkèo bóng đá cúp c2 trỏthànhTarget;

Lấy lấy hàng tiếp theo từ kèo bóng đá cúp c2 trỏ thành a mục tiêu, có thể là một biến hàng, một biến bản ghi hoặc một Danh sách các biến đơn giản được phân tách bằng dấu phẩy, giống như cho chọn VÀO TRONG. Như với Chọn vào, biến đặc biệt được tìm thấy có thể đã kiểm tra xem có nhận được một hàng hay không.

Tìm nạp curs1 vào rowvar;
Lấy curs2 vào foo, bar, baz;

23.7.3.2. ĐÓNG

Đóngkèo bóng đá cúp c2 trỏ;

Đóng đóng cổng thông tin bên dưới một kèo bóng đá cúp c2 trỏ mở. Cái này có thể được sử dụng để phát hành tài nguyên sớm hơn cuối giao dịch, hoặc để giải phóng biến kèo bóng đá cúp c2 trỏ sẽ được mở lại.

Đóng Call1;