PERFORM adalah perintah plpgsql yang digunakan untuk panggilan fungsi batal. PLpgSQL berhati-hati dengan SELECT yang tidak berguna pernyataan - SELECT tanpa INTO klausa tidak diperbolehkan. Tetapi terkadang Anda perlu memanggil suatu fungsi dan Anda tidak perlu menyimpan hasil (atau fungsi tidak memiliki hasil). Fungsi dalam SQL dipanggil dengan SELECT penyataan. Tapi itu tidak mungkin di PLpgSQL - jadi perintahnya PERFORM diperkenalkan.
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 pernyataan mengeksekusi parameter dan lupa hasilnya.
Contoh Anda perform 'create table foo as (select 1)';
sama seperti SELECT 'create table foo as (select 1)' . Ini mengembalikan string "buat tabel foo as (pilih 1)" dan string ini dibuang.
EXECUTE pernyataan mengevaluasi ekspresi untuk mendapatkan string. Pada langkah selanjutnya string ini dieksekusi.
Jadi EXECUTE 'create table ' || some_var || '(a int)'; memiliki dua langkah
- evaluasi ekspresi
'create table ' || some_var || '(a int)' - jika
some_varadalah mytab misalnya, lalu jalankan perintahcreate table mytab(a int)
PERFORM pernyataan digunakan untuk panggilan fungsi, ketika fungsi tidak digunakan dalam pernyataan penugasan. EXECUTE digunakan untuk evaluasi SQL dinamis - ketika bentuk perintah SQL diketahui saat runtime.