我的下表有两列,即FirstName和Num,如下所示:
表:测试
CREATE TABLE Test
(
FirstName VARCHAR(10),
Num int
);
插入:
INSERT INTO Test VALUES('b',1);
INSERT INTO Test VALUES('ba',2);
INSERT INTO Test VALUES('bac',3);
注意:现在我想使用该函数更新表中的FirstName。表应该是 只有当我将firstName的值传递给function时才会更新,否则如果我传递空字符串或null 值然后它不应该更新意味着它应该只保留其旧值。 我不想要 为此使用IF条件。
功能:fun_test
create or replace function fun_test(p_FirstName varchar(50),p_num int)
RETURNS BOOLEAN
AS
$boday$
BEGIN
Update Test
set FirstName = COALESCE(p_FirstName,FirstName)
WHERE Num = p_num;
RETURN FOUND;
END;
$boday$
LANGUAGE PLPGSQL;
调用函数:
条件1 :以下调用函数不应更新FirstName的旧值。
SELECT * from fun_test('',3);
条件2 :以下调用函数应更新FirstName的旧值。
SELECT * from fun_test('xyz',3);