Informix IDS 9.xに対して動的に構築されたクエリを実行する必要があります。 WHERE句はほとんど単純ですが、Projection句は、列に多くの列や数式を適用すると非常に複雑になります。 1つの例を示します。DBD :: Informixでエラーをキャッチ
SELECT ((((table.I_ACDTIME + table.I_ACWTIME + table.I_DA_ACDTIME + table.I_DA_ACWTIME +
table.I_RINGTIME))+(table.I_ACDOTHERTIME + table.I_ACDAUXINTIME +
table.I_ACDAUX_OUTTIME)+(table.I_TAUXTIME + table.I_TAVAILTIME +
table.I_TOTHERTIME)+((table.I_AVAILTIME + table.I_AUXTIME)*
((table.MAX_TOT_PERCENTS/100)/table.MAXSTAFFED)))/(table.INTRVL*60))
FROM table
WHERE ...
使用されているフィールドの一部にゼロが含まれていると問題が発生します。 Informixのは予想ゼロ誤差による除算をスローが、エラーメッセージが非常に有用ではない。この場合
DBD::Informix::st fetchrow_arrayref failed:
SQL: -1202: An attempt was made to divide by zero.
、失敗した計算にNULLを返すことが望ましいです。 Projection句を解析する以外にこれを達成する方法はありますか? DBD :: Informixの魔法を使うのが好きです。
私は同じと思うが、このように行く前に確認しなければならなかった。 DECODE()のチップをありがとう、私はあまりにもInformixに精通していないとこの機能について知りませんでした。 –
Informixが 'NULLIF'をサポートしている場合、NULLIF(...、0)になります。 –