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 tỷ lệ kèo bóng đá tối nay đượ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 những loại câu tỷ lệ kèo bóng đá tối nay này được coi là tỷ lệ kèo bóng đá tối nay 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 43.5.2.
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 một tuyên bố như vậy được đánh giá bằng phương pháp SQLChọn
tỷ lệ kèo bóng đá tối nay đượ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 (tùy chọn đủ điều kiện với tên khối), trường của một hàng hoặc mục tiêu ghi hoặc phần tử hoặc lát cắt của mục tiêu mảng. Bình đẳng (=
) có thể được sử dụng thay vì tuân thủ PL/SQL: =
.
13197_13339Phầ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/PGSQL13550_13878
13888_13899
thuế: = Subtotal * 0,06; my_record.user_id: = 20; my_array [j]: = 20; my_array [1: 3]: = mảng [1,2,3]; Complex_array [n] .realpart = 12.3;
Nói chung, bất kỳ tỷ lệ kèo bóng đá tối nay SQL nào không trả lại hàng có thể được thực thi trong APL/PGSQLHàm chỉ bằng cách viết tỷ lệ kèo bóng đá tối nay. Ví dụ: bạn có thể tạo và điền một bảng bằng cách viết
Tạo bảng myTable (khóa chính INT, văn bản dữ liệu); Chèn vào tỷ lệ kèo bóng đá tối nay giá trị mytable (1, 'một'), (2, 'hai');
Nếu tỷ lệ kèo bóng đá tối nay không trả lại hàng (ví dụChọn
hoặcChèn
/Cập nhật
/Xóa
vớiTrở về
), có hai cách để tiến hành. Khi tỷ lệ kèo bóng đá tối nay sẽ trả về tối đa một hàng hoặc bạn chỉ quan tâm đến hàng đầu ra đầu tiên, hãy viết tỷ lệ kèo bóng đá tối nay như bình thường nhưng thêm mộtthành
mệnh đề để nắm bắt đầu ra, như được mô tả trongPhần 43.5.3. Để xử lý tất cả các hàng đầu ra, hãy viết tỷ lệ kèo bóng đá tối nay làm nguồn dữ liệu cho mộtcho
Vòng lặp, như được mô tả trongPhần 43.6.6.
Thông thường không đủ để thực thi các tỷ lệ kèo bóng đá tối nay SQL được xác định tĩnh. Thông thường, bạn sẽ muốn một tỷ lệ kèo bóng đá tối nay sử dụng các giá trị dữ liệu khác nhau hoặc thậm chí khác nhau theo những cách cơ bản hơn như bằng cách sử dụng các tên bảng khác nhau vào các thời điểm khác nhau. Một lần nữa, có hai cách để tiến hành tùy thuộc vào tình huống.
PL/PGSQLCác giá trị biến có thể được tự động chèn vào các tỷ lệ kèo bóng đá tối nay SQL có thể tối ưu hóa, đó làChọn
, Chèn
, Cập nhật
, Xóa
, Hợp nhất
và các tỷ lệ kèo bóng đá tối nay tiện ích nhất định kết hợp một trong số này, chẳng hạn nhưGiải thích
vàTạo bảng ... như chọn
16488_16515PL/PGSQLTên biến xuất hiện trong văn bản tỷ lệ kèo bóng đá tối nay được thay thế bằng tham số truy vấn 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 43.11.1.
Khi thực hiện tỷ lệ kèo bóng đá tối nay SQL có thể tối ưu hóa theo cách này,PL/PGSQLCó thể sử dụng lại và sử dụng lại kế hoạch thực thi cho tỷ lệ kèo bóng đá tối nay, như đã thảo luận trong17238_17260.
Các tỷ lệ kèo bóng đá tối nay SQL không tối ưu (còn được gọi là tỷ lệ kèo bóng đá tối nay tiện ích) không có khả năng chấp nhận các tham số truy vấn. Vì vậy tự động thay thếPL/PGSQLBiến không hoạt động trong các tỷ lệ kèo bóng đá tối nay đó. Để bao gồm văn bản không liên tục trong tỷ lệ kèo bóng đá tối nay tiện ích được thực thi từPL/PGSQL, bạn phải xây dựng tỷ lệ kèo bóng đá tối nay tiện ích dưới dạng chuỗi và sau đóthực thi
Nó, như đã thảo luận trongPhần 43.5.4.
thực thi
cũng phải được sử dụng nếu bạn muốn sửa đổi tỷ lệ kèo bóng đá tối nay theo một cách nào khác ngoài việc cung cấp giá trị dữ liệu, ví dụ bằng cách thay đổi tên bảng.
Đôi khi rất hữu ích khi đánh giá một biểu thức hoặcChọn
Truy vấn nhưng loại bỏ kết quả, ví dụ khi gọi một 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ụngbiểu diễn
Tuyên bố:
biểu diễnTruy vấn
;
Điều này thực thiTruy vấn
và loại bỏ kết quả. ViếtTruy vấn
giống như cách bạn sẽ viết SQL18686_18694
tỷ lệ kèo bóng đá tối nay, nhưng thay thế từ khóa ban đầuChọn
vớibiểu diễn
. Vìvới
Truy vấn, sử dụngthực hiện
Và sau đó đặt truy vấn trong ngoặc đơn. (Trong trường hợp này, truy vấn chỉ có thể trả về một hàng.)PL/PGSQLBiến sẽ được thay thế vào truy vấn giống như mô tả ở trên 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 một hàng hoặc sai nếu nó không tạo ra hàng (xemPhần 43.5.5).
Người ta có thể mong đợi rằng viếtChọn
trự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 điều đó làbiểu diễn
. tỷ lệ kèo bóng đá tối nay sql có thể trả về hàng, chẳng hạn như19788_19796
19801_19851thành
mệnh đề như đã thảo luận trong phần tiếp theo.
Một ví dụ:
thực hiện created_mv ('cs_session_page_requests_mv', my_query);
Kết quả của tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay SQL cơ sở và thêm mộtthành
mệnh đề. Ví dụ,
Chọnselect_expressions
thành [nghiêm ngặt]Target
Từ ...; Chèn ... trở vềBiểu thức
thành [nghiêm ngặt]Target
; Cập nhật ... Trả vềBiểu thức
thành [nghiêm ngặt]Target
; Xóa ... Trả vềBiểu thức
thành [nghiêm ngặt21455_21459Target
;
WHERETarget
có 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 tỷ lệ kèo bóng đá tối nay biến đơn giản và tỷ lệ kèo bóng đá tối nay trường bản ghi/hàng.PL/PGSQLBiến sẽ được thay thế vào phần còn lại của tỷ lệ kèo bóng đá tối nay (nghĩa là mọi thứ trừthành
mệnh đề) giống như được mô tả ở trên và kế hoạch được lưu trữ theo cùng một cách. Điều này hoạt động choChọn
, Chèn
/Cập nhật
/Xóa
vớiTrở về
và các tỷ lệ kèo bóng đá tối nay tiện ích nhất định trả về các bộ hàng, chẳng hạn nhưGiải thích
. Ngoại trừthành
mệnh đề, tỷ lệ kèo bóng đá tối nay SQL giống như nó sẽ được viết bên ngoàiPL/PGSQL.
Lưu ý rằng cách giải thích này củaChọn
vớithành
hoàn toàn khác vớiPostgreSQL'thường xuyênChọn vào
tỷ lệ kèo bóng đá tối nay, trong đóthành
Target là một bảng mới được tạo. Nếu bạn muốn tạo một bảng từChọn
Kết quả bên trong APL/PGSQLchức năng, sử dụng cú phápTạo bảng ... như chọn
.
23003_23320
Thethành
mệnh đề có thể xuất hiện ở hầu hết mọi nơi trong tỷ lệ kèo bóng đá tối nay SQL. Theo thông thường, nó được viết ngay trước hoặc ngay sau danh sáchselect_expressions
trong AChọn
tỷ lệ kèo bóng đá tối nay hoặc ở cuối tỷ lệ kèo bóng đá tối nay cho các loại tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay phiên bản tương lai.
nếunghiêm ngặt
không được chỉ định trongthành
mệnh đề, sau đóTarget
sẽ được đặt thành hàng đầu tiên được trả về bởi tỷ lệ kèo bóng đá tối nay hoặc cho null nếu tỷ lệ kèo bóng đá tối nay trả về không có hàng. (Lưu ý rằngHàng đầu tiênkhông được xác định rõ 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ấy
Biến (xemPhần 43.5.5) Để xác định xem một 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ặt
Tùy chọn được chỉ định, tỷ lệ kèo bóng đá tối nay phải trả về chính xác một 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 một hàng). Bạn có thể sử dụng một khối ngoại lệ nếu bạn muốn bắt lỗi, ví dụ:
Bắt đầu Chọn * vào MYREC nghiêm ngặt từ EMP trong đó empname = myname; NGOẠI LỆ Khi no_data_found sau đó Tăng ngoại lệ 'nhân viên % không tìm thấy', myname; Khi quá_MANY_ROWS thì Tăng ngoại lệ 'Nhân viên % không phải là duy nhất', myname; KẾT THÚC;
Thực hiện thành công tỷ lệ kèo bóng đá tối nay vớinghiêm ngặt
luôn luôn đặttìm thấy
đến đúng.
choChèn
/Cập nhật
/Xóa
vớiTrở về
, PL/PGSQLBáo cáo lỗi cho nhiều hàng đã trả lại, ngay cả khinghiêm ngặt
khô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_params
được bật cho chức năng, sau đó khi có lỗi được ném vì tỷ lệ kèo bóng đá tối nay yêu cầu củanghiêm ngặt
không được đáp ứng,chi tiết
Một phần của thông báo lỗi sẽ bao gồm thông tin về các tham số được truyền cho tỷ lệ kèo bóng đá tối nay. Bạn có thể thay đổiprint_strict_params
Cài đặt cho tất cả tỷ lệ kèo bóng đá tối nay chức năng bằng cách cài đặtplpgsql.print_strict_params
, mặc dù chỉ tỷ lệ kèo bóng đá tối nay 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ụ:
26687_26951
Về thất bại, chức năng này có thể tạo ra một thông báo lỗi như
Lỗi: Truy vấn trả về không có hàng Chi tiết: tham số: username = 'nosuchuser' Bối cảnh: Hàm PL/PGSQL GET_USERID (Text) Dòng 6 tại câu tỷ lệ kèo bóng đá tối nay SQL
Thenghiêm ngặt
Tùy chọn phù hợp với hành vi của Oracle PL/SQL'sChọn vào
và các câu tỷ lệ kèo bóng đá tối nay liên quan.
Thông thường, bạn sẽ muốn tạo các tỷ lệ kèo bóng đá tối nay động bên trongPL/PGSQLCác chức năng, nghĩa là các tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay (như đã thảo luận trongPhần 43.11.2) sẽ không hoạt động trong tỷ lệ kèo bóng đá tối nay tình huống như vậy. Để xử lý loại vấn đề này,thực thi
Câu tỷ lệ kèo bóng đá tối nay được cung cấp:
thực thichuỗi tỷ lệ kèo bóng đá tối nay
[thành [nghiêm ngặt]Target
] [sử dụngBiểu thức
[, ...]];
WHEREchuỗi tỷ lệ kèo bóng đá tối nay
là một biểu thức mang lại một chuỗi (loạiText
) chứa tỷ lệ kèo bóng đá tối nay sẽ được thực thi. Tùy chọnTarget
là 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 bản ghi/hàng đơn giản, trong đó kết quả của tỷ lệ kèo bóng đá tối nay sẽ được lưu trữ. Tùy chọnSử dụng
Biểu thức cung cấp các giá trị được chèn vào tỷ lệ kèo bóng đá tối nay.
Không thay thếPL/PGSQLBiến được thực hiện trên chuỗi tỷ lệ kèo bóng đá tối nay đượ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 tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay được thực hiện thông quathực thi
. Thay vào đó, tỷ lệ kèo bóng đá tối nay luôn được lên kế hoạch mỗi khi câu tỷ lệ kèo bóng đá tối nay được chạy. Do đó, chuỗi tỷ lệ kèo bóng đá tối nay 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ành
mệnh đề Chỉ định nơi kết quả của tỷ lệ kèo bóng đá tối nay trả về tỷ lệ kèo bóng đá tối nay SQL phải được chỉ định. Nếu một biến 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 tỷ lệ kèo bóng đá tối nay; Nếu một biến bản ghi được cung cấp, 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ành
Biến (s). Nếu không có hàng nào được trả về, null được gán chothành
Biến (s). Nếu khôngthành
mệnh đề được chỉ định, kết quả tỷ lệ kèo bóng đá tối nay bị loại bỏ.
Nếunghiêm ngặt
30499_30584
Chuỗi tỷ lệ kèo bóng đá tối nay có thể sử dụng các giá trị tham số, được tham chiếu trong tỷ lệ kèo bóng đá tối nay là$ 1
, $ 2
, v.v ... Những biểu tượng này đề cập đến tỷ lệ kèo bóng đá tối nay giá trị được cung cấp trongSử dụng
mệ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 tỷ lệ kèo bóng đá tối nay 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;
Lưu ý rằng các ký hiệu tham số chỉ có thể được sử dụng cho các giá trị dữ liệu - nếu bạn muốn sử dụng tên bảng hoặc cột được xác định động, bạn phải chèn chúng vào chuỗi tỷ lệ kèo bóng đá tối nay theo văn bản. Ví dụ: nếu truy vấn trước cần được thực hiện theo bảng được chọn động, bạn có thể làm điều này:
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
31904_31976
Đị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;
(Ví dụ này phụ thuộc vào quy tắc SQL mà tỷ lệ kèo bóng đá tối nay chuỗi chữ được phân tách bởi một dòng mới được nối hoàn toàn.)
Một hạn chế khác trên các ký hiệu tham số là chúng chỉ hoạt động trong các tỷ lệ kèo bóng đá tối nay SQL có thể tối ưu hóa (Chọn
, 32449_32457
, Cập nhật
, Xóa
, Merge
và một số tỷ lệ kèo bóng đá tối nay nhất định chứa một trong số này). Trong các loại câu tỷ lệ kèo bóng đá tối nay khác (được gọi chung là các câu tỷ lệ kèo bóng đá tối nay 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 thi
Với chuỗi tỷ lệ kèo bóng đá tối nay hằng số đơn giản và một sốSử dụng
tham số, như trong ví dụ đầu tiên ở trên, có chức năng tương đương với chỉ ghi tỷ lệ kèo bóng đá tối nay trực tiếp trongPL/PGSQLvà cho phép thay thếPL/PGSQLtỷ lệ kèo bóng đá tối nay biến sẽ tự động xảy ra. Sự khác biệt quan trọng làthực thi
sẽ lập kế hoạch lại tỷ lệ kèo bóng đá tối nay 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/PGSQLCó thể tạo ra một kế hoạch chung và lưu trữ nó để sử dụng lại. Trong tỷ lệ kèo bóng đá tối nay tình huống mà kế hoạch tốt nhất phụ thuộc mạnh vào tỷ lệ kèo bóng đá tối nay giá trị tham số, có thể hữu ích khi sử dụngthực thi
Để đảm bảo tích cực rằng một kế hoạch chung không được chọn.
Chọn vào
Hiện không được hỗ trợ trongthực thi
; Thay vào đó, thực hiện một đơn giảnChọn
tỷ lệ kèo bóng đá tối nay và chỉ địnhthành
là một phần củathực thi
chính nó.
ThePL/PGSQL thực thi
Câu tỷ lệ kèo bóng đá tối nay không liên quan đếnthực thi
Câu tỷ lệ kèo bóng đá tối nay SQL được hỗ trợ bởiPOSTGRESQLMáy chủ. Máy chủthực thi
Câu tỷ lệ kèo bóng đá tối nay không thể được sử dụng trực tiếp trongPL/PGSQLHàm (và không cần thiết).
Ví dụ 43.1. Trích dẫn tỷ lệ kèo bóng đá tối nay giá trị trong tỷ lệ kèo bóng đá tối nay truy vấn động
Khi làm việc với các tỷ lệ kèo bóng đá tối nay độ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 43.12.1, có thể tiết kiệm cho bạn một số nỗ lực khi dịch mã nói thành một 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 tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay chức năng trích dẫn:
36002_36178
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, tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay được xây dựng phải được truyền quaquote_literal
. tỷ lệ kèo bóng đá tối nay chức năng này thực hiện tỷ lệ kèo bóng đá tối nay bước thích hợp để trả về văn bản đầu vào được đặt trong tỷ lệ kèo bóng đá tối nay 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 một đối số null. Trong ví dụ trên, nếuNewValue
hoặcKeyValue
là NULL, toàn bộ chuỗi truy vấn động sẽ trở thành null, dẫn đến lỗi từthực thi
. Bạn có thể tránh được vấn đề này bằng cách sử dụngQUOTE_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ụ,
37678_37856
Nếu bạn đang xử lý tỷ lệ kèo bóng đá tối nay giá trị có thể là NULL, bạn thường nên sử dụngQUOTE_NULLABLE
thay choquote_literal
.
38063_38184WHERE
mệnh đề
'trong đó khóa =' || quote_nullable (keyValue)
Sẽ không bao giờ thành công nếuKeyValue
là null, vì kết quả của việc sử dụng toán tử bình đẳng=
với một toán hạng null luôn luôn là null. Nếu bạn muốn null hoạt động như một 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ấyPostgresql:Để 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 bản 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ủaNewValue
tì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 bản 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 tỷ lệ kèo bóng đá tối nay 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.1). Ví dụ:
Định dạng thực thi ('Cập nhật TBL SET %I = %L' 'Trong đó key = %l', colname, newValue, keyValue);
%I
là tương đương vớiquote_ident
và%L
là tương đương vớiquote_nullable
. TheĐịnh dạng
Hàm có thể được sử dụng cùng vớiSử dụng
mệ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ì tỷ lệ kèo bóng đá tối nay biến được xử lý ở định dạng kiểu 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ề tỷ lệ kèo bóng đá tối nay động vàthực thi
Có thể nhìn thấy trongVí dụ 43.10, xây dựng và thực hiện ATạo chức năng
tỷ lệ kèo bóng đá tối nay xác định chức năng mới.
Có một số cách để xác định ảnh hưởng của tỷ lệ kèo bóng đá tối nay. Phương pháp đầu tiên là sử dụngNhận chẩn đoán
tỷ lệ kèo bóng đá tối nay, có biểu mẫu:
GET [hiện tại] Chẩn đoánBiến
= | : =mục
[, ...];
tỷ lệ kèo bóng đá tối nay này cho phép truy xuất các chỉ báo trạng thái hệ thống.hiện tại
là một từ tiếng ồn (nhưng xem thêmNhận chẩn đoán xếp chồng
inPhần 43.6.8.1). MỗiMục
là một 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ó). tỷ lệ kèo bóng đá tối nay mục trạng thái hiện có được hiển thị trongBảng 43.1. Đại tá-bình đẳng (: =
) có thể được sử dụng thay vì SQL-Standard=
Mã thông báo. Một ví dụ:
Nhận chẩn đoán integer_var = row_count;
43349_43400
tên | loại | Mô tả |
---|---|---|
ROW_COUNT |
Bigint |
Số lượng hàng được xử lý bởi gần đây nhấtSQLtỷ lệ kèo bóng đá tối nay |
pg_context |
Text |
dòng văn bản mô tả ngăn xếp cuộc gọi hiện tại (xemPhần 43.6.9) |
pg_routine_oid |
oid |
oid của hàm hiện tại |
Phương pháp thứ hai để xác định các hiệu ứng của tỷ lệ kèo bóng đá tối nay là kiểm tra biến đặc biệt có têntìm thấy
, thuộc loạiBoolean
. tìm thấy
Bắ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 tỷ lệ kèo bóng đá tối nay sau:
AChọn vào
Bộ câu tỷ lệ kèo bóng đá tối naytìm thấy
Đúng nếu một hàng được gán, sai nếu không có hàng được trả về.
Athực hiện
bộ câu tỷ lệ kèo bóng đá tối naytìm thấy
Đúng nếu nó tạo (và loại bỏ) một hoặc nhiều hàng, sai nếu không có hàng được sản xuất.
Cập nhật
, Chèn
, Xóa
vàHợp nhất
Câu tỷ lệ kèo bóng đá tối naytìm thấy
Đúng nếu ít nhất một hàng bị ảnh hưởng, sai nếu không có hàng bị ảnh hưởng.
AFetch
bộ câu tỷ lệ kèo bóng đá tối nayTìm thấy
Đúng nếu nó trả lại một hàng, sai nếu không có hàng được trả về.
ADi chuyển
Bộ câu tỷ lệ kèo bóng đá tối nayTìm thấy
46369_46436
Acho
hoặcforeach
bộ câu tỷ lệ kèo bóng đá tối naytìm thấy
Đúng nếu nó lặp lại một 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ấy
không được sửa đổi bởi câu tỷ lệ kèo bóng đá tối nay LOOP, mặc dù nó có thể được thay đổi bằng cách thực hiện các câu tỷ lệ kèo bóng đá tối nay khác trong phần thân vòng.
Truy vấn trả về
vàTruy vấn trả về
Câu tỷ lệ kèo bóng đá tối naytìm thấy
Đúng nếu truy vấn trả về ít nhất một hàng, sai nếu không có hàng được trả về.
khácPL/PGSQLCâu tỷ lệ kèo bóng đá tối nay không thay đổi trạng thái củatìm thấy
. Lưu ý cụ thể rằngthực thi
Thay đổi đầu ra củaNhận chẩn đoán
, nhưng không thay đổitìm thấy
.
tìm thấy
là một 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.
Đôi khi một câu tỷ lệ kèo bóng đá tối nay trình giữ chỗ không có gì hữu ích. Ví dụ, nó có thể chỉ ra rằng một cánh tay của chuỗi if/sau đó/khác được cố tình trống. Đối với mục đích này, hãy sử dụngnull
câu tỷ lệ kèo bóng đá tối nay:
null;
Ví dụ: hai đoạn mã sau đây là 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à một vấn đề của hương vị.
Trong PL/SQL của Oracle, danh sách câu tỷ lệ kèo bóng đá tối nay trống không được phép, và vì vậynull
Câu tỷ lệ kèo bóng đá tối nayYêu cầuĐối với tỷ lệ kèo bóng đá tối nay tình huống như thế này.PL/PGSQLcho phép bạn không viết gì, thay vào đó.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.