나는 소요 상당히 일반적인 기능하고 싶은 INSERT
, UPDATE
또는 DELETE
포함 할 수 있습니다, RETURNING
절을하고, 그 결과를 반환합니다. 상당히 인위적인 예는 다음과 같을 수 있습니다.
CREATE FUNCTION my_insert(sql_insert TEXT) RETURNS record AS $$
DECLARE
result record;
BEGIN
EXECUTE sql_insert INTO result;
RETURN result;
END;
$$ LANGUAGE plpgsql;
SELECT my_insert('INSERT INTO foo VALUES (1) RETURNING some_column, another_column');
이것은 정상적으로 작동하지만 일반적으로 테이블 유형을 반환 record
하기 때문에 여기에서 올바른 유형 이라고 생각하지 않습니다 RETURNING
. 내 함수에서 똑같은 형식을 반환하고 싶지만 RETURNING
방법을 잘 모르겠습니다.
함수에서 테이블 구조를 정의하는 한 반환 record
은 괜찮습니다 SELECT
.
SELECT * FROM my_insert('INSERT INTO foo VALUES (1) RETURNING some_column, another_column)
AS f(some_column bigint, another_column timestamp);
my_insert
함수 의 반환 값 이 항상 특정 유형이 될 경우 복합 유형이 더 나은 방법 일 수 있습니다.
CREATE TYPE my_insert_result AS (
some_column bigint,
another_column timestamp
);
그런 다음 해당 유형을 반환하도록 함수를 변경합니다.
CREATE FUNCTION my_insert(sql_insert TEXT) RETURNS my_insert_result AS $$
DECLARE
result my_insert_result;
BEGIN
EXECUTE sql_insert INTO result;
RETURN result;
END;
$$ LANGUAGE plpgsql;
SELECT * FROM my_insert('INSERT INTO foo VALUES (1) RETURNING some_column, another_column');
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다