- 论坛徽章:
- 0
|
if expression1 then
if expression2 then
statements1
end if;
else
statements2
end if;
若是expression1判断问真,而expression2判断为假,应该是返回错误才对吧?
可是我对下面的函数很不理解,请大侠赐教!谢谢- create function change_prov(char(8),char(6))
- returns text as
- $
- declare f_name alias for $1;
- f_prov alias for $2;
- f_rec record;
- message text;
- begin
- if length(f_prov)!=0 then
- select * into f_rec from friend where name=f_name;
- if not found then
- insert into friend (name,prov) values (f_name,f_prov);
- message:='数据插入成功';
- return message;
- else update friend set prov=f_prov where name=f_name;
- message:='省市名更新成功';
- return message;
- end if;
- else select * into f_rec from friend where name=f_name;
- if found then
- delete from friend where name=f_name;
- message:='数据删除成功';
- return message;
- else
- message:='没有找到指定人';
- return message;
- end if;
- end if;
- end;
- $
- language 'plpgsql';
复制代码 当我使用select change_prov('abcd', ' ');时获得的竟然是“没有找到指定人”
郁闷~~~第二个参数的空字符串的长度大于0,应该是第一次if表达式为真,而是插入数据才对啊(friend表中没有name为abcd的这条记录),怎么跑去执行后面的else后面的语句?(if表达式为真后,同级的else应该是不执行才对啊)
谢谢赐教 |
|