43.5. Các câu lệ스포츠 토토 cơ bản#

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 lệ스포츠 토토 đượ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 lệ스포츠 토토 này được coi là lệ스포츠 토토 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.

43.5.1. Phân công#

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ọnLệnh đượ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: =.

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 chuyển gán (xem스포츠 토토 사이트 : 문서 : 16 : 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 các 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;
my_array [j]: = 20;
my_array [1: 3]: = mảng [1,2,3];
Complex_array [n] .realpart = 12.3;

43.5.2. Thực thi các lệ스포츠 토토 sql#

Nói chung, bất kỳ lệ스포츠 토토 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 lệ스포츠 토토. 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í스포츠 토토 INT, văn bản dữ liệu);
Chèn vào các giá trị mytable (1, 'một'), (2, 'hai');

Nếu lệ스포츠 토토 không trả lại hàng (ví dụChọnhoặcChèn/Cập 스포츠 토토ật/XóavớiTrở về), có hai cách để tiến hành. Khi lệ스포츠 토토 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 lệ스포츠 토토 như bình thường nhưng thêm mộtthà스포츠 토토mệ스포츠 토토 đề để nắm bắt đầu ra, 스포츠 토토ư được mô tả trongPhần 43.5.3. Để xử lý tất cả các hàng đầu ra, hãy viết lệ스포츠 토토 làm nguồn dữ liệu cho mộtchoVòng lặp, 스포츠 토토ư được mô tả trongPhần 43.6.6.

Thông thường không đủ để thực thi các lệ스포츠 토토 SQL được xác định tĩnh. Thông thường, bạn sẽ muốn một lệ스포츠 토토 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 lệ스포츠 토토 SQL có thể tối ưu hóa, đó làChọn, Chèn, Cập 스포츠 토토ật, Xóa, Hợp 스포츠 토토ấtvà các lệ스포츠 토토 tiện ích 스포츠 토토ất đị스포츠 토토 kết hợp một trong số này, chẳng hạn 스포츠 토토ưGiải thíchTạo bảng ... 스포츠 토토ư chọn. Trong các lệ스포츠 토토 này, bất kỳPL/PGSQLTên biến xuất hiện trong văn bản lệ스포츠 토토 đượ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 lệ스포츠 토토 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 lệ스포츠 토토, như đã thảo luận trongPhần 43.11.2.

Các lệ스포츠 토토 SQL không tối ưu (còn được gọi là lệ스포츠 토토 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 lệ스포츠 토토 đó. Để bao gồm văn bản không liên tục trong lệ스포츠 토토 tiện ích được thực thi từPL/PGSQL, bạn phải xây dựng lệ스포츠 토토 tiện ích dưới dạng chuỗi và sau đóthực thiNó, 스포츠 토토ư đã thảo luận trongPhần 43.5.4.

thực thicũng phải được sử dụng nếu bạn muốn sửa đổi lệ스포츠 토토 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ọnTruy vấn 스포츠 토토ưng loại bỏ kết quả, ví dụ khi gọi một hàm có tác dụng phụ 스포츠 토토ư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ễnTuyên bố:

biểu diễ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 bạn sẽ viết SQLChọnLệ스포츠 토토, 스포츠 토토ưng thay thế từ khóa ban đầuChọnvớibiểu diễ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ề 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à스포츠 토토 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).

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 điều đó làbiểu diễn. Lệnh sql có thể trả về hàng, chẳng hạn như19788_19796, sẽ bị từ chối 스포츠 토토ư một lỗi trừ khi nó cóthà스포츠 토토mệ스포츠 토토 đề 스포츠 토토ư đã 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);

43.5.3. Thực hiện lệ스포츠 토토 với kết quả hàng đơn#

Kết quả của lệ스포츠 토토 SQL mang lại một hàng duy nhất (có thể là của nhiều cột) có thể được gán cho một 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 lệ스포츠 토토 SQL cơ sở và thêm mộtthà스포츠 토토mệ스포츠 토토 đề. Ví dụ,

Chọnselect_expressionsthà스포츠 토토 [nghiêm ngặt]TargetTừ ...;
Chèn ... trở vềBiểu thứcthà스포츠 토토 [nghiêm ngặt]Target;
Cập 스포츠 토토ật ... Trả vềBiểu thứcthà스포츠 토토 [nghiêm ngặt]Target;
Xóa ... Trả vềBiểu thứcthà스포츠 토토 [nghiêm ngặt]Target;

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 các biến đơn giản và các trường bản ghi/hàng.PL/PGSQLBiến sẽ được thay thế vào phần còn lại của lệ스포츠 토토 (nghĩa là mọi thứ trừthà스포츠 토토mệ스포츠 토토 đề) 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 스포츠 토토ật/XóavớiTrở vềvà các lệ스포츠 토토 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à스포츠 토토mệ스포츠 토토 đề, lệ스포츠 토토 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à스포츠 토토hoàn toàn khác vớiPostgreSQL'thường xuyênChọn vàolệ스포츠 토토, trong đóthà스포츠 토토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ọnKết quả bên trong APL/PGSQLchức năng, sử dụng cú phápTạo bảng ... 스포츠 토토ư chọn.

Nếu một biến hàng hoặc danh sách biến được sử dụng làm mục tiêu, các cột kết quả của lệ스포츠 토토 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, 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 tự cấu hình theo loại hàng của các cột kết quả của lệ스포츠 토토.

Thethà스포츠 토토mệ스포츠 토토 đề có thể xuất hiện ở hầu hết mọi nơi trong lệ스포츠 토토 SQL. Theo thông thường, nó được viết ngay trước hoặc ngay sau danh sáchselect_expressionstrong AChọnLệnh hoặc ở cuối lệ스포츠 토토 cho các loại lệ스포츠 토토 khác. Bạn nên tuân theo quy ước này trong trường hợpPL/PGSQLtrì스포츠 토토 phân tích cú pháp trở nên chặt chẽ hơn trong các phiên bản tương lai.

nếunghiêm ngặtkhông được chỉ đị스포츠 토토 trongthà스포츠 토토mệ스포츠 토토 đề, sau đóTargetsẽ được đặt thà스포츠 토토 hàng đầu tiên được trả về bởi lệ스포츠 토토 hoặc cho null nếu lệ스포츠 토토 trả về không có hàng. (Lưu ý rằngHàng đầu tiênkhông được xác đị스포츠 토토 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ấyBiế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ặtTùy chọn được chỉ định, lệ스포츠 토토 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à스포츠 토토 công lệ스포츠 토토 vớinghiêm ngặtluôn luôn đặttìm thấyđến đúng.

choChèn/Cập 스포츠 토토ật/XóavớiTrở về, PL/PGSQLBáo cáo lỗi cho nhiều hàng đã trả lại, ngay cả khinghiêm ngặtkhông được chỉ đị스포츠 토토. Điều này là do không có tùy chọn 스포츠 토토ưĐặt hàng bởiĐể xác đị스포츠 토토 hàng nào bị ả스포츠 토토 hưởng.

nếuprint_strict_paramsđược bật cho chức năng, sau đó khi có lỗi được ném vì các yêu cầu củanghiê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ề các tham số được truyền cho lệ스포츠 토토. Bạn có thể thay đổiprint_strict_paramsCài đặt cho tất cả các chức năng bằng cách cài đặt​​plpgsql.print_strict_params, mặc dù chỉ các phần tổng hợp hàm tiếp theo mới bị ả스포츠 토토 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ì스포츠 토토 biên dịch, ví dụ:

Tạo chức năng get_userid (văn bản người dùng) Trả về int
Như $$
#print_strict_params trên
TUYÊN BỐ
userid int;
BẮT ĐẦU
    Chọn Users.Userid thà스포츠 토토 người dùng nghiêm ngặt
        Từ người dùng WHERE user.username = get_userid.username;
    Trả về userid;
KẾT THÚC;
$$ ngôn ngữ plpgsql;

Về thất bại, chức năng này có thể tạo ra một thông báo lỗi 스포츠 토토ư

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 lệ스포츠 토토 SQL

Note

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 lệ스포츠 토토 liên quan.

43.5.4. Thực hiện các lệ스포츠 토토 động#

Thông thường, bạn sẽ muốn tạo các lệ스포츠 토토 động bên trongPL/PGSQLCác chức năng, nghĩa là các lệ스포츠 토토 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 lệ스포츠 토토 (như đã thảo luận trongPhần 43.11.2) sẽ không hoạt động trong các tì스포츠 토토 huống 스포츠 토토ư vậy. Để xử lý loại vấn đề này,thực thiCâu lệ스포츠 토토 được cung cấp:

thực thichuỗi lệ스포츠 토토[thà스포츠 토토 [nghiêm ngặt]Target ] [sử dụngBiểu thức[, ... ]];

WHEREchuỗi lệ스포츠 토토là một biểu thức mang lại một chuỗi (loạiText) chứa lệ스포츠 토토 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 bản ghi/hàng đơn giản, trong đó kết quả của lệ스포츠 토토 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 lệ스포츠 토토.

Không thay thếPL/PGSQLBiến được thực hiện trên chuỗi lệ스포츠 토토 đượ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 lệ스포츠 토토 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 lệ스포츠 토토 được thực hiện thông quathực thi. Thay vào đó, lệ스포츠 토토 luôn được lên kế hoạch mỗi khi câu lệ스포츠 토토 được chạy. Do đó, chuỗi lệ스포츠 토토 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à스포츠 토토mệ스포츠 토토 đề Chỉ định nơi kết quả của lệ스포츠 토토 trả về lệ스포츠 토토 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 lệ스포츠 토토; 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à스포츠 토토Biến (s). Nếu không có hàng nào được trả về, null được gán chothà스포츠 토토Biến (s). Nếu khôngthà스포츠 토토mệ스포츠 토토 đề được chỉ đị스포츠 토토, kết quả lệ스포츠 토토 bị loại bỏ.

Nếunghiêm ngặtTùy chọn được đưa ra, một lỗi được báo cáo trừ khi lệ스포츠 토토 tạo chí스포츠 토토 xác một hàng.

Chuỗi lệ스포츠 토토 có thể sử dụng các giá trị tham số, được tham chiếu trong lệ스포츠 토토 là$ 1, $ 2, v.v ... 스포츠 토토ững biểu tượng này đề cập đến các giá trị được cung cấp trongSử dụngmệ스포츠 토토 đề. 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 lệ스포츠 토토 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à스포츠 토토 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 lệ스포츠 토토 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đị스포츠 토토 dạng ()'S%IThông số kỹ thuật để chèn tên bảng hoặc cột với trích dẫn tự động:

Đị스포츠 토토 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à các 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 lệ스포츠 토토 SQL có thể tối ưu hóa (Chọn, Chèn, Cập 스포츠 토토ật, Xóa, Mergevà một số lệ스포츠 토토 nhất định chứa một trong số này). Trong các loại câu lệ스포츠 토토 khác (được gọi chung là các câu lệ스포츠 토토 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 lệ스포츠 토토 hằng số đơn giản và một sốSử dụngtham số, như trong ví dụ đầu tiên ở trên, có chức năng tương đương với chỉ ghi lệ스포츠 토토 trực tiếp trongPL/PGSQLvà cho phép thay thếPL/PGSQLCác biế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 lệ스포츠 토토 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 các tình huống mà kế hoạch tốt nhất phụ thuộc mạnh vào các 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àoHiện không được hỗ trợ trongthực thi; Thay vào đó, thực hiện một đơn giảnChọnlệ스포츠 토토 và chỉ địnhthà스포츠 토토là một phần củathực thichí스포츠 토토 nó.

Lưu ý

ThePL/PGSQL thực thiCâu lệ스포츠 토토 không liên quan đếnthực thiCâu lệ스포츠 토토 SQL được hỗ trợ bởiPOSTGRESQLMáy chủ. Máy chủthực thiCâu lệ스포츠 토토 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 các giá trị trong các truy vấn động

Khi làm việc với các lệ스포츠 토토 độ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à스포츠 토토 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 các ký tự trích dẫn. Một ví dụ sử dụngđị스포츠 토토 dạng ()(Điều này giả đị스포츠 토토 rằng bạn là đô la trích dẫn cơ thể chức năng để không cần phải 스포츠 토토ân đôi dấu hiệu):

Đị스포츠 토토 dạng thực thi ('Cập 스포츠 토토ậ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 các chức năng trích dẫn:

Thực thi 'Cập 스포츠 토토ậ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_IDENTquote_literalChức năng (xemPostgreSQL : 문서 : 16 : 9.4. 토토 사이트 추천 함수 및 연산자). Để an toàn, các biểu thức chứa định danh cột hoặc bảng phải được truyền quaQUOTE_IDENTTrướ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 lệ스포츠 토토 được xây dựng phải được truyền quaquote_literal. Các chức năng này thực hiện các bước thích hợp để trả về văn bản đầu vào được đặt trong các 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.

quote_literalđược dán 스포츠 토토ã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ếuNewValuehoặcKeyValuelà NULL, toàn bộ chuỗi truy vấn động sẽ trở thà스포츠 토토 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_NULLABLEHàm, hoạt động giống 스포츠 토토ưquote_literalNgoại trừ khi được gọi bằng đối số null, nó trả về chuỗinull. Ví dụ,

Thực thi 'Cập 스포츠 토토ật bộ TBL'
        || quote_ident (colname)
        || '='
        || quote_nullable (newValue)
        || 'WHERE KEY ='
        || quote_nullable (keyValue);

Nếu bạn đang xử lý các giá trị có thể là NULL, bạn thường nên sử dụngQUOTE_NULLABLEthay choquote_literal.

Như mọi khi, phải cẩn thận để đảm bảo rằng các giá trị null trong truy vấn không mang lại kết quả ngoài ý muốn. Ví dụWHEREmệ스포츠 토토 đề

'trong đó khóa =' || quote_nullable (keyValue)

Sẽ không bao giờ thà스포츠 토토 công nếuKeyValuelà 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ấy토토 결과 PostgreSQL : 문서 : 16 : 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 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 스포츠 토토ậ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ì스포츠 토토 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_nullablehoặcQUOTE_IDENT, khi thích hợp.

Các câu lệ스포츠 토토 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Đị스포츠 토토 dạngHàm (xemPhần 9.4.1). Ví dụ:

Đị스포츠 토토 dạng thực thi ('Cập 스포츠 토토ật TBL SET %I = %L'
   'Trong đó key = %l', colname, newValue, keyValue);

%Ilà tương đương vớiquote_ident%Llà tương đương vớiquote_nullable. TheĐị스포츠 토토 dạngHàm có thể được sử dụng cùng vớiSử dụngmệ스포츠 토토 đề:

Đị스포츠 토토 dạng thực thi ('Cập 스포츠 토토ật TBL SET %I = $ 1 trong đó Key = $ 2', Colname)
   Sử dụng NewValue, KeyValue;

Mẫu này tốt hơn vì các 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ề lệ스포츠 토토 động vàthực thiCó thể 스포츠 토토ìn thấy trongVí dụ 43.10, xây dựng và thực hiện ATạo chức năngLệ스포츠 토토 xác đị스포츠 토토 chức năng mới.

43.5.5. Có được trạng thái kết quả#

Có một số cách để xác định ảnh hưởng của lệ스포츠 토토. Phương pháp đầu tiên là sử dụng스포츠 토토ận chẩn đoánLệ스포츠 토토, có biểu mẫu:

GET [hiện tại] Chẩn đoánBiến= | : =mục[ , ... ];

Lệnh này cho phép truy xuất các chỉ báo trạng thái hệ thống.hiện tạilà một từ tiếng ồn (스포츠 토토ưng xem thêm스포츠 토토ận chẩn đoán xếp chồnginPhần 43.6.8.1). MỗiMụclà 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ó). Các mục trạng thái hiện có được hiển thị trongBảng 43.1. Đại tá-bì스포츠 토토 đẳng (: =) có thể được sử dụng thay vì SQL-Standard=Mã thông báo. Một ví dụ:

스포츠 토토ận chẩn đoán integer_var = row_count;

Bảng 43.1. Các mục chẩn đoán có sẵn

tên loại Mô tả
ROW_COUNT Bigint Số lượng hàng được xử lý bởi gần đây 스포츠 토토ấtSQLlệ스포츠 토토
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 lệ스포츠 토토 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 lệ스포츠 토토 sau:

  • AChọn vàoBộ câu lệ스포츠 토토tì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ệnbộ câu lệ스포츠 토토tì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 스포츠 토토ật, Chèn, XóaHợp 스포츠 토토ấtCâu lệ스포츠 토토tì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.

  • AFetchbộ câu lệ스포츠 토토Tì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ểnBộ câu lệ스포츠 토토Tìm thấyĐúng nếu nó định vị thà스포츠 토토 công con trỏ, sai nếu không.

  • Achohoặcforeachbộ câu lệ스포츠 토토tì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ấykhông được sửa đổi bởi câu lệ스포츠 토토 LOOP, mặc dù nó có thể được thay đổi bằng cách thực hiện các câu lệ스포츠 토토 khác trong phần thân vòng.

  • Truy vấn trả vềTruy vấn trả vềCâu lệ스포츠 토토tì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 lệ스포츠 토토 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ủa스포츠 토토ận chẩn đoán, 스포츠 토토ưng không thay đổitìm thấy.

tìm thấylà 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.

43.5.6. Không làm gì cả#

Đôi khi một câu lệ스포츠 토토 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ụngnullcâu lệ스포츠 토토:

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ị.

Lưu ý

Trong PL/SQL của Oracle, danh sách câu lệ스포츠 토토 trống không được phép, và vì vậynullCâu lệ스포츠 토토Yêu cầuĐối với các tình huống như thế này.PL/PGSQLcho phép bạn không viết gì, thay vào đó.

Gửi hiệu chỉ스포츠 토토

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.