我创建了一个函数来插入/更新表中的记录。 数据作为参数传递给函数。 在处理Integer / float / double字段时面临问题。例如, 我已经将Empno字段声明为Int(根据目标表结构)。 因此,我认为当一个空值到来时,我会使用强制转换功能将其转换为“ 0”。 但是自从声明为Int以来,它甚至不接受NULL值。 我应该将声明更改为varchar然后进行转换吗? 我该怎么办 ?请帮助
我得到的错误是运算符不存在:文本整数42883
示例代码:
create function test (text[])
declare
companycode varchar(4);
empno varchar(10);
begin
L_1 := $1[1];
L_2 :=cast(NULLIF($1[2],0) as int);
update and insert statement ...
end;
答案 0 :(得分:1)
NULLIF()
将指定的值更改为NULL
,反之亦然。改用IFNULL()
或COALESCE()
。
还将操作顺序首先更改为CAST,如下所示:
COALESCE($1[2]::int, 0)