집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL 오류 42601 수정 방법: ''레코드'를 반환하는 함수에는 열 정의 목록이 필요합니다'?
"열" 오류 "레코드"를 반환하는 함수에는 정의 목록이 필요합니다."는 레코드 데이터 유형을 반환하도록 정의된 함수에 열 이름과 데이터 유형이 누락되었음을 나타냅니다. 반환 문에서. 이 오류를 해결하려면 RETURNING 절에 열 정의를 지정하거나 RETURNS SETOF
다음 코드에서 설명한 것처럼 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$;
또는 RETURNS SETOF
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$;
위 내용은 PostgreSQL 오류 42601 수정 방법: ''레코드'를 반환하는 함수에는 열 정의 목록이 필요합니다'?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!