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_var
là 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.