2017-06-02 52 views
0

我有这种情况,应用程序有时将空值传递给整数参数,因此得到syntax error at or near ','处理空整数

有没有办法,从存储过程方面来处理这个?

一个简单的方法来重现此,例如被这样做:

select (''::integer); 

这显然返回:

ERROR: syntax error at or near ":" 

也就是说或多或少的存储过程在返回相同的错误样例。

P.S .:服务器是PostgreSql 9.5。

+1

不宜应用处理呢?一个空字符串不是一个整数。 –

+0

是的,但我无法访问应用程序的源代码。 – leonardorame

+0

我得到了一个不同的错误:'错误:整数的输入语法无效:“” 行1:SELECT('​​':: int)AS the_int'您是否运行相同的片段? – joop

回答

2

使用nullif().

with the_data(str) as (
values 
    ('1'), 
    ('2'), 
    ('') 
) 

select nullif(str, '')::integer as value 
from the_data; 

    value 
-------- 
     1 
     2 
<null>  
(3 rows) 
+0

嗯,不,问题是params是空的,不是null,不是''。 – leonardorame

+0

缺乏参数总是会引发语法错误,您必须在客户端应用程序中更正此错误。 – klin

+0

是的,很老的应用程序很难。 – leonardorame