Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL 9.3:不使用if条件更新表_Postgresql_Postgresql 9.3 - Fatal编程技术网

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

PostgreSQL 9.3:不使用if条件更新表,postgresql,postgresql-9.3,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和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的某些值传递给函数时才更新,否则,如果传递空字符串或null,则更新 值,则它不应更新意味着它应仅保留其旧值我不想 要使用该条件的IF条件

我的尝试: 功能:趣味测试

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;
调用函数:

INSERT INTO Test VALUES('b',1);
INSERT INTO Test VALUES('ba',2);
INSERT INTO Test VALUES('bac',3);
条件1:以下调用函数不应更新FirstName的旧值

SELECT * from fun_test('',3);
SELECT * from fun_test('xyz',3);    
条件2:以下调用函数应更新FirstName的旧值

SELECT * from fun_test('',3);
SELECT * from fun_test('xyz',3);    

听起来像是家庭作业。当您引用coalsece文档时,您会发现它返回第一个非空元素。
coalesce()
检查
null
值,空字符串(
'
)不是
null
值。另外:您应该这样调用函数:
选择fun\u test(…)
。由于它不返回结果集,因此不应将其放入
from
子句中。