我有这种情况,应用程序有时将空值传递给整数参数,因此得到syntax error at or near ','
。处理空整数
有没有办法,从存储过程方面来处理这个?
一个简单的方法来重现此,例如被这样做:
select (''::integer);
这显然返回:
ERROR: syntax error at or near ":"
也就是说或多或少的存储过程在返回相同的错误样例。
P.S .:服务器是PostgreSql 9.5。
我有这种情况,应用程序有时将空值传递给整数参数,因此得到syntax error at or near ','
。处理空整数
有没有办法,从存储过程方面来处理这个?
一个简单的方法来重现此,例如被这样做:
select (''::integer);
这显然返回:
ERROR: syntax error at or near ":"
也就是说或多或少的存储过程在返回相同的错误样例。
P.S .:服务器是PostgreSql 9.5。
with the_data(str) as (
values
('1'),
('2'),
('')
)
select nullif(str, '')::integer as value
from the_data;
value
--------
1
2
<null>
(3 rows)
嗯,不,问题是params是空的,不是null,不是''。 – leonardorame
缺乏参数总是会引发语法错误,您必须在客户端应用程序中更正此错误。 – klin
是的,很老的应用程序很难。 – leonardorame
不宜应用处理呢?一个空字符串不是一个整数。 –
是的,但我无法访问应用程序的源代码。 – leonardorame
我得到了一个不同的错误:'错误:整数的输入语法无效:“” 行1:SELECT('':: int)AS the_int'您是否运行相同的片段? – joop