


Bagaimana untuk Membetulkan Ralat PostgreSQL 42601: 'senarai definisi lajur diperlukan untuk fungsi mengembalikan 'rekod''?
Jan 05, 2025 pm 03:10 PM<h2>PostgreSQL: ERROR: 42601: senarai definisi lajur diperlukan untuk fungsi mengembalikan "rekod"</h2>
Ralat "a lajur senarai definisi diperlukan untuk fungsi mengembalikan "rekod"" menunjukkan bahawa fungsi yang ditakrifkan untuk mengembalikan jenis data rekod tiada nama lajur dan jenis data dalam pernyataan pulangannya. Untuk menyelesaikan ralat ini, nyatakan takrifan lajur dalam klausa RETURNING atau gunakan RETURNS SETOF <record_type>.
Seperti yang ditunjukkan dalam kod berikut, anda boleh mentakrifkan nama lajur dan jenis data dalam klausa RETURNING:
CREATE OR REPLACE FUNCTION get_user_by_username(_username text , _online bool DEFAULT false) RETURNS TABLE ( user_id int , user_name varchar , last_activity timestamptz ) LANGUAGE plpgsql AS $func$ BEGIN IF _online THEN RETURN QUERY UPDATE users u SET last_activity = current_timestamp -- ts with time zone WHERE u.user_name = _username RETURNING u.user_id , u.user_name , u.last_activity; ELSE RETURN QUERY SELECT u.user_id , u.user_name , u.last_activity FROM users u WHERE u.user_name = _username; END IF; END $func$;
Sebagai alternatif, anda boleh menggunakan RETURNS SETOF <record_type> untuk mengembalikan set rekod, di mana <record_type> ialah jenis komposit yang mewakili struktur data yang dikembalikan. Contohnya:
CREATE OR REPLACE FUNCTION get_user_by_username3(_username text , _online bool DEFAULT false) RETURNS TABLE ( users_row users , custom_addition text ) LANGUAGE plpgsql AS $func$ BEGIN IF _online THEN RETURN QUERY UPDATE users u SET last_activity = current_timestamp -- ts with time zone WHERE u.user_name = _username RETURNING u -- whole row , u.user_name || u.user_id; ELSE RETURN QUERY SELECT u, u.user_name || u.user_id FROM users u WHERE u.user_name = _username; END IF; END $func$;
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat PostgreSQL 42601: 'senarai definisi lajur diperlukan untuk fungsi mengembalikan 'rekod''?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)?
