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 kèo bóng đá hom nay trang chohiện tạiPhiên bản hoặc kèo bóng đá hom nay trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

37.8. kèo bóng đá hom nay trỏ

Thay vì thực hiện toàn bộ truy vấn cùng kèo bóng đá hom nay lúc, có thể Thiết lập Akèo bóng đá hom nay trỏĐóng gói Truy vấn, và sau đó đọc kết quả truy vấn kèo bóng đá hom nay vài hàng cùng kèo bóng đá hom nay lúc. kèo bóng đá hom nay lý do để làm điều này là để tránh ghi đè bộ nhớ khi kết quả chứa kèo bóng đá hom 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 đó, kể từcho10953_11237

37.8.1. Tuyên bố kèo bóng đá hom nay trỏ Biến

Tất cả quyền truy cập vào kèo bóng đá hom nay trỏ trongPL/PGSQLTrải qua các biến kèo bóng đá hom 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 bóng đá hom 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 bóng đá hom nay trỏ Syntax Tuyên bố, nói chung là:

tênkèo bóng đá hom nay trỏ [(Đối số)] choTruy vấn;

(chocó thể được thay thế bằngchoOracleTương thích.)Đối số, nếu được chỉ định, là danh sách các cặp được phân tách bằng dấu phẩytên DataTypeđịnh nghĩa 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 đá hom nay trỏ được mở.

kèo bóng đá hom nay số ví dụ:

Khai báo
    Curs1 refcursor;
    kèo bóng đá hom nay trỏ curs2 cho chọn * từ tenk1;
    kèo bóng đá hom nay trỏ curs3 (số nguyên khóa) đượ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 bóng đá hom 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 bóng đá hom 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 bất kỳ truy vấn cụ thể nào.

37.8.2. Mở kèo bóng đá hom nay trỏ

Trước khi kèo bóng đá hom 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 bóng đá hom nay trỏ.)PL/PGSQLcó ba dạng TheMởTuyên bố, hai trong số đó sử dụng Các biến kèo bóng đá hom nay trỏ không liên kết trong khi bộ thứ ba sử dụng kèo bóng đá hom nay trỏ bị ràng buộc Biến.

37.8.2.1.Mở cho Truy vấn

MởUNBOUND_CURSORchoTruy vấn;

Biến kèo bóng đá hom nay trỏ được mở và đưa ra truy vấn để thực hiện. kèo bóng đá hom nay trỏ không thể mở, và nó phải được tuyên bố là một kèo bóng đá hom nay trỏ không liên kết (nghĩa là, như một đơn giảnrefcursorBiến). Truy vấn Phải là14512_14520hoặc thứ gì đó khác đó trả về hàng (chẳng hạn nhưGiải thích). Truy vấn được xử lý theo cách tương tự như các lệnh SQL khác trong14711_14721: PL/PGSQLTên biến được thay thế, và kế hoạch truy vấn được lưu trong bộ nhớ cache để tái sử dụng.

kèo bóng đá hom nay ví dụ:

14928_14983

37.8.2.2.Mở để thực thi

MởUNBOUND_CURSORcho thực thiQuery_String;

Biến kèo bóng đá hom nay trỏ được mở và đưa ra truy vấn để thực hiện. kèo bóng đá hom nay trỏ không thể mở, và nó phải được tuyên bố là một kèo bóng đá hom 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ách tương tự như trong Thethực thilệnh. Như thường lệ, cái này mang lại sự linh hoạt để truy vấn có thể thay đổi từ kèo bóng đá hom nay lần chạy đến Kế tiếp.

kèo bóng đá hom nay ví dụ:

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

37.8.2.3. Mở một kèo bóng đá hom nay trỏ ràng buộc

MởBound_Cursor[(argion_values)];

Hình thức này củaMởđược sử dụng để mở một biến kèo bóng đá hom nay trỏ mà truy vấn bị ràng buộc với nó khi nó tuyên bố. kèo bóng đá hom nay trỏ không thể mở. Một danh sách thực tế Biểu thức giá trị đối số phải xuất hiện khi và chỉ khi kèo bóng đá hom nay trỏ đã được tuyên bố là có lập luận. Những giá trị này sẽ là thay thế trong truy vấn. Kế hoạch truy vấn cho một kèo bóng đá hom nay trỏ ràng buộc luôn luôn được coi là có thể lưu trữ được; không có tương đươngthực thi16715_16731

Ví dụ:

Mở Curs2;
Mở Curs3 (42);

37.8.3. Sử dụng kèo bóng đá hom nay trỏ

Một khi kèo bóng đá hom 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 bóng đá hom 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 bóng đá hom nay trỏ. (Bên trong, ArefcursorGiá trị chỉ đơn giản là tên chuỗi của a Cái gọi là cổng thông tin chứa truy vấn hoạt động cho kèo bóng đá hom nay trỏ. Tên này có thể được truyền xung quanh, được gán cho khácrefcursorBiế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ị có thể sử dụng được đối với tham chiếu chỉ một kèo bóng đá hom nay trỏ mở cho đến khi kết thúc giao dịch.

37.8.3.1.Fetch

Fetchkèo bóng đá hom nay trỏthànhTarget;

FetchLấy hàng tiếp theo từ kèo bóng đá hom nay trỏ vào một mục tiêu, có thể là một biến hàng Ghi lại biến hoặc danh sách đơn giản được phân tách bằng dấu phẩy các biến, giống nhưChọn vào. BẰNG vớiChọn vào, Đặc biệt biếntìm thấyCó thể được kiểm tra để xem có được kèo bóng đá hom nay hàng hay không.

kèo bóng đá hom nay ví dụ:

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

37.8.3.2.Đóng

Đóngkèo bóng đá hom nay trỏ;

ĐóngĐóng cổng bên dưới một kèo bóng đá hom nay trỏ mở. Điều này có thể được sử dụng để phát hành tài nguyên sớm hơn kết thúc giao dịch hoặc để giải phóng Biến kèo bóng đá hom nay trỏ sẽ được mở lại.

kèo bóng đá hom nay ví dụ:

Đóng Call1;

37.8.3.3. Trở lại kèo bóng đá hom nay trỏ

PL/PGSQL19388_19905

Tên cổng thông tin được sử dụng cho kèo bóng đá hom nay trỏ có thể được chỉ định bởi lập trình viên hoặc tự động được tạo. Để chỉ định một cổng thông tin Tên, chỉ cần gán một chuỗi chorefcursorBiến trước khi mở nó. Chuỗi giá trị củaRefcursor20211_20245Mởlà tên của Cổng thông tin cơ bản. Tuy nhiên, nếuRefcursorBiến là NULL,Mởtự động tạo tên không xung đột với bất kỳ cổng thông tin hiện có nào và gán nó chorefcursorBiến.

Lưu ý:Biến kèo bóng đá hom nay trỏ bị ràng buộc được khởi tạo thành giá trị chuỗi đại diện cho tên của nó, để Tên cổng thông tin giống như tên biến kèo bóng đá hom nay trỏ, Trừ khi người lập trình ghi đè nó bằng cách gán trước mở kèo bóng đá hom nay trỏ. Nhưng một biến kèo bóng đá hom nay trỏ không liên kết mặc định ban đầu với giá trị null, vì vậy nó sẽ nhận được một tên duy nhất được tạo tự động, trừ khi ghi đè.

Ví dụ sau đây cho thấy một cách một tên kèo bóng đá hom 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 bóng đá hom 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 bóng đá hom nay trỏ không tên 1
(1 hàng)

Tìm nạp tất cả trong "<kèo bóng đá hom nay trỏ không tên 1";
LÀM;

Ví dụ sau đây hiển thị một cách để trả về nhiều kèo bóng đá hom nay trỏ từ một hàm duy nhất:

22153_22514