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

Fungsi Postgres mengembalikan tabel tidak mengembalikan data dalam kolom

Untuk mendapatkan kolom individual alih-alih tipe baris, panggil fungsi dengan:

SELECT * FROM testfunction();

Sama seperti Anda akan memilih semua kolom dari sebuah tabel.
Pertimbangkan juga bentuk tinjauan dari fungsi pengujian Anda:

CREATE OR REPLACE FUNCTION testfunction()
  RETURNS TABLE(a int, b int)
  LANGUAGE plpgsql AS
$func$
DECLARE
   _a int := 0;
   _b int := 0;
BEGIN
   CREATE TABLE tempTable AS SELECT _a, _b;
   RETURN QUERY SELECT * FROM tempTable;
   DROP TABLE tempTable;
END
$func$;

Khususnya:

DECLARE kata kunci hanya diperlukan sekali.

Hindari mendeklarasikan parameter yang sudah (secara implisit) dideklarasikan sebagai OUT parameter di RETURNS TABLE (...) klausa.

Jangan gunakan pengidentifikasi kasus CaMeL yang tidak dikutip di Postgres. Ini berfungsi, pengidentifikasi yang tidak dikutip dilemparkan ke huruf kecil, tetapi dapat menyebabkan kesalahan yang membingungkan. Lihat:

  • Apakah nama kolom PostgreSQL peka huruf besar/kecil?

Tabel sementara dalam contoh sama sekali tidak berguna (mungkin terlalu disederhanakan). Contoh seperti yang diberikan bermuara pada:

CREATE OR REPLACE FUNCTION testfunction(OUT a int, OUT b int)
  LANGUAGE plpgsql AS
$func$
BEGIN
   a := 0;
   b := 0;
END
$func$;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendapatkan nama fungsi saat ini di dalam fungsi dengan plpgsql

  2. Mengapa postgres tidak menggunakan indeks dalam kueri saya

  3. Bagaimana cara membuat pendengar basis data dengan java?

  4. sesuaikan pager di psql

  5. Tuple tidak dimasukkan secara berurutan dalam tabel database?