PERFORM là lệnh plpgsql được sử dụng để gọi các hàm void. PLpgSQL cẩn thận về SELECT vô dụng câu lệnh - SELECT không có INTO mệnh đề không được phép. Nhưng đôi khi bạn cần gọi một hàm và bạn không cần lưu trữ kết quả (hoặc các hàm không có kết quả). Hàm trong SQL được gọi bằng SELECT bản tường trình. Nhưng không thể thực hiện được trong PLpgSQL - vì vậy lệnh PERFORM đã được giới thiệu.
CREATE OR REPLACE FUNCTION foo()
RETURNS void AS $$
BEGIN
RAISE NOTICE 'Hello from void function';
END;
$$ LANGUAGE plpgsql;
-- direct call from SQL
SELECT foo();
-- in PLpgSQL
DO $$
BEGIN
SELECT foo(); -- is not allowed
PERFORM foo(); -- is ok
END;
$$;
PERFORM câu lệnh thực thi một tham số và quên kết quả.
Ví dụ của bạn perform 'create table foo as (select 1)';
giống như SELECT 'create table foo as (select 1)' . Nó trả về một chuỗi "tạo bảng foo dưới dạng (chọn 1)" và chuỗi này bị hủy.
EXECUTE câu lệnh đánh giá một biểu thức để lấy chuỗi. Trong bước tiếp theo, chuỗi này được thực thi.
Vì vậy, EXECUTE 'create table ' || some_var || '(a int)'; có hai bước
- đánh giá biểu thức
'create table ' || some_var || '(a int)' - if
some_varlà mytab chẳng hạn, sau đó thực hiện lệnhcreate table mytab(a int)
PERFORM câu lệnh được sử dụng cho các cuộc gọi hàm, khi các hàm không được sử dụng trong câu lệnh gán. EXECUTE được sử dụng để đánh giá SQL động - khi một dạng lệnh SQL được biết đến trong thời gian chạy.