PERFORM
es el comando plpgsql utilizado para llamadas de funciones nulas. PLpgSQL tiene cuidado con SELECT
inútil declaraciones - el SELECT
sin INTO
No se permite la cláusula. Pero a veces necesita llamar a una función y no necesita almacenar el resultado (o las funciones no tienen resultado). La función en SQL
se llama con SELECT
declaración. Pero no es posible en PLpgSQL, por lo que el comando PERFORM
fue presentado.
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;
$$;
El PERFORM
Las declaraciones ejecutan un parámetro y olvidaron el resultado.
Su ejemplo perform 'create table foo as (select 1)';
es lo mismo que SELECT 'create table foo as (select 1)'
. Devuelve una cadena "crear tabla foo como (seleccione 1)" y esta cadena se descarta.
El EXECUTE
instrucción evalúa una expresión para obtener una cadena. En el siguiente paso se ejecuta esta cadena.
Entonces EXECUTE 'create table ' || some_var || '(a int)';
tiene dos pasos
- evaluar expresión
'create table ' || some_var || '(a int)'
- si
some_var
es mytab por ejemplo, luego ejecute un comandocreate table mytab(a int)
El PERFORM
La declaración se usa para llamadas a funciones, cuando las funciones no se usan en la declaración de asignación. El EXECUTE
se utiliza para la evaluación de SQL dinámico, cuando se conoce una forma de comando SQL en tiempo de ejecución.