関数内に配列を宣言できません。以下のエラーが表示されます。db2 iseries 7.1の関数内のARRAY宣言7.1
Error: [SQ20441] Array type not valid where specified.
私のコードこれで私を助けてください、以下
CREATE TYPE REV_QTY AS INTEGER ARRAY[] ;--ALLOW_ARRAY_VALUE_CHANGES
CREATE OR REPLACE FUNCTION GET_REV_QTY (IN_IPID INTEGER,QTY_TO_PLACE
INTEGER,INITIAL_REV_QTY INTEGER)
RETURNS INTEGER
LANGUAGE SQL
DETERMINISTIC
MODIFIES SQL DATA
--CONTAINS SQL
--RETURNS NULL ON NULL INPUT
NO EXTERNAL ACTION
BEGIN
DECLARE AVAILABLE_REV_QTY REV_QTY;
if exists(AVAILABLE_REV_QTY[IN_IPID]) then
CASE WHEN QTY_TO_PLACE > AVAILABLE_REV_QTY[IN_IPID] THEN
SET AVAILABLE_REV_QTY[IN_IPID] = 0
WHEN QTY_TO_PLACE < AVAILABLE_REV_QTY[IN_IPID] AND QTY_TO_PLACE >= 0
THEN
SET AVAILABLE_REV_QTY[IN_IPID] = AVAILABLE_REV_QTY[IN_IPID] -
QTY_TO_PLACE
END;
END IF;
RETURN AVAILABLE_REV_QTY[IN_IPID] ;
END |
です。私はDB2 i7.1を初めて使用しており、私は が間違っていることを理解することができません。
マニュアルにはSQ20441の説明がありますか? – mustaccio
はい。 Array型は次のように使用します: 1. SQLスカラー関数またはSQLまたはJAVAプロシージャーの引数として。 2. SQLプロシージャーまたはSQLスカラー関数で宣言されたSQL変数の場合。 3. SQLプロシージャーまたはSQLスカラー関数のCAST指定。 ルーチンが呼び出されたときに使用される配列タイプのデータ型は、ルーチンの作成時に使用された配列のデータ の型と一致しなければなりません。 –
あなたは間違ったマニュアルを見ていると思います。 – mustaccio