sql >> Database teknologi >  >> RDS >> PostgreSQL

PL/pgSQL udføre vs eksekvere

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.

EXECUTE 'create table ' || some_var || '(a int)'; har to trin

  1. evaluer udtryk 'create table ' || some_var || '(a int)'
  2. hvis some_var er mytab for eksempel, så udfør kommandoen create 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.



  1. Sådan aktiverer du Change Data Capture (CDC) på hele tabellen ELLER Aktiverer CDC på bordet med liste over kolonner i SQL Server

  2. Hvordan dropper man alle brugertabeller?

  3. Databasebelastningsbalancering i skyen - MySQL Master Failover med ProxySQL 2.0:Part One (Deployment)

  4. Verificerer MySQLi servercertifikater som standard, når du bruger SSL?