Postgresql 8.3.23 Tài liệu | ||||
---|---|---|---|---|
prev | Backward nhanh | Chương 38.PL/PGSQL - SQLNgôn ngữ thủ tục | Chuyển tiếp nhanh | Tiếp theo |
Trong phần này và các phần sau, chúng tôi mô tả tất cả Các loại câu cách đọc kèo bóng đá được hiểu rõ ràng bởiPL/PGSQL10958_11125Phần 38.5.2vàPhần 38.5.3.
gán giá trị cho APL/PGSQLtrường biến hoặc hàng/cách đọc kèo bóng đá ghi là Viết như:
Biến: =Biểu thức;
Như đã giải thích ở trên, biểu thức trong cách đọc kèo bóng đá tuyên bố như vậy là được đánh giá bằng phương tiện của SQLChọncách đọc kèo bóng đá đượ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.
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 hoặc biến có cách đọc kèo bóng đá kích thước/độ chính xác (nhưChar (20)), The Giá trị kết quả sẽ được chuyển đổi hoàn toàn bởiPL/PGSQLThông dịch viên sử dụng kết quả Chức năng đầu ra của loại và chức năng đầu vào của loại biến. Lưu ý rằng điều này có khả năng có khả năng dẫn đến 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 chức năng đầu vào.
ví dụ:
thuế: = Subtotal * 0,06; my_record.user_id: = 20;
Đối với bất kỳ cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trong aPL/PGSQLHàm Chỉ bằng cách viết cách đọc kèo bóng đá.
bất kỳPL/PGSQLTên biến xuất hiện trong văn bản cách đọc kèo bóng đá được thay thế bằng một tham số Biểu tượng, và sau đó giá trị hiện tại của biến được cung cấp là giá trị tham số tại thời gian chạy. Điều này giống hệt như xử lý được mô tả trước đó cho các biểu thức; Để biết chi tiết, xemPhần 38.10.1. Ví dụ, nếu bạn viết:
Khai báo văn cách đọc kèo bóng đá chính; Số nguyên Delta; BẮT ĐẦU ... Cập nhật myTab set val = val + delta trong đó id = key;
Văn bản cách đọc kèo bóng đá được nhìn thấy bởi động cơ SQL chính sẽ trông giống:
Cập nhật myTab set val = val + $ 1 trong đó id = $ 2;
Mặc dù bạn thường không phải suy nghĩ về điều này, nhưng đó là hữu ích khi biết điều đó khi bạn cần hiểu về lỗi cú pháp tin nhắn.
THẬN TRỌNG |
PL/PGSQLWill thay thế cho bất kỳ định danh nào phù hợp với một trong những các biến được khai báo của chức năng; Nó không đủ sáng Để biết liệu đó có phải là ý của bạn không! Vì vậy, nó là một ý tưởng tồi khi sử dụng một tên biến giống như bất kỳ bảng, cột hoặc tên chức năng mà bạn cần tham chiếu trong các cách đọc kèo bóng đá trong hàm. Để biết thêm Thảo luận xemPhần 38.10.1. |
Khi thực hiện cách đọc kèo bóng đá SQL theo cách này,PL/PGSQL14963_15146Phần 38.10.2.
Đôi khi rất hữu ích khi đánh giá cách đọc kèo bóng đá biểu thức hoặcChọnTruy vấn nhưng loại bỏ kết quả, ví dụ khi gọi cách đọc kèo bóng đá 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;
Điều này thực thiTruy vấnvà loại bỏ kết quả. ViếtTruy vấngiống như cách đọc kèo bóng đá bạn sẽ viết SQLChọncách đọc kèo bóng đá, nhưng thay thế Từ khóa ban đầuChọnvớithực hiện. PL/PGSQLBiến sẽ được thay thế vào truy vấn giống như cho các cách đọc kèo bóng đá 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 sản xuất ít nhất cách đọc kèo bóng đá hàng, hoặc sai nếu nó không tạo ra hàng (xemPhần 38.5.5).
Lưu ý:Người ta có thể mong đợi rằng viếtChọntrực tiếp sẽ thực hiện điều này kết quả, nhưng hiện tại cách đọc kèo bóng đá duy nhất được chấp nhận để làm điều đó làthực hiện. Một cách đọc kèo bóng đá sql có thể trả lại hàng, chẳng hạn nhưChọn, Will bị từ chối như cách đọc kèo bóng đá lỗi trừ khi nó cóthànhĐiều khoản như được thảo luận trong lần tiếp theo phần.
cách đọc kèo bóng đá ví dụ:
thực hiện created_mv ('cs_session_page_requests_mv', my_query);
Kết quả của cách đọc kèo bóng đá SQL mang lại một hàng duy nhất (có thể của nhiều cột) có thể được gán cho một biến bản ghi, Biến kiểu hàng hoặc danh sách các biến vô hướng. Điều này được thực hiện bởi Viết cách đọc kèo bóng đá SQL cơ sở và thêmthà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ề18080_18093thành [nghiêm ngặt18140_18144Target; Xóa ... Trả vềBiểu thứcthành [nghiêm ngặt]Target;
WHERETargetcó thể là một bản ghi Biến, biến hàng hoặc danh sách đơn giản được phân tách bằng dấu phẩy cách đọc kèo bóng đá biến và trường 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 cách đọc kèo bóng đá không trả lại hàng. Cái này hoạt động choChọn, Chèn/Cập nhật/XóavớiTrở về, và các cách đọc kèo bóng đá tiện ích Trả về kết quả tập hợp hàng (chẳng hạn nhưGiải thích). Ngoại trừthànhmệnh đề, cách đọc kèo bóng đá SQL giống như nó sẽ được viết bên ngoàiPL/PGSQL.
Tip:Lưu ý rằng cách đọc kèo bóng đá giải thích này củaChọnvớithànhIS Khá khác với19442_19454'thường xuyênChọn vàocách đọc kèo bóng đá, trong đóthànhTarget là cách đọc kèo bóng đá bảng mới được tạo. Nếu bạn muốn tạo cách đọc kèo bóng đá bảng từ cách đọc kèo bóng đáChọnKết quả bên trong APL/PGSQLHàm, sử dụng cú 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, truy vấn của cách đọc kèo bóng đá cột kết quả phải khớp chính xác với cấu trúc của mục tiêu như về số lượng và cách đọc kèo bóng đá loại dữ liệu, hoặc một lỗi thời gian chạy xảy ra. Khi a Biến ghi là mục tiêu, nó tự động cấu hình chính nó với loại hàng của cách đọc kèo bóng đá cột kết quả truy vấn.
Thethànhmệnh đề có thể xuất hiện gần như Bất cứ nơi nào trong cách đọc kèo bóng đá SQL. Theo thông thường nó được viết ngay trước hoặc ngay sau danh sáchselect_expressionstrong AChọncách đọc kèo bóng đá hoặc ở cuối cách đọc kèo bóng đá cho Các loại cách đọc kèo bóng đá khác. Bạn nên làm theo điều này quy ước trong trường hợpPL/PGSQLtrình phân tích cú pháp trở nên chặt chẽ hơn trong tương lai phiên cách đọc kèo bóng đá.
nếunghiêm ngặtkhông được chỉ định trongthànhmệnh đề, sau đóTargetsẽ được đặt thành hàng đầu tiên được trả về bởi truy vấn, hoặc vô hiệu nếu truy vấn trả về không hàng. (Lưu ý rằng"Hàng đầu tiên"IS không được xác định rõ trừ khi bạn đã sử dụngThứ tự QUA.) 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 38.5.5) Để xác định xem cách đọc kèo bóng đá 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 cách đọc kèo bóng đá hàng hoặc lỗi thời gian chạy sẽ được báo cáo,NO_DATA_FOUND(không hàng) hoặcTOUS_MANY_ROWS(nhiều hơn cách đọc kèo bóng đá hàng ngang). Bạn có thể sử dụng cách đọc kèo bóng đá 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 cách đọc kèo bóng đá vớinghiêm ngặtluôn luôn đặtTìm thấyto true.
choChèn/Cập nhật/XóavớiTrở về, PL/PGSQLBáo cáo lỗi cho nhiều hơn cách đọc kèo bóng đá hàng đã trả lại, ngay cả khinghiêm ngặtIS 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 cái nào Hàng bị ảnh hưởng nên được trả về.
Lưu ý:Thenghiêm ngặtTùy chọn khớp với hành vi của Oracle PL/SQL'sChọn vàovà các câu cách đọc kèo bóng đá liên quan.
23130_23221Phần 38.6.4.
Thông thường, bạn sẽ muốn tạo các cách đọc kèo bóng đá động bên trong của bạnPL/PGSQLHàm, đó là, các cách đọc kèo bóng đá sẽ liên quan đến các bảng khác nhau hoặc khác nhau Các loại dữ liệu mỗi khi chúng được thực thi.PL/PGSQL23798_23868Phần 38.10.2) sẽ không hoạt động trong cách đọc kèo bóng đá tình huống như vậy. Để xử lý điều này loại vấn đề,thực thiTuyên bố được cung cấp:
thực thichuỗi cách đọc kèo bóng đá[thành [nghiêm ngặt]Target ];
WHEREchuỗi cách đọc kèo bóng đálà cách đọc kèo bóng đá Biểu thức mang lại cách đọc kèo bóng đá chuỗi (loạiText) chứa cách đọc kèo bóng đá sẽ được thực thi vàTargetlà biến bản ghi, Biến hàng hoặc danh sách cách đọc kèo bóng đá biến đơn giản được phân tách bằng dấu phẩy và cách đọc kèo bóng đá trường ghi/hàng.
Không thay thếPL/PGSQL24712_24866
Ngoài ra, không có kế hoạch đệm cho các cách đọc kèo bóng đá được thực thi thông quathực thi. Thay vào đó, cách đọc kèo bóng đá là Chuẩn bị mỗi lần tuyên bố được chạy. Do đó, cách đọc kèo bóng đá Chuỗi 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 cách đọc kèo bóng đá trả về cách đọc kèo bóng đá SQL phải được gán. Nếu như 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 biến bản ghi là được sử dụng, nó sẽ tự cấu hình để phù hợp với cấu trúc kết quả tự động). Nếu nhiều hàng được trả lại, chỉ có hàng đầu tiên sẽ đượ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 là bị loại bỏ.
Nếu25880_25888Tùy chọn được đưa ra, cách đọc kèo bóng đá lỗi được báo cáo trừ khi truy vấn tạo chính xác cách đọc kèo bóng đá hàng ngang.
Chọn vàohiện tại không được hỗ trợ trongthực thi; thay vì, thực hiện cách đọc kèo bóng đá đơn giảnChọncách đọc kèo bóng đá và chỉ địnhthànhlà cách đọc kèo bóng đá phần củathực thichính nó.
Lưu ý:ThePL/PGSQL thực thiCâu cách đọc kèo bóng đá không liên quan đếntỷ lệ kèo bóng đá tối nay:SQL câu cách đọc kèo bóng đá được hỗ trợ bởiPostgreSQLMáy chủ. Máy chủthực thiTuyên bố không thể được sử dụng trực tiếp trongPL/PGSQLHàm (và không cần thiết).
Khi làm việc với các cách đọc kèo bóng đá động, bạn thường sẽ phải Xử lý thoát khỏi các trích dẫn đơn. Phương pháp được đề xuất cho 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 như Bạn có mã di sản không sử dụng báo giá đô la, xin vui lòng Tham khảo tổng quan trongPhần 38.11.127249_27344
cách đọc kèo bóng đá giá trị động sẽ được chèn vào truy vấn yêu cầu xử lý cẩn thận vì chúng có thể chứa cách đọc kèo bóng đá ký tự trích dẫn. Một ví dụ (điều này giả định rằng bạn đang sử dụng báo giá đô la cho toàn bộ chức năng, vì vậy trích dẫn Dấu không cần phải nhân đôi):
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. Cho an toàn,
cách đọc kèo bóng đá biểu thức chứa cách đọc kèo bóng đá định danh cột và bảng nên được
được truyền choquote_ident
.
Biểu thức chứa các giá trị nên là chuỗi theo nghĩa đen trong
cách đọc kèo bóng đá được xây dựng sẽ được chuyển sangquote_literal
. Cả hai đều thích hợp
cách đọc kèo bóng đá bước để trả về văn bản đầu vào được đặt trong đôi hoặc đơn
Báo giá tương ứng, với bất kỳ ký tự đặc biệt nhúng nào
thoát ra đúng cách.
28587_28723
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ỳ
Dollar-Roting Delimiter bạn có thể chọn. Vì vậy, để trích dẫn một cách an toàn
văn cách đọc kèo bóng đá không được biết trước, bạnphảiSử dụngquote_literal
.
Một ví dụ lớn hơn nhiều về cách đọc kèo bóng đá động vàthực thiCó thể nhìn thấy trongVí dụ 38-6,, mà xây dựng và thực hiện cách đọc kèo bóng đáTạo CHỨC NĂNGcách đọc kèo bóng đá xác định chức năng mới.
Có một số cách để xác định ảnh hưởng của cách đọc kèo bóng đá. Phương pháp đầu tiên là sử dụngNhận Chẩn đoáncách đọc kèo bóng đá, có biểu mẫu:
Nhận chẩn đoánBiến=Mục[, ...];
cách đọc kèo bóng đá này cho phép truy xuất các chỉ báo trạng thái hệ thống. MỗiMụclà một từ khóa Xác định giá trị trạng thái được gán cho được chỉ định Biến (phải là loại dữ liệu phù hợp để nhận Nó). cách đọc kèo bóng đá mục trạng thái hiện có làROW_COUNT, số lượng hàng được xử lý bởi cuối cùngSQLcách đọc kèo bóng đá được gửi xuống đếnSQLĐộng cơ vàresult_oid, oid của hàng cuối cùng được chèn bởi gần đây nhấtSQLcách đọc kèo bóng đá. Lưu ý rằngresult_oidchỉ hữu ích sauChèncách đọc kèo bóng đá vào bảng chứa OIDS.
cách đọc kèo bóng đá ví dụ:
Nhận chẩn đoán integer_var = row_count;
Phương pháp thứ hai để xác định các hiệu ứng của cách đọc kèo bóng đá 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 sau của Các câu cách đọc kèo bóng đá:
AChọn vàoBộ câu cách đọc kèo bóng đátìm thấyĐúng nếu cách đọc kèo bóng đá hàng được gán, Sai nếu không có hàng được trả về.
Athực hiệnBộ câu cách đọc kèo bóng đátìm thấyĐúng nếu nó sản xuất (và loại bỏ) cách đọc kèo bóng đá hoặc nhiều hàng, sai nếu không có hàng được sản xuất.
Cập nhật, ChènvàXóaCâu cách đọc kèo bóng đátìm thấy32091_32168
AFetchbộ câu cách đọc kèo bóng đátìm thấyĐúng nếu nó trả lại cách đọc kèo bóng đá hàng, Sai nếu không có hàng được trả về.
ADi chuyểnbộ câu cách đọc kèo bóng đáTìm thấy32480_32555
Achobộ câu cách đọc kèo bóng đátìm thấyĐúng nếu nó lặp lại cách đọc kèo bóng đá hoặc nhiều lần, khác sai. Điều này áp dụng cho cả ba biến thể củachocâu cách đọc kèo bóng đá (số nguyênchovòng lặp, tập hợp cách đọc kèo bóng đá ghichovòng lặp và cách đọc kèo bóng đá ghi độngchovòng lặp).tìm thấyđược đặt theo cách đọc kèo bóng đá này khichoVò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ởichoCâu cách đọc kèo bóng đá, mặc dù nó có thể được thay đổi bằng cách thực hiện các câu cách đọc kèo bóng đá khác trong vòng lặp thân hình.
tìm thấylà cách đọc kèo bóng đá biến cục bộ bên trong mỗiPL/PGSQLchức năng; bất kì cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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 một Nếu/sau đó/chuỗi khác được cố tình trống. Đối với mục đích này, sử dụng Thenullcâu cách đọc kèo bóng đá:
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ể hơn là cách đọc kèo bóng đá vấn đề của hương vị.
Lưu ý:34556_34633nullcách đọc kèo bóng đá nói làYêu cầuĐối với cách đọc kèo bóng đá tình huống như vậy Như thế này.PL/PGSQLCho phép bạn chỉ viết không có gì, thay vào đó.