PostgreSQL: soi kèo bóng đá truoctran liệu: | |||
---|---|---|---|
prev | UP | Chương 40.PL/PGSQL - SQLNgôn ngữ thủ tục | Tiếp theo |
Trong phần này và các loại sau, chúng tôi mô tả tất cả các loại câu kèo bóng đá pháp được hiểu rõ ràng bởiPL/PGSQL. Bất cứ điều gì không được công nhận là một trong các loại câu kèo bóng đá pháp này được coi là kèo bóng đá pháp SQL và được gửi đến công cụ cơ sở dữ liệu chính để thực thi, như được mô tả trongPhần 40.5.2vàPhần 40.5.3.
kèo bóng đá pháp gán giá trị cho APL/PGSQLBiến được viết là:
Biến: = | =Biểu thức;
Như đã giải thích trước đây, biểu thức trong kèo bóng đá pháp tuyên bố như vậy được đánh giá bằng phương pháp SQLChọnkèo bóng đá pháp được gửi đến công cụ cơ sở dữ liệu chính. Biểu thức phải mang lại một giá trị duy nhất (có thể là giá trị hàng, nếu biến là một biến hoặc biến bản ghi). Biến đích có thể là một biến đơn giản (đủ điều kiện tùy chọn với tên khối), trường của một hàng hoặc biến ghi hoặc một phần tử của một mảng là một biến hoặc trường đơn giản. Bình đẳng (=) có thể được sử dụng thay vì tuân thủ PL/SQL: =.
Nếu kiểu dữ liệu kết quả của biểu thức không khớp với kiểu dữ liệu của biến, giá trị sẽ bị ép buộc như thể bằng cách phân công (xemPhần 10.4). Nếu không có diễn viên gán nào được biết đến cho cặp loại dữ liệu liên quan,PL/PGSQLPhiên dịch sẽ cố gắng chuyển đổi giá trị kết quả bằng văn bản, đó là bằng cách áp dụng chức năng đầu ra của loại kết quả theo sau là chức năng đầu vào của loại biến. Lưu ý rằng điều này có thể dẫn đến kèo bóng đá pháp lỗi thời gian chạy được tạo bởi hàm đầu vào, nếu dạng chuỗi của giá trị kết quả không được chấp nhận cho hàm đầu vào.
Ví dụ:
thuế: = Subtotal * 0,06; my_record.user_id: = 20;
Đối với bất kỳ kèo bóng đá pháp SQL nào không trả lại hàng, ví dụChènkhông cóTrở vềmệnh đề, bạn có thể thực thi kèo bóng đá pháp trong mộtPL/PGSQLHàm chỉ bằng cách viết kèo bóng đá pháp.
anyPL/PGSQLTên biến xuất hiện trong văn bản kèo bóng đá pháp được coi là một tham số và sau đó giá trị hiện tại của biến được cung cấp dưới dạng giá trị tham số tại thời gian chạy. Điều này giống hệt như việc xử lý được mô tả trước đó cho các biểu thức; Để biết chi tiết, xemPhần 40.10.1.
Khi thực hiện kèo bóng đá pháp SQL theo cách này,PL/PGSQLCó thể lưu trữ và sử dụng lại kế hoạch thực thi cho kèo bóng đá pháp, như đã thảo luận trongPhần 40.10.2.
Đôi khi rất hữu ích khi đánh giá kèo bóng đá pháp biểu thức hoặcChọnTruy vấn nhưng loại bỏ kết quả, ví dụ khi gọi kèo bóng đá pháp hàm có tác dụng phụ nhưng không có giá trị kết quả hữu ích. Để làm điều này trongPL/PGSQL, Sử dụngthực hiệnTuyên bố:
thực hiệnTruy vấn;
14291_14307Truy vấnvà loại bỏ kết quả. ViếtTruy vấngiống như cách bạn sẽ viết SQLChọnkèo bóng đá pháp, nhưng thay thế từ khóa ban đầuChọnvớithực hiện. VìvớiTruy vấn, sử dụngthực hiệnVà sau đó đặt truy vấn trong ngoặc đơn. (Trong trường hợp này, truy vấn chỉ có thể trả về kèo bóng đá pháp hàng.)PL/PGSQLBiến sẽ được thay thế vào truy vấn giống như đối với các kèo bóng đá pháp trả về không có kết quả và kế hoạch được lưu trữ theo cùng một cách. Ngoài ra, biến đặc biệttìm thấyđược đặt thành true nếu truy vấn được tạo ra ít nhất kèo bóng đá pháp hàng hoặc sai nếu nó không tạo ra hàng (xemPhần 40.5.5).
Lưu ý:Người ta có thể mong đợi rằng viếtChọntrực tiếp sẽ thực hiện kết quả này, nhưng hiện tại cách duy nhất được chấp nhận để làm làthực hiện. kèo bóng đá pháp sql có thể trả về hàng, chẳng hạn nhưChọn, sẽ bị từ chối như kèo bóng đá pháp lỗi trừ khi nó cóthành15576_15619
kèo bóng đá pháp ví dụ:
thực hiện created_mv ('cs_session_page_requests_mv', my_query);
Kết quả của kèo bóng đá pháp SQL mang lại một hàng duy nhất (có thể là nhiều cột) có thể được gán cho biến bản ghi, biến loại hàng hoặc danh sách các biến vô hướng. Điều này được thực hiện bằng cách viết kèo bóng đá pháp SQL cơ sở và thêm mộtthànhmệnh đề. Ví dụ,
Chọnselect_expressionsthành [nghiêm ngặt]TargetTừ ...; Chèn ... trở vềBiểu thứcthành [nghiêm ngặt]Target; Cập nhật ... Trả vềBiểu thứcthành [nghiêm ngặt]Target; Xóa ... Trả vềBiểu thứcthành [nghiêm ngặt]16826_16834;
WHERETargetcó thể là một biến bản ghi, biến hàng hoặc danh sách phân tách bằng dấu phẩy kèo bóng đá pháp biến đơn giản và kèo bóng đá pháp trường bản ghi/hàng.PL/PGSQLBiến sẽ được thay thế vào phần còn lại của truy vấn và kế hoạch được lưu trữ, giống như được mô tả ở trên cho các kèo bóng đá pháp không trả lại hàng. Điều này hoạt động choChọn, Chèn/Cập nhật/XóavớiTrở vềvà các kèo bóng đá pháp tiện ích trả về kết quả bộ hàng (chẳng hạn nhưGiải thích). Ngoại trừthànhmệnh đề, kèo bóng đá pháp SQL giống như nó sẽ được viết bên ngoàiPL/PGSQL.
Tip:Lưu ý rằng cách giải thích này củaChọnvớithànhhoàn toàn khác vớiPostgreSQL'thường xuyênChọn vàokèo bóng đá pháp, trong đóthànhTarget là kèo bóng đá pháp bảng mới được tạo. Nếu bạn muốn tạo kèo bóng đá pháp bảng từChọnKết quả bên trong APL/PGSQLchức năng, sử dụng cú kèo bóng đá phápTạo bảng ... như chọn.
Nếu một hàng hoặc danh sách biến được sử dụng làm mục tiêu, kèo bóng đá pháp cột kết quả của truy vấn phải khớp chính xác với cấu trúc của mục tiêu là với số và loại dữ liệu, hoặc nếu không xảy ra lỗi thời gian chạy. Khi một biến bản ghi là mục tiêu, nó sẽ tự động cấu hình chính nó thành loại hàng của kèo bóng đá pháp cột kết quả truy vấn.
Thethànhmệnh đề có thể xuất hiện ở hầu hết mọi nơi trong kèo bóng đá pháp SQL. Theo thông thường, nó được viết ngay trước hoặc ngay sau danh sáchselect_expressionstrong AChọnkèo bóng đá pháp hoặc ở cuối kèo bóng đá pháp cho các loại kèo bóng đá pháp khác. Bạn nên tuân theo quy ước này trong trường hợpPL/PGSQLtrình phân tích cú pháp trở nên chặt chẽ hơn trong kèo bóng đá pháp phiên bản tương lai.
nếunghiêm ngặtkhông được chỉ định trongthànhmệnh đề, sau đóTargetsẽ được đặt thành hàng đầu tiên được truy vấn trả về hoặc cho NULLS nếu truy vấn trả về không có hàng. (Lưu ý rằng"Hàng đầu tiên"không được xác định rõ ràng trừ khi bạn đã sử dụngĐặt hàng bởi.) Bất kỳ hàng kết quả nào sau khi hàng đầu tiên bị loại bỏ. Bạn có thể kiểm tra đặc biệttìm thấyBiến (xemPhần 40.5.5) Để xác định xem kèo bóng đá pháp hàng đã được trả về:
Chọn * vào MyRec từ empname = myname; Nếu không tìm thấy thì Tăng ngoại lệ 'nhân viên % không tìm thấy', myname; Kết thúc nếu;
Nếunghiêm ngặtTùy chọn được chỉ định, truy vấn phải trả về chính xác kèo bóng đá pháp hàng hoặc lỗi thời gian chạy sẽ được báo cáo,NO_DATA_FOUND(không có hàng) hoặcTOUS_MANY_ROWS(nhiều hơn kèo bóng đá pháp hàng). Bạn có thể sử dụng kèo bóng đá pháp khối ngoại lệ nếu bạn muốn bắt lỗi, ví dụ:
20138_20413
Thực hiện thành công một kèo bóng đá pháp vớinghiêm ngặtluôn luôn đặttìm thấyĐúng.
choChèn/Cập nhật/XóavớiTrở về, PL/PGSQLBáo cáo lỗi cho nhiều hàng đã trả lại, ngay cả khi20813_20821không được chỉ định. Điều này là do không có tùy chọn nhưĐặt hàng bởiĐể xác định hàng nào bị ảnh hưởng.
nếuprint_strict_params21037_21126nghiêm ngặtkhông được đáp ứng,chi tiếtMột phần của thông báo lỗi sẽ bao gồm thông tin về kèo bóng đá pháp tham số được truyền cho truy vấn. Bạn có thể thay đổiprint_strict_params21361_21401plpgsql.print_strict_params, mặc dù chỉ kèo bóng đá pháp phần tổng hợp hàm tiếp theo mới bị ảnh hưởng. Bạn cũng có thể bật nó trên cơ sở mỗi chức năng bằng cách sử dụng tùy chọn trình biên dịch, ví dụ:
21636_21898
Về thất bại, chức năng này có thể tạo ra kèo bóng đá pháp thông báo lỗi như
Lỗi: Truy vấn trả về không có hàng Chi tiết: Tham số: $ 1 = 'Nosuchuser' Bối cảnh: Hàm PL/PGSQL GET_USERID (Text) Dòng 6 tại câu kèo bóng đá pháp SQL
Lưu ý:Thenghiêm ngặtTùy chọn phù hợp với hành vi của Oracle PL/SQL'sChọn vàovà các câu kèo bóng đá pháp liên quan.
Để xử lý kèo bóng đá pháp trường hợp bạn cần xử lý nhiều hàng kết quả từ truy vấn SQL, xemPhần 40.6.4.
Thông thường, bạn sẽ muốn tạo các kèo bóng đá pháp động bên trongPL/PGSQLCác chức năng, nghĩa là các kèo bóng đá pháp sẽ liên quan đến các bảng khác nhau hoặc các loại dữ liệu khác nhau mỗi khi chúng được thực thi.PL/PGSQLCác nỗ lực bình thường để lưu trữ các kế hoạch cho các kèo bóng đá pháp (như đã thảo luận trongPhần 40.10.223139_23212thực thiCâu kèo bóng đá pháp được cung cấp:
thực thichuỗi kèo bóng đá pháp[thành [nghiêm ngặt]Target ] [Sử dụngexpression[, ...]];
WHEREchuỗi kèo bóng đá pháplà kèo bóng đá pháp biểu thức mang lại kèo bóng đá pháp chuỗi (loạiText) chứa kèo bóng đá pháp sẽ được thực thi. Tùy chọnTargetlà một biến bản ghi, biến hàng hoặc danh sách các biến đơn giản và các trường ghi/hàng đơn giản, trong đó kết quả của kèo bóng đá pháp sẽ được lưu trữ. Tùy chọnSử dụngBiểu thức cung cấp các giá trị được chèn vào kèo bóng đá pháp.
Không thay thếPL/PGSQLBiến được thực hiện trên chuỗi kèo bóng đá pháp được tính toán. Bất kỳ giá trị biến bắt buộc nào cũng phải được chèn vào chuỗi kèo bóng đá pháp khi nó được xây dựng; hoặc bạn có thể sử dụng các tham số như mô tả bên dưới.
Ngoài ra, không có kế hoạch đệm cho các kèo bóng đá pháp được thực hiện thông quathực thi. Thay vào đó, kèo bóng đá pháp luôn được lên kế hoạch mỗi khi câu kèo bóng đá pháp được chạy. Do đó, chuỗi kèo bóng đá pháp có thể được tạo động trong hàm để thực hiện các hành động trên các bảng và cột khác nhau.
Thethànhmệnh đề Chỉ định nơi kết quả của kèo bóng đá pháp trả về kèo bóng đá pháp SQL phải được gán. Nếu một danh sách hàng hoặc danh sách biến được cung cấp, nó phải khớp chính xác với cấu trúc của kết quả của truy vấn (khi một biến bản ghi được sử dụng, nó sẽ tự động cấu hình để khớp cấu trúc kết quả). Nếu nhiều hàng được trả về, chỉ có hàng đầu tiên được gán chothànhBiến. Nếu không có hàng nào được trả về, null được gán chothànhBiến (s). Nếu khôngthànhmệnh đề được chỉ định, kết quả truy vấn bị loại bỏ.
Nếunghiêm ngặtTùy chọn được đưa ra, kèo bóng đá pháp lỗi được báo cáo trừ khi truy vấn tạo chính xác kèo bóng đá pháp hàng.
Chuỗi kèo bóng đá pháp có thể sử dụng các giá trị tham số, được tham chiếu trong kèo bóng đá pháp là$ 1, $ 2, v.v ... Những biểu tượng này đề cập đến kèo bóng đá pháp giá trị được cung cấp trongsử dụngmệnh đề. Phương pháp này thường được ưu tiên hơn để chèn các giá trị dữ liệu vào chuỗi kèo bóng đá pháp làm văn bản: nó tránh được chi phí thời gian chạy của việc chuyển đổi các giá trị thành văn bản và trở lại, và nó ít bị các cuộc tấn công từ chối SQL hơn vì không cần phải trích dẫn hoặc thoát ra. Một ví dụ là:
Thực thi 'Chọn đếm (*) từ mytable trong đó chèn_by = $ 1 và chèn <= $ 2' Vào c Sử dụng Check_user, secoSed_date;
26057_26353
Thực thi 'Chọn đếm (*) từ' || QUOTE_IDENT (TabName) || 'Trong đó chèn_by = $ 1 và chèn <= $ 2' Vào c Sử dụng Check_user, secoSed_date;
Cách tiếp cận sạch hơn là sử dụngđịnh dạng ()
's%IĐặc điểm kỹ thuật cho tên bảng hoặc cột (chuỗi được phân tách bởi kèo bóng đá pháp dòng mới được nối):
Định dạng thực thi ('Chọn đếm (*) từ %i' 'Trong đó chèn_by = $ 1 và chèn <= $ 2', tabName) Vào c Sử dụng Check_user, secoSed_date;
Một hạn chế khác trên kèo bóng đá pháp ký hiệu tham số là chúng chỉ hoạt động trongChọn, Chèn, Cập nhậtvàXóakèo bóng đá pháp. Trong các loại câu kèo bóng đá pháp khác (được gọi chung là các câu kèo bóng đá pháp tiện ích), bạn phải chèn các giá trị theo văn bản ngay cả khi chúng chỉ là giá trị dữ liệu.
ANthực thiVới chuỗi kèo bóng đá pháp hằng số đơn giản và một số27390_27397tham số, như trong ví dụ đầu tiên ở trên, có chức năng tương đương với chỉ ghi kèo bóng đá pháp trực tiếp trongPL/PGSQLvà cho phép thay thếPL/PGSQLBiến sẽ tự động xảy ra. Sự khác biệt quan trọng làthực thisẽ lập kế hoạch lại kèo bóng đá pháp trên mỗi lần thực thi, tạo một kế hoạch dành riêng cho các giá trị tham số hiện tại; trong khiPL/PGSQLNếu không thì có thể tạo một kế hoạch chung và lưu trữ nó để sử dụng lại. Trong kèo bóng đá pháp tình huống mà kế hoạch tốt nhất phụ thuộc mạnh vào kèo bóng đá pháp giá trị tham số, có thể hữu ích khi sử dụngthực thiĐể đảm bảo tích cực rằng kèo bóng đá pháp kế hoạch chung không được chọn.
Chọn vàoHiện không được hỗ trợ trongthực thi; Thay vào đó, thực hiện kèo bóng đá pháp đơn giảnChọnkèo bóng đá pháp và chỉ định28348_28354Là kèo bóng đá pháp phần củathực thichính nó.
Lưu ý:ThePL/PGSQL thực thiCâu kèo bóng đá pháp không liên quan đếnthực thiCâu kèo bóng đá pháp SQL được hỗ trợ bởiPostgreSQLMáy chủ. Máy chủthực thiCâu kèo bóng đá pháp không thể được sử dụng trực tiếp trongPL/PGSQLHàm (và không cần thiết).
Ví dụ 40-1. Trích dẫn kèo bóng đá pháp giá trị trong kèo bóng đá pháp truy vấn động
Khi làm việc với các kèo bóng đá pháp động, bạn thường sẽ phải xử lý việc thoát khỏi các trích dẫn đơn lẻ. Phương pháp được đề xuất để trích dẫn văn bản cố định trong cơ thể chức năng của bạn là trích dẫn đô la. (Nếu bạn có mã di sản không sử dụng báo giá đô la, vui lòng tham khảo tổng quan trongPhần 40.11.1, có thể tiết kiệm cho bạn kèo bóng đá pháp số nỗ lực khi dịch mã nói thành kèo bóng đá pháp sơ đồ hợp lý hơn.)
Giá trị động yêu cầu xử lý cẩn thận vì chúng có thể chứa kèo bóng đá pháp ký tự trích dẫn. Một ví dụ sử dụngđịnh dạng ()
(Điều này giả định rằng bạn là đô la trích dẫn cơ thể chức năng để không cần phải nhân đôi dấu hiệu):
Định dạng thực thi ('Cập nhật TBL SET %I = $ 1' 'Trong đó key = $ 2', colname) bằng cách sử dụng newValue, keyValue;
cũng có thể gọi trực tiếp kèo bóng đá pháp chức năng trích dẫn:
Thực thi 'Cập nhật bộ TBL' || quote_ident (colname) || '=' || quote_literal (newValue) || 'WHERE KEY =' || quote_literal (keyValue);
Ví dụ này thể hiện việc sử dụngquote_ident
vàquote_literal
Chức năng (xemPhần 9.4). Để an toàn, kèo bóng đá pháp biểu thức chứa định danh cột hoặc bảng phải được truyền quaquote_ident
Trước khi chèn vào truy vấn động. Biểu thức chứa các giá trị nên là chuỗi theo nghĩa đen trong kèo bóng đá pháp được xây dựng phải được truyền quaquote_literal
. kèo bóng đá pháp chức năng này thực hiện kèo bóng đá pháp bước thích hợp để trả về văn bản đầu vào được đặt trong kèo bóng đá pháp trích dẫn kép hoặc đơn tương ứng, với bất kỳ ký tự đặc biệt được nhúng nào thoát ra đúng.
vìquote_literal
được dán nhãnnghiêm ngặt, nó sẽ luôn trả về null khi được gọi bằng kèo bóng đá pháp đối số null. Trong ví dụ trên, nếuNewValuehoặcKeyValuelà NULL, toàn bộ chuỗi truy vấn động sẽ trở thành null, dẫn đến lỗi từthực thi31229_31273quote_nullable
Hàm, hoạt động giống nhưquote_literal
Ngoại trừ khi được gọi bằng đối số null, nó trả về chuỗinull. Ví dụ,
Thực thi 'Cập nhật bộ TBL' || quote_ident (colname) || '=' || quote_nullable (newValue) || 'WHERE KEY =' || quote_nullable (keyValue);
Nếu bạn đang xử lý kèo bóng đá pháp giá trị có thể là NULL, bạn thường nên sử dụngquote_nullable
thay choquote_literal
.
Như mọi khi, phải cẩn thận để đảm bảo rằng kèo bóng đá pháp giá trị null trong truy vấn không mang lại kết quả ngoài ý muốn. Ví dụWHEREmệnh đề
'trong đó khóa =' || quote_nullable (keyValue)
Sẽ không bao giờ thành công nếuKeyValuelà null, vì kết quả của việc sử dụng toán tử bình đẳng=với kèo bóng đá pháp toán hạng null luôn luôn là null. Nếu bạn muốn null hoạt động như kèo bóng đá pháp giá trị khóa thông thường, bạn sẽ cần viết lại những điều trên là
'trong đó khóa không khác biệt với' || quote_nullable (keyValue)
(Hiện tại,không khác biệt vớiđược xử lý kém hiệu quả hơn nhiều so với=, vì vậy đừng làm điều này trừ khi bạn phải. Nhìn thấyPhần 9.2Để biết thêm thông tin về NULLS vàlà khác biệt.)
Lưu ý rằng trích dẫn đô la chỉ hữu ích để trích dẫn văn kèo bóng đá pháp cố định. Sẽ là một ý tưởng rất tệ khi cố gắng viết ví dụ này như:
Thực thi 'Cập nhật bộ TBL' || quote_ident (colname) || '= $$' || NewValue || '$$ trong đó key =' || quote_literal (keyValue);
Bởi vì nó sẽ bị hỏng nếu nội dung củaNewValuetình cờ chứa$$. Sự phản đối tương tự sẽ áp dụng cho bất kỳ dấu phân cách nào khác mà bạn có thể chọn. Vì vậy, để trích dẫn một cách an toàn văn kèo bóng đá pháp không được biết trước, bạnphảisử dụngquote_literal
, QUOTE_NULLABLE
hoặcQUOTE_IDENT
, khi thích hợp.
Các câu kèo bóng đá pháp SQL động cũng có thể được xây dựng một cách an toàn bằng cách sử dụngĐịnh dạng
Hàm (xemPhần 9.4). Ví dụ:
Định dạng thực thi ('Cập nhật TBL SET %I = %L' 'Trong đó key = %l', colname, newValue, keyValue);
%Ilà tương đương vớiquote_ident
và%Ltương đương vớiquote_nullable
. TheĐịnh dạng
Có thể sử dụng chức năng kết hợp vớiSử dụngmệnh đề:
Định dạng thực thi ('Cập nhật TBL SET %I = $ 1 trong đó Key = $ 2', Colname) Sử dụng NewValue, KeyValue;
Mẫu này tốt hơn vì kèo bóng đá pháp biến được xử lý ở định dạng loại dữ liệu gốc của chúng, thay vì chuyển đổi chúng một cách vô điều kiện sang văn bản và trích dẫn chúng qua%L. Nó cũng hiệu quả hơn.
Một ví dụ lớn hơn nhiều về kèo bóng đá pháp động vàthực thiCó thể nhìn thấy trongVí dụ 40-9, xây dựng và thực hiện ATạo chức năngkèo bóng đá pháp xác định chức năng mới.
Có một số cách để xác định ảnh hưởng của kèo bóng đá pháp. Phương pháp đầu tiên là sử dụngNhận chẩn đoánkèo bóng đá pháp có biểu mẫu:
Nhận [hiện tại] Chẩn đoánBiến= | : =Mục[, ...];
kèo bóng đá pháp này cho phép truy xuất các chỉ báo trạng thái hệ thống.hiện tạilà kèo bóng đá pháp từ tiếng ồn (nhưng xem thêmNhận chẩn đoán xếp chồnginPhần 40.6.6.1). Mỗi35733_35739là kèo bóng đá pháp từ khóa xác định giá trị trạng thái được gán cho được chỉ địnhbiến(nên thuộc loại dữ liệu phù hợp để nhận nó). kèo bóng đá pháp mục trạng thái hiện có được hiển thị trongBảng 40-1. Đại tá-bình đẳng (36081_36085) có thể được sử dụng thay vì SQL-Standard=Mã thông báo. kèo bóng đá pháp ví dụ:
36208_36250
Bảng 40-1. kèo bóng đá pháp mục chẩn đoán có sẵn
tên | loại | Mô tả |
---|---|---|
ROW_COUNT | Số nguyên | Số lượng hàng được xử lý bởi gần đây nhấtSQLkèo bóng đá pháp |
result_oid | OID | OID của hàng cuối cùng được chèn bởi gần đây nhấtSQLkèo bóng đá pháp (chỉ hữu ích sau mộtChènkèo bóng đá pháp vào bảng có oids) |
pg_context | Text | dòng văn kèo bóng đá pháp mô tả ngăn xếp cuộc gọi hiện tại (xemPhần 40.6.7) |
Phương pháp thứ hai để xác định hiệu ứng của kèo bóng đá pháp là kiểm tra biến đặc biệt có têntìm thấy, thuộc loạiBoolean. tìm thấyBắt đầu sai trong mỗiPL/PGSQLCuộc gọi chức năng. Nó được đặt bởi từng loại câu kèo bóng đá pháp sau:
AChọn vàoBộ câu kèo bóng đá pháptìm thấyĐúng nếu kèo bóng đá pháp hàng được gán, sai nếu không có hàng được trả về.
Athực hiệnbộ câu kèo bóng đá pháptìm thấy37918_38002
Cập nhật, ChènvàXóaCâu kèo bóng đá pháptìm thấyĐúng nếu ít nhất kèo bóng đá pháp hàng bị ảnh hưởng, sai nếu không có hàng bị ảnh hưởng.
AFetchBộ câu kèo bóng đá pháptìm thấyĐúng nếu nó trả lại kèo bóng đá pháp hàng, sai nếu không có hàng được trả về.
ADi chuyểnbộ câu kèo bóng đá pháptìm thấyĐúng nếu nó định vị thành công con trỏ, sai nếu không.
Achohoặcforeachbộ câu kèo bóng đá phápTìm thấyĐúng nếu nó lặp lại kèo bóng đá pháp hoặc nhiều lần, khác.tìm thấyđược đặt theo cách này khi vòng lặp thoát; bên trong việc thực hiện vòng lặp,tìm thấykhông được sửa đổi bởi câu kèo bóng đá pháp LOOP, mặc dù nó có thể được thay đổi bằng cách thực hiện các câu kèo bóng đá pháp khác trong phần thân vòng.
Truy vấn trả vềvàTruy vấn trả vềCâu kèo bóng đá pháptìm thấyĐúng nếu truy vấn trả về ít nhất kèo bóng đá pháp hàng, sai nếu không có hàng được trả về.
khácPL/PGSQLCâu kèo bóng đá pháp không thay đổi trạng thái củaTìm thấy. Lưu ý cụ thể rằngthực thiThay đổi đầu ra củaNhận chẩn đoán, nhưng không thay đổitìm thấy.
tìm thấylà kèo bóng đá pháp biến cục bộ trong mỗiPL/PGSQLhàm; mọi thay đổi đối với nó chỉ ảnh hưởng đến chức năng hiện tại.
39851_40032nullcâu kèo bóng đá pháp:
null;
Ví dụ: hai đoạn mã sau đây tương đương:
Bắt đầu y: = x / 0; NGOẠI LỆ Khi Division_by_zero sau đó VÔ GIÁ TRỊ; - Bỏ qua lỗi KẾT THÚC;
Bắt đầu y: = x / 0; NGOẠI LỆ Khi phân chia_by_zero sau đó - bỏ qua lỗi KẾT THÚC;
Thích là kèo bóng đá pháp vấn đề của hương vị.
Lưu ý:Trong PL/SQL của Oracle, danh sách câu kèo bóng đá pháp trống không được phép, và vì vậynullCâu kèo bóng đá phápYêu cầuĐối với kèo bóng đá pháp tình huống như thế này.PL/PGSQLcho phép bạn không viết gì, thay vào đó.