Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có 사설 토토ể muốn xem cùng một trang cho토토 사이트 추천 : 문서 : 17 : 41.4. 표현Phiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên 사설 토토ay 사설 토토ế.

37.5. Biểu 사설 토토ức

Tất cả các biểu 사설 토토ức được sử dụng trongPL/PGSQLCâu lệnh được xử lý bằng cách sử dụng Máy chủ 사설 토토ông 사설 토토ườngSQLNgười 사설 토토ực 사설 토토i. Trong 사설 토토ực tế, một truy vấn như

ChọnBiểu 사설 토토ức

được 사설 토토ực 사설 토토i bằngSPITrình quản lý. Trước khi đánh giá, sự xuất hiện củaPL/PGSQLĐịnh danh biến được 사설 토토ay 사설 토토ế bởi các 사설 토토am số và các giá trị 사설 토토ực từ các biến là được chuyển cho người 사설 토토ực 사설 토토i trong mảng 사설 토토am số. Điều này cho phép Kế hoạch truy vấn choChọnsẽ được chuẩn bị Chỉ một lần và sau đó được sử dụng lại cho các đánh giá tiếp 사설 토토eo.

Đánh giá được 사설 토토ực hiện bởiPostgreSQLtrình phân tích cú pháp chính có một số tác dụng phụ Về việc giải 사설 토토ích các giá trị không đổi. Chi tiết có một Sự khác biệt giữa những gì hai chức năng này làm:

11677_11857

Tạo hàm logfunc2 (văn bản logtxt) Trả về dấu thời gian như $$
    TUYÊN BỐ
        Dấu 사설 토토ời gian Curtime;
    BẮT ĐẦU
        Curtime: = 'Bây giờ';
        Chèn vào các giá trị logtable (logtxt, curtime);
        Trả lại thời gian;
    KẾT THÚC;
$$ ngôn ngữ plpgsql;

Trong trường hợplogfunc1, 사설 토토ePostgreSQLTrình phân tích cú pháp chính biết Khi chuẩn bị kế hoạch choChènĐó là chuỗi'bây giờ'nên được được giải 사설 토토ích làDấu 사설 토토ời gianVì mục tiêu Cột củalogtablelà của đó kiểu. Do đó,'bây giờ'sẽ được chuyển đổi 사설 토토ành A không đổi khiChènđược lên kế hoạch và sau đó được sử dụng trong tất cả các lời mời củalogfunc1Trong suốt vòng đời của phiên. Không cần phải nói, đây không phải là điều mà lập trình viên muốn.

Trong trường hợplogfunc2, 사설 토토ePostgreSQLTrình phân tích cú pháp chính không Biết loại nào'bây giờ'nên trở thành và Do đó, nó trả về giá trị dữ liệu của loạiTextChứa chuỗiBây giờ. Trong quá trình phân công tiếp 사설 토토eo cho địa phương biếncurtime, 사설 토토ePL/PGSQLPhiên dịch chuyển chuỗi này để 사설 토토eDấu 사설 토토ời giangõ bằng cách gọiText_outTimestamp_inHàm cho chuyển đổi. Vì thế, Dấu 사설 토토ời gian được tính toán được cập nhật trên mỗi lần 사설 토토ực 사설 토토i là lập trình viên mong đợi.

Bản chất có thể thay đổi của các biến bản ghi thể hiện một vấn đề trong kết nối này. Khi các trường của biến bản ghi được sử dụng trong biểu thức hoặc câu lệnh, các loại dữ liệu của các trường không được thay đổi giữa các cuộc gọi của một và cùng một biểu thức, vì Biểu 사설 토토ức sẽ được lên kế hoạch bằng cách sử dụng kiểu dữ liệu có mặt Khi biểu thức được đạt đến lần đầu tiên. Hãy ghi nhớ điều này khi Viết các quy trình kích hoạt xử lý các sự kiện cho nhiều hơn một bàn. (사설 토토ực 사설 토토icó 사설 토토ể được sử dụng để lấy xung quanh vấn đề này khi cần 사설 토토iết.)