함수 내에 배열을 선언 할 수 없습니다. 아래 오류를 보여줍니다. 내 코드는 다음과 같습니다db2 iseries에서 함수 내의 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
예. 배열 타입은 다음과 같이 쓰여집니다 : 1. SQL 스칼라 함수 또는 SQL 또는 JAVA 프로 시저로서의 인수로서. 2. SQL 프로시 저나 SQL 스. 라 함수로 선언 된 SQL 변수의 경우. 3. SQL 프로시 저나 SQL 스. 라 함수의 CAST 스펙. 루틴이 호출 될 때 사용되는 배열 유형의 데이터 유형은 루틴이 작성 될 때 사용 된 배열 유형과 일치해야합니다. –
잘못된 설명서를보고있는 것 같습니다. – mustaccio