CREATE OR REPLACE FUNCTION heckANDinsert(
first VARCHAR(20), surname VARCHAR(20),
No VARCHAR(30), nation VARCHAR(30), dob DATE
) RETURNS SETOF passenger AS $$
DECLARE
name VARCHAR(20);
Sname VARCHAR(20);
Pass VARCHAR(30);
nation VARCHAR(30);
birthdate DATE;
BEGIN
SELECT first, same,passportNo, nationality,dob
INTO fname,sname, PassportN, nation, birthdate
FROM passenger
WHERE
firstname = $1
AND surname = $2
AND passportNo = $3
AND nationality = $4
AND dob = $5;
IF NOT FOUND THEN
INSERT INTO passenger
SELECT MAX(passengerid)+1, $1,$2,$3,$4,$5
FROM passenger;
ELSE
RAISE EXCEPTION 'passenger record already exists.';
END IF;
END;
$$ LANGUAGE plpgsql;
我使用
SELECT passenger_checkANDinsert(
'john', 'levis', 'v39949455', 'British', '1990-07-23'
);
如果我将名字更改为另一个,该函数会将正确的结果插入数据库。但如果我更改姓氏并保持名字与数据库数据相同,它将不起作用。我猜函数中的 select 语句 WHERE 条件中有问题,但我找不到任何错误..