IBM是在他的Informix的标准引擎很清楚,它不支持任何一种情况,也不进行解码。 “请升级到新的版本”:的 http://www-01.ibm.com/support/docview.wss?rs=632&context=SSGU5Y&dc=DB560&dc=DB520&uid=swg21189712&loc=en_US&cs=UTF-8&lang=en&rss=ct632db2

这是不会发生的!

因此,也许有人能有一个想法。我想有相当于:

  

选择NVL(C1,C2)从MyTable的

有帮助吗?

解决方案

CREATE PROCEDURE NVL(a CHAR(32), b CHAR(32) DEFAULT NULL,
                                 c CHAR(32) DEFAULT NULL,
                                 d CHAR(32) DEFAULT NULL,
                                 e CHAR(32) DEFAULT NULL,
                                 f CHAR(32) DEFAULT NULL,
                                 g CHAR(32) DEFAULT NULL)
   RETURNING CHAR(32);
   IF   a IS NOT NULL THEN RETURN a;
   ELIF b IS NOT NULL THEN RETURN b;
   ELIF c IS NOT NULL THEN RETURN c;
   ELIF d IS NOT NULL THEN RETURN d;
   ELIF e IS NOT NULL THEN RETURN e;
   ELIF f IS NOT NULL THEN RETURN f;
   ELSE                    RETURN g;
   END IF;
END PROCEDURE;

或者 - 以下一般为:

-- @(#)$Id: nvl_int.spl,v 1.1 1996/08/26 18:33:11 johnl Exp $
--
-- nvl_integer: return v1 if it is not null else return v2

CREATE PROCEDURE nvl_integer(v1 INTEGER, v2 INTEGER DEFAULT 0)
    RETURNING INTEGER;

    DEFINE rv INTEGER;

    IF v1 IS NOT NULL THEN
        LET rv = v1;
    ELSE
        LET rv = v2;
    END IF

    RETURN rv;

END PROCEDURE;

在CHAR版本可用于几乎任何类型的(除了字符串长度超过32长,作为书面),因为SE处于类型之间转换非常好。 SE不支持显式转换,无论是 - 它是安全的假设,SE并没有太大SQL的过去SQL-89

其他提示

如果您对 IIUG网站在下载区一看,你会发现SPL程序的集合,有效仿这些功能等。你后具体的一个被称为“orclproc”。

集合
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top