Thay vì thực hiện toàn bộ truy vấn cùng kèo tỷ số bóng đá euro hôm nay lúc, có thể Thiết lập Akèo tỷ số bóng đá euro hôm nay trỏĐóng gói Truy vấn, và sau đó đọc kết quả truy vấn kèo tỷ số bóng đá euro hôm nay vài hàng cùng kèo tỷ số bóng đá euro hôm nay lúc. kèo tỷ số bóng đá euro hôm nay lý do để làm điều này là để tránh ghi đè bộ nhớ khi kết quả chứa kèo tỷ số bóng đá euro hôm nay số lượng lớn các hàng. (Tuy nhiên,PL/PGSQLNgười dùng thường không cần phải lo lắng về điều đó, vì đối với các vòng lặp tự động sử dụng kèo tỷ số bóng đá euro hôm nay trỏ bên trong Để tránh các vấn đề về trí nhớ.) Cách sử dụng thú vị hơn là quay lại tham chiếu đến một kèo tỷ số bóng đá euro hôm nay trỏ mà nó đã tạo, cho phép người gọi để đọc các hàng. Điều này cung cấp một cách hiệu quả để trả lại lớn Hàng đặt từ các chức năng.
Tất cả quyền truy cập vào kèo tỷ số bóng đá euro hôm nay trỏ trongPL/PGSQLTrải qua các biến kèo tỷ số bóng đá euro hôm nay trỏ, luôn luôn thuộc loại dữ liệu đặc biệtrefcursor. Một cách để tạo biến kèo tỷ số bóng đá euro hôm nay 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 tỷ số bóng đá euro hôm nay trỏ Syntax Tuyên bố, nói chung là:
tênkèo tỷ số bóng đá euro hôm nay trỏ [(Đối số)] choselect_query;
(chocó thể được thay thế bằnglàcho khả năng tương thích của Oracle.)Đối số, nếu có, là kèo tỷ số bóng đá euro hôm nay dấu phẩy được phân tách bằng dấu phẩy Danh sáchtên Kiểu dữ liệucặ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 tỷ số bóng đá euro hôm nay trỏ được mở.
kèo tỷ số bóng đá euro hôm nay số ví dụ:
Khai báo Curs1 refcursor; kèo tỷ số bóng đá euro hôm nay trỏ curs2 cho chọn * từ tenk1; kèo tỷ số bóng đá euro hôm nay trỏ curs3 (khóa int) được chọn * từ tenk1 trong đó độc đáo1 = phím;
Cả ba biến 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ó kèo tỷ số bóng đá euro hôm nay 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 tỷ số bóng đá euro hôm nay 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 với bất kỳ truy vấn cụ thể nào.
Trước khi kèo tỷ số bóng đá euro hôm nay 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 tỷ số bóng đá euro hôm nay trỏ.)PL/PGSQLcó bốn dạng của Câu lệnh mở, hai trong số đó sử dụng các biến kèo tỷ số bóng đá euro hôm nay trỏ không liên kết và hai biến kèo tỷ số bóng đá euro hôm nay trỏ bị ràng buộc khác.
MởUNBOUND-CURSORcho chọn ...;
Biến kèo tỷ số bóng đá euro hôm nay trỏ được mở và đưa ra truy vấn để thực hiện. kèo tỷ số bóng đá euro hôm nay trỏ không thể mở, và nó phải được tuyên bố là một kèo tỷ số bóng đá euro hôm nay trỏ không liên kết (nghĩa là, như một đơn giảnRefcursorBiến). Chọn Truy vấn được xử lý theo cách tương tự như các câu lệnh khác TRONGPL/PGSQL: PL/PGSQLTên biến được thay thế, và kế hoạch truy vấn được lưu trữ để sử dụng lại có thể.
Mở Curs1 cho chọn * từ foo trong đó key = myKey;
Mởkhông liên kếtcho thực thiTruy vấn chuỗi;
Biến kèo tỷ số bóng đá euro hôm nay trỏ được mở và đưa ra truy vấn để thực hiện. kèo tỷ số bóng đá euro hôm nay trỏ không thể mở, và nó phải được tuyên bố là một kèo tỷ số bóng đá euro hôm nay trỏ không liên kết (nghĩa là, như một đơn giảnrefcursorBiến). Truy vấn được chỉ định làm biểu thức chuỗi theo cùng kèo tỷ số bóng đá euro hôm nay cách như trong Thực thi lệnh. Như thường lệ, điều này mang lại sự linh hoạt để Truy vấn có thể 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);
MởBound-Cursor[(argarm_values)];
Hình thức mở này được sử dụng để mở một biến kèo tỷ số bóng đá euro hôm nay trỏ có Truy vấn bị ràng buộc với nó khi nó được tuyên bố. kèo tỷ số bóng đá euro hôm nay 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 tỷ số bóng đá euro hôm nay trỏ được tuyên bố lấy lập luận. Các giá trị này sẽ được thay thế trong truy vấn. Các Kế hoạch truy vấn cho một kèo tỷ số bóng đá euro hôm nay trỏ bị ràng buộc luôn được coi là có thể lưu trữ được --- không có tương đương với thực thi trong trường hợp này.
Mở Call2; Mở Curs3 (42);
Một khi kèo tỷ số bóng đá euro hôm nay trỏ đã được mở, nó có thể được thao tác với các tuyên bố được mô tả ở đây.
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 tỷ số bóng đá euro hôm nay 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 tỷ số bóng đá euro hôm nay trỏ. (Bên trong, Arefcursor16582_16731RefcursorBiến, v.v. cổng thông tin.)
Tất cả các cổng được đóng hoàn toàn ở cuối giao dịch. Do đó ArefcursorGiá trị rất hữu ích cho tham chiếu chỉ một kèo tỷ số bóng đá euro hôm nay trỏ mở cho đến khi kết thúc giao dịch.
Fetchkèo tỷ số bóng đá euro hôm nay trỏthànhTarget;
Lấy lại hàng tiếp theo từ kèo tỷ số bóng đá euro hôm nay 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ư chọn VÀO TRONG. Như với Chọn vào, Biến đặc biệttìm thấycó thể được kiểm tra xem liệu kèo tỷ số bóng đá euro hôm nay hàng có phải là thu được hay không.
Tìm nạp curs1 vào rowvar; Lấy curs2 vào foo, bar, baz;
Đóngkèo tỷ số bóng đá euro hôm nay trỏ;
Đóng đóng cổng thông tin bên dưới một kèo tỷ số bóng đá euro hôm nay 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 tỷ số bóng đá euro hôm nay trỏ sẽ được mở lại.
Đóng Call1;
PL/PGSQLCác chức năng có thể trả lại kèo tỷ số bóng đá euro hôm nay trỏ cho người gọi. Điều này được sử dụng để trả về nhiều hàng hoặc cột từ chức năng. Chức năng mở ra kèo tỷ số bóng đá euro hôm nay trỏ và trả lại tên kèo tỷ số bóng đá euro hôm nay trỏ cho người gọi. Người gọi Sau đó có thể lấy hàng từ kèo tỷ số bóng đá euro hôm nay trỏ. kèo tỷ số bóng đá euro hôm nay trỏ có thể được đóng lại bởi người gọi hoặc nó sẽ được đóng tự động khi giao dịch đóng.
Tên kèo tỷ số bóng đá euro hôm nay trỏ được trả về bởi hàm có thể được chỉ định bởi người gọi hoặc tự động được tạo. Sau đây Ví dụ cho thấy cách một tên kèo tỷ số bóng đá euro hôm nay trỏ có thể được cung cấp bởi người gọi:
Tạo thử nghiệm bảng (văn bản col); Chèn vào các giá trị kiểm tra ('123'); Tạo chức năng Reffunc (refcursor) Trả về refcursor là ' BẮT ĐẦU Mở $ 1 cho chọn col từ bài kiểm tra; Trả lại $ 1; KẾT THÚC; 'Ngôn ngữ' plpgsql '; BẮT ĐẦU; Chọn reffunc ('funccursor'); Tìm nạp tất cả trong funccursor; LÀM;
Ví dụ sau sử dụng tên kèo tỷ số bóng đá euro hôm nay trỏ tự động thế hệ:
Tạo chức năng reffunc2 () trả về refcursor là ' TUYÊN BỐ ref refcursor; BẮT ĐẦU Mở REF cho chọn Col từ thử nghiệm; Trả lại ref; KẾT THÚC; 'Ngôn ngữ' plpgsql '; BẮT ĐẦU; Chọn reffunc2 (); Reffunc2 -------------------- <kèo tỷ số bóng đá euro hôm nay trỏ không tên 1 (1 hàng) Tìm nạp tất cả trong "<kèo tỷ số bóng đá euro hôm nay trỏ không tên 1"; LÀM;