1

IBM は彼の Informix Standard Engine について非常に明確であり、CASE も DECODE もサポートしていません。「新しいバージョンにアップグレードしてください」: 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

それは決して起こりません!

だから多分誰かがアイデアを持っているかもしれません。私は同等のものを持ちたい:

MyTable から NVL(c1, c2) を選択

4

2 に答える 2

3
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;

SEはタイプ間の変換に非常に優れているため、CHARバージョンはほとんどすべてのタイプ(記述されている32より長い文字列を除く)に使用できます。SEは明示的なキャストもサポートしていません。SEにはSQL-89以降のSQLがあまりないことを前提としています。

于 2009-06-25T21:11:37.777 に答える
2

IIUG サイトのダウンロード エリアを見ると、これらの機能やその他の機能をエミュレートするための SPL ルーチンのコレクションが見つかります。あなたが求めている特定のものは、「orclproc」と呼ばれるコレクションです。

于 2009-06-25T21:38:48.143 に答える