You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Informix SPL查询多BOOLEAN值赋值变量报错如何解决?

Informix SPL多BOOLEAN值SELECT INTO报错解决方案

错误原因

Informix 12.10版本的SPL解析器存在隐式转换逻辑差异:当单个CHAR类型字面量t/f赋值给BOOLEAN变量时,解析器能识别上下文自动触发隐式转换;但多列查询返回多个CHAR字面量时,解析器会优先将返回集识别为CHAR类型行,不会自动逐列匹配BOOLEAN变量的类型做隐式转换,因此触发-9635类型转换错误。

解决方案

  • 方案1:显式转换每个BOOLEAN类型的返回值(最推荐)
    对每个要赋值给BOOLEAN变量的返回值,用BOOLEAN()函数强制转换类型,修正后的存储过程代码如下:
CREATE PROCEDURE test()
    DEFINE b1 BOOLEAN;
    DEFINE b2 BOOLEAN;
    DEFINE i1 INTEGER;
    DEFINE i2 INTEGER;

    SELECT FIRST 1 't' INTO b1 FROM systables; -- OK
    SELECT FIRST 1 'f' INTO b2 FROM systables; -- OK

    SELECT FIRST 1 1, 2 INTO i1, i2 FROM systables; -- OK
    -- 增加显式BOOLEAN类型转换
    SELECT FIRST 1 BOOLEAN('t'), BOOLEAN('t') INTO b1, b2 FROM systables; -- 正常运行

END PROCEDURE;

EXECUTE PROCEDURE test();
  • 方案2:拆分多BOOLEAN值查询为多个单值赋值
    如果转换逻辑复杂不想增加显式转换,可以将多BOOLEAN的查询语句拆分为多个单值SELECT INTO语句,利用单值场景下的隐式转换能力运行。
  • 方案3:如果返回值来自表的CHAR类型字段而非字面量,同样可以用BOOLEAN(字段名)的方式做显式转换即可避免报错。

内容的提问来源于stack exchange,提问作者Herwig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:18:00