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_var
er 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.