我有這種情況,應用程序有時將空值傳遞給整數參數,因此得到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