Postgresql INSERT RETURNING 复杂类型
Postgresql INSERT RETURNING complex type
我对 Postgresql 函数有疑问。
我想声明一个函数,它将在 table 中插入一行,而不是 return 我这一行(但是有一个自动创建的字段,比如 Id)。
CREATE OR REPLACE FUNCTION UserCreate(
name character varying(80),
surname character varying(80),
age int,
email character varying(80)
)
RETURNS "Users" AS $$
BEGIN
INSERT INTO "Users"
(name,surname,age,email) VALUES
(name, surname, age, email) RETURNING
* AS result;
END;
$$ LANGUAGE 'plpgsql'
但是当我尝试创建此函数时出现错误:
Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING.
我试图在 RETURNING
子句中找到一些示例,但所有示例都只使用基本的 return 类型,例如整数。
您可以使用变量来传送 insert ... returning
和 return
之间的结果。类似于:
CREATE OR REPLACE FUNCTION UserCreate(
name character varying(80),
surname character varying(80),
age int,
email character varying(80)
)
RETURNS "Users" AS $$
DECLARE
result "Users";
BEGIN
INSERT INTO "Users"
(name,surname,age,email)
VALUES (name, surname, age, email)
RETURNING * INTO result;
RETURN result;
END;
$$ LANGUAGE 'plpgsql';
我对 Postgresql 函数有疑问。 我想声明一个函数,它将在 table 中插入一行,而不是 return 我这一行(但是有一个自动创建的字段,比如 Id)。
CREATE OR REPLACE FUNCTION UserCreate(
name character varying(80),
surname character varying(80),
age int,
email character varying(80)
)
RETURNS "Users" AS $$
BEGIN
INSERT INTO "Users"
(name,surname,age,email) VALUES
(name, surname, age, email) RETURNING
* AS result;
END;
$$ LANGUAGE 'plpgsql'
但是当我尝试创建此函数时出现错误:
Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING.
我试图在 RETURNING
子句中找到一些示例,但所有示例都只使用基本的 return 类型,例如整数。
您可以使用变量来传送 insert ... returning
和 return
之间的结果。类似于:
CREATE OR REPLACE FUNCTION UserCreate(
name character varying(80),
surname character varying(80),
age int,
email character varying(80)
)
RETURNS "Users" AS $$
DECLARE
result "Users";
BEGIN
INSERT INTO "Users"
(name,surname,age,email)
VALUES (name, surname, age, email)
RETURNING * INTO result;
RETURN result;
END;
$$ LANGUAGE 'plpgsql';