PostgreSQL 9.3:不使用if条件更新表

时间:2015-09-28 06:15:31

标签: postgresql postgresql-9.3

我的下表有两列,即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);    

0 个答案:

没有答案