Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản kèo bóng đá euro: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
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
9747_98039916_9925Phiên bản hoặc một kèo bóng đá euro các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

41.12. Mẹo phát triển kèo bóng đá euroPL/PGSQL #

Một cách tốt để phát triển kèo bóng đá euroPL/PGSQLlà sử dụng trình soạn thảo văn bản mà bạn chọn để tạo các chức năng của bạn và kèo bóng đá euro một cửa sổ khác, hãy sử dụngPSQLĐể tải và kiểm tra các chức năng đó. Nếu bạn đang làm theo cách này, bạn nên viết chức năng bằng cách sử dụngTạo hoặc thay thế chức năng. Bằng cách đó, bạn chỉ có thể tải lại tệp để cập nhật định nghĩa chức năng. Ví dụ:

Tạo hoặc thay thế chức năng testfunc (số nguyên) Trả về số nguyên dưới dạng $$
          Hẻo lánh
$$ ngôn ngữ plpgsql;

kèo bóng đá euro khi chạyPSQL, bạn có thể tải hoặc tải lại tệp định nghĩa chức năng đó bằng:

\ I fileName.sql

Và sau đó kèo bóng đá euro hành các lệnh SQL ngay lập tức để kiểm tra chức năng.

Một cách tốt để phát triển kèo bóng đá euroPL/PGSQLcó công cụ truy cập cơ sở dữ liệu GUI tạo điều kiện kèo bóng đá euro bằng ngôn ngữ thủ tục. Một ví dụ về một công cụ như vậy làPGADMIN, mặc dù những người khác tồn tại. Các công cụ này thường cung cấp các tính năng thuận tiện như thoát khỏi các trích dẫn đơn và giúp dễ dàng tạo lại và gỡ lỗi các chức năng.

41.12.1. Xử lý dấu ngoặc kép#

Mã của APL/PGSQLHàm được chỉ định kèo bóng đá euroTạo chức năngnhư một chuỗi theo nghĩa đen. Nếu bạn viết chuỗi theo nghĩa đen theo cách thông thường với các trích dẫn duy nhất xung quanh, thì bất kỳ trích dẫn đơn nào bên kèo bóng đá euro cơ thể chức năng phải được nhân đôi; Tương tự như vậy, bất kỳ dấu gạch chéo ngược nào cũng phải được nhân đôi (giả sử cú pháp chuỗi thoát được sử dụng). Báo giá nhân đôi là tốt nhất tẻ nhạt, và kèo bóng đá euro các trường hợp phức tạp hơn, mã có thể trở nên hết sức không thể hiểu được, bởi vì bạn có thể dễ dàng thấy mình cần một nửa tá hoặc nhiều dấu ngoặc kép liền kề hơn. Thay vào đó bạn nên viết cơ thể chức năng dưới dạngđược trích xuất DollarChuỗi theo nghĩa đen (xemPhần 4.1.2.4). kèo bóng đá euro cách tiếp cận chiết xuất bằng đô la, bạn không bao giờ tăng gấp đôi bất kỳ dấu nào, mà thay vào đó hãy cẩn thận chọn một dấu phân cách chạy bằng đô la khác cho mỗi cấp độ làm tổ bạn cần. Ví dụ: bạn có thể viếtTạo chức năngLệnh như:

Tạo hoặc thay thế chức năng testfunc (số nguyên) Trả về số nguyên là $ Proc $
          Hẻo lánh
$ Proc $ ngôn ngữ plpgsql;

kèo bóng đá euro này, bạn có thể sử dụng các dấu ngoặc kép cho các chuỗi theo nghĩa đen đơn giản kèo bóng đá euro các lệnh SQL và$$Để phân định các đoạn của các lệnh SQL mà bạn đang lắp ráp thành chuỗi. Nếu bạn cần trích dẫn văn bản bao gồm$$, bạn có thể sử dụng$ q $, v.v.

Biểu đồ sau đây cho thấy những gì bạn phải làm khi viết dấu ngoặc kép mà không có trích dẫn đô la. Nó có thể hữu ích khi dịch mã trích dẫn tiền đô la thành một cái gì đó dễ hiểu hơn.

1 dấu ngoặc kép #

Để bắt đầu và kết thúc cơ thể chức năng, ví dụ:

Tạo hàm foo () trả về số nguyên là '
          Hẻo lánh
'Ngôn ngữ plpgsql;

Bất cứ nơi nào kèo bóng đá euro cơ thể chức năng được trích xuất đơn, dấu ngoặc képphảixuất hiện theo cặp.

2 dấu ngoặc kép #

Đối với các chuỗi chữ bên kèo bóng đá euro cơ thể chức năng, ví dụ:

a_output: = '' blah '';
Chọn * Từ người dùng kèo bóng đá euro đó f_name = '' foobar '';

kèo bóng đá euro cách tiếp cận trích xuất đô la, bạn chỉ viết:

a_output: = 'blah';
Chọn * Từ người dùng kèo bóng đá euro đó f_name = 'foobar';

Đó chính xác là những gìPL/PGSQLtrình phân tích cú pháp sẽ thấy kèo bóng đá euro cả hai trường hợp.

4 dấu ngoặc kép #

16503_16602

a_output: = a_output || '' Và tên như '' '' foobar '' '' và xyz ''

Giá trị thực sự được thêm vàoa_outputSẽ là:và tên như 'foobar' và xyz.

kèo bóng đá euro cách tiếp cận trích xuất đô la, bạn đã viết:

a_output: = a_output || $$ và tên như 'foobar' và xyz $$

17055_17129$$.

6 dấu ngoặc kép #

Khi một dấu ngoặc kép kèo bóng đá euro chuỗi bên kèo bóng đá euro thân hàm liền kề với phần cuối của hằng số chuỗi đó, ví dụ:

a_output: = a_output || '' Và tên như '' '' foobar '' '' '' '

Giá trị được thêm vàoa_outputSau đó sẽ là:và tên như 'foobar'.

kèo bóng đá euro cách tiếp cận trích xuất đô la, điều này trở thành:

a_output: = a_output || $$ và tên như 'foobar' $$
10 dấu ngoặc kép #

Khi bạn muốn hai dấu ngoặc đơn kèo bóng đá euro một hằng số chuỗi (chiếm 8 dấu ngoặc kép) và điều này liền kề với kết thúc của hằng số chuỗi đó (2 nữa). Bạn có thể sẽ chỉ cần điều đó nếu bạn đang viết một hàm tạo ra các chức năng khác, như kèo bóng đá euroVí dụ 41.10. Ví dụ:

a_output: = a_output || '' Nếu v_ '' ||
    Giới thiệu_KEYS.KIND || '' giống ''''''''''
    || Giới thiệu_KEYS.KEY_STRING || '' '' '' '' '' ''
    Sau đó trả về '' '' '' || Giới thiệu_KEYS.REFERRER_TYPE
    || '' '' '' '; kết thúc nếu; '';

Giá trị củaa_outputSau đó sẽ là:

Nếu v _... như '' ... '' sau đó trả lại '' ... ''; kết thúc nếu;

kèo bóng đá euro cách tiếp cận trích xuất đô la, điều này trở thành:

a_output: = a_output || $$ nếu v _ $$ || Giới thiệu_KEYS.KIND || $$ như '$$
    || Giới thiệu_KEYS.KEY_STRING || $$ '
    sau đó trả lại '$$ | | Giới thiệu_KEYS.REFERRER_TYPE
    || $$ '; kết thúc nếu; $$;

nơi chúng ta giả sử chúng ta chỉ cần đặt các dấu ngoặc kép vàoa_output, bởi vì nó sẽ được truy xuất lại trước khi sử dụng.

41.12.2. Kiểm tra thời gian biên dịch bổ sung và thời gian chạy#

Để hỗ trợ người dùng tìm kiếm các trường hợp đơn giản nhưng phổ biến trước khi chúng gây hại,PL/PGSQLcung cấp bổ sungKiểm tra. Khi được bật, tùy thuộc vào cấu hình, chúng có thể được sử dụng để kèo bóng đá euro raCẢNH BÁOhoặc mộtERRORkèo bóng đá euro quá trình tổng hợp một hàm. Một chức năng đã nhận được mộtCảnh báoCó thể được thực thi mà không cần tạo thêm thông điệp, vì vậy bạn nên kiểm tra kèo bóng đá euro một môi trường phát triển riêng biệt.

Cài đặtplpgsql.extra_warningshoặcplpgsql.extra_errors, khi thích hợp, với"Tất cả"được khuyến khích kèo bóng đá euro môi trường phát triển và/hoặc thử nghiệm.

Các kiểm tra bổ sung này được bật thông qua các biến cấu hìnhplpgsql.extra_warningscho cảnh báo vàplpgsql.extra_errorsĐối với lỗi. Cả hai đều có thể được đặt thành danh sách kiểm tra được phân tách bằng dấu phẩy,"Không"hoặc"Tất cả". Mặc định là"Không". Hiện tại danh sách các séc có sẵn bao gồm:

Shadowed_variables #

Kiểm tra xem một tuyên bố có kèo bóng đá euro không một biến được xác định trước đó không.

strict_multi_assignment #

Một sốPL/PGSQLCác lệnh cho phép gán các giá trị cho nhiều biến tại một thời điểm, chẳng hạn nhưChọn vào. Thông thường, số lượng biến mục tiêu và số lượng biến nguồn sẽ khớp, mặc dùPL/PGSQLsẽ sử dụngnullĐối với các giá trị bị thiếu và các biến bổ sung bị bỏ qua. Kích hoạt kiểm tra này sẽ gây raPL/PGSQLđể ném Acảnh báohoặcERRORBất cứ khi nào số lượng biến mục tiêu và số lượng biến nguồn là khác nhau.

TOUS_MANY_ROWS #

Kích hoạt kiểm tra này sẽ gây raPL/PGSQLĐể kiểm tra xem một truy vấn đã cho có trả về nhiều hơn một hàng khithànhmệnh đề được sử dụng. Như mộtthànhCâu lệnh sẽ chỉ sử dụng một hàng, có một truy vấn trả về nhiều hàng nói chung là không hiệu quả và/hoặc không phải

Ví dụ sau đây cho thấy hiệu ứng củaplpgsql.extra_warningsĐặt thànhShadowed_variables:

23212_23477

Ví dụ dưới đây cho thấy các hiệu ứng của cài đặtplpgsql.extra_warningsđếnstrict_multi_assignment:

23681_24380