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$;