1
テーブルにデータを挿入してデータ型serial
を返す関数を作成したいと考えています。あなたが何をする必要があるPL/pgSQL関数の "ERROR:クエリに結果データの宛先がありません"
CREATE OR REPLACE FUNCTION ins_uuser(p_user_name text, p_real_name text, p_age int, p_city text)
RETURNS integer AS
$$
INSERT INTO uuser(user_name, last_login, real_name, age, city)
VALUES($1, CURRENT_TIMESTAMP, $2, $3, $4)
RETURNING uid;
$$
LANGUAGE sql VOLATILE;
しかし、あなたは本当に(つまり、通常は遅くなるが)PL/pgSQLのを使用する場合:
あなたはこのためにPL/pgSQLの必要はありませんCREATE TABLE uuser (
uid serial PRIMARY KEY
, user_name text NOT NULL
, last_login timestamptz NOT NULL DEFAULT current_timestamp
, real_name text
, age int
, city text
, CHECK (age > 0 and age < 140)
);
CREATE OR REPLACE FUNCTION ins_uuser(p_user_name text
, p_real_name text
, p_age int
, p_city text)
RETURNS integer AS
$$
BEGIN
INSERT INTO uuser(user_name, last_login, real_name, age, city)
VALUES($1, CURRENT_TIMESTAMP, $2, $3, $4)
RETURNING uid;
END;
$$
LANGUAGE plpgsql VOLATILE;
SELECT ins_uuser('Joker', 'Jack', 18, 'New York') AS uuser_id;
ERROR: query has no destination for result data CONTEXT: PL/pgSQL function ins_uuser(text,text,integer,text) line 3 at SQL statement
それは働きます!どうもありがとうございます! –