PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PL/pgSQL melakukan vs mengeksekusi

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

  1. evaluasi ekspresi 'create table ' || some_var || '(a int)'
  2. jika some_var adalah mytab misalnya, lalu jalankan perintah create 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:perintah vakum tidak membersihkan tupel yang mati

  2. Jumlah cek pemicu postgres sebelum dihapus

  3. Di Django 1.9, apa konvensi untuk menggunakan JSONField (postgres jsonb asli)?

  4. PostgreSQL:Mengelompokkan lalu memfilter tabel, dengan syarat tidak ada

  5. 5 Alat Pemantauan Kueri PostgreSQL Teratas