PERFORM er plpgsql-kommandoen, der bruges til opkald af void-funktioner. PLpgSQL er forsigtig med ubrugelig SELECT sætninger - SELECT uden INTO klausul er ikke tilladt. Men nogle gange har du brug for at kalde en funktion, og du behøver ikke at gemme resultatet (eller funktioner har intet resultat). Funktionen i SQL kaldes med SELECT udmelding. Men det er ikke muligt i PLpgSQL - så kommandoen PERFORM blev introduceret.
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 sætninger udfører en parameter og glemte resultatet.
Dit eksempel perform 'create table foo as (select 1)';
er det samme som SELECT 'create table foo as (select 1)' . Den returnerer en streng "opret tabel foo som (vælg 1)", og denne streng kasseres.
EXECUTE sætning evaluere et udtryk for at få streng. I næste trin udføres denne streng.
Så EXECUTE 'create table ' || some_var || '(a int)'; har to trin
- evaluer udtryk
'create table ' || some_var || '(a int)' - hvis
some_varer mytab for eksempel, så udfør kommandoencreate table mytab(a int)
PERFORM sætning bruges til funktionskald, når funktioner ikke bruges i opgavesætning. EXECUTE bruges til evaluering af dynamisk SQL - når en form for SQL-kommando er kendt i runtime.