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

Bagaimana cara mendapatkan kolom individual dari tabel yang dikembalikan dari suatu fungsi?

Untuk menguraikan baris yang Anda dapatkan kembali dari fungsi, perlakukan seperti tabel lainnya:

SELECT * FROM karta_pacjenta('foo45678901');

Fungsi yang mengembalikan sekumpulan baris juga disebut "fungsi tabel".

Selain itu, apa yang Anda presentasikan tidak akan berfungsi.

CREATE  FUNCTION karta_pacjenta(_pe varchar)
  RETURNS TABLE(data DATE, imie TEXT, nazwisko TEXT
              , diagnoza TEXT,przepisany lek TEXT)  AS
$func$
SELECT w.dzien, p.imie, p.nazwisko, ch.nazwa, l.nazwa
FROM   pacjenci  p
JOIN   diagnozy  d  USING (pesel) -- shorthand if columns are unambiguous
JOIN   wizyty    w  USING (pesel)
JOIN   choroby   ch ON ch.kod_choroby = d.kod_choroby
JOIN   recepty   r  ON r.nr_wizyty = w.nr_wizyty
JOIN   leki      l  ON l.kod_leku = r.kod_leku 
WHERE  p.pesel = _pe
$func$ LANGUAGE sql;
  • Kutipan tunggal untuk nama kolom adalah kesalahan sintaksis. Harus menjadi tanda kutip ganda. Lebih baik Anda selalu menggunakan nama yang tidak dikutip, legal, dengan huruf kecil.

  • Jangan mengutip nama bahasa, itu adalah pengenal.

Sisanya opsional, tetapi saran yang bagus.

  • Fungsi SQL sederhana berfungsi di sini.

  • Gunakan sintaks JOIN eksplisit. Hasil yang sama, tetapi lebih mudah dirawat.

  • Mungkin tidak ada gunanya menggunakan varchar(11) alih-alih hanya varchar atau text sebagai tipe param. (Pengecualian kasus sudut berlaku.)

  • Gunakan kutipan dolar - yang sepenuhnya opsional di sini, tetapi umumnya gaya yang baik untuk mengutip badan fungsi. Cepat atau lambat Anda pasti ingin menyertakan tanda kutip tunggal di badan.




  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 Menutup Celah Kerentanan di PostgreSQL

  2. Migrasi PostgreSQL ke Cloud - Membandingkan Solusi dari Amazon, Google &Microsoft

  3. Konversikan kolom byte ke OID sambil mempertahankan nilai

  4. Bagaimana cara mencadangkan &Mengembalikan database PostgreSQL di Windows7?

  5. Cara menggunakan lokasi fisik baris (ROWID) dalam pernyataan DELETE