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

Apakah mungkin menggunakan variabel dan tidak menentukan tipe pengembalian di postgreSQL?

Blok kode anonim (DO command) tidak dapat mengembalikan baris dan Postgres tidak memiliki variabel global. Ada beberapa cara untuk hidup tanpanya. Empat di antaranya adalah sebagai berikut.

Gunakan ekspresi tabel umum (WITH perintah)

WITH def AS (
    SELECT 3 AS colorid
    )
SELECT *, substring(name,1,3) 
FROM products
JOIN def
USING (colorid);

Gunakan tabel sementara untuk variabel:

CREATE TEMP TABLE var(colorid int);
INSERT INTO var values (3);
SELECT *, substring(name,1,3) 
FROM products
JOIN var
USING (colorid);
DROP TABLE var;

Gunakan tabel sementara untuk hasil:

DO $$
DECLARE v_colorid INT;
BEGIN
    v_colorid := 3;
    CREATE TEMP TABLE res AS 
        SELECT *, substring(name,1,3) 
        FROM products
        WHERE colorid = v_colorid;
END $$;
SELECT * 
FROM res;
DROP TABLE res;

Buat fungsi (contoh):

CREATE OR REPLACE FUNCTION select_from_products()
RETURNS TABLE (colorid int, name text, abbr text)
LANGUAGE plpgsql as $$
DECLARE v_colorid INT;
BEGIN
    v_colorid := 3;
    RETURN QUERY
        SELECT *, substring(p.name,1,3) 
        FROM products p
        WHERE p.colorid = v_colorid;
END $$;

SELECT * FROM select_from_products();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengekstrak Nomor Minggu dari Tanggal di PostgreSQL

  2. Isolasi Transaksi di PostgreSQL

  3. pg_dump database postgres dari server jauh ketika port 5432 diblokir

  4. Gabungkan dua tabel menjadi tabel baru sehingga memilih baris dari tabel lainnya diabaikan

  5. Mendapatkan NoSuchMethodError:javax.persistence.Table.indexes() saat melakukan kueri JPA