EugeneBoss3
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору /******************************************************************************* The next statement causes the following error: Invalid token. invalid request BLR at offset 356. Procedure GET_FULLADDRESS_2 is not selectable (it does not contain a SUSPEND statement). Error while parsing procedure GET_ADDRESS_LIST_2's BLR. *******************************************************************************/ ALTER PROCEDURE GET_ADDRESS_LIST_2 ( SRCH_STR VARCHAR(40), ADDRESS_TYPE SMALLINT, MAX_COUNT SMALLINT) RETURNS ( ADR_REG SMALLINT, ADR_ID BIGINT, ADR_FULLNAME VARCHAR(500)) AS DECLARE VARIABLE CNT SMALLINT; BEGIN IF (:ADDRESS_TYPE IS NULL) THEN ADDRESS_TYPE = 0; IF (MAX_COUNT IS NULL) THEN MAX_COUNT = 100; IF ((:MAX_COUNT > 100) OR (:MAX_COUNT < 5)) THEN MAX_COUNT = 100; CNT = 0; FOR SELECT A.ADDRESSREGION_ID, A.ADDRESS_ID FROM KLADR_ADDRESS_2 A WHERE (A.ABBREV_LEVEL < 5) AND UPPER(A.ADDRESS_NAME) LIKE :SRCH_STR ORDER BY A.ADDRESSREGION_ID INTO :ADR_REG, :ADR_ID DO BEGIN SELECT SA FROM GET_FULLADDRESS_2(:ADDRESS_TYPE, :ADR_REG, :ADR_ID) INTO :ADR_FULLNAME; SUSPEND; CNT = :CNT + 1; IF (:CNT > :MAX_COUNT) THEN EXCEPTION EXC_MANYVALUES; END END ; /******************************************************************************* The next statement causes the following error: Invalid token. invalid request BLR at offset 394. Procedure GET_FULLADDRESS_20 is not selectable (it does not contain a SUSPEND statement). Error while parsing procedure GET_ADDRESS_LIST_20's BLR. *******************************************************************************/ ALTER PROCEDURE GET_ADDRESS_LIST_20 ( SRCH_STR VARCHAR(40), ADDRESS_TYPE SMALLINT, MAX_COUNT SMALLINT) RETURNS ( ADR_REG SMALLINT, ADR_ID BIGINT, ADR_VERS SMALLINT, ADR_FULLNAME VARCHAR(500)) AS DECLARE VARIABLE CNT SMALLINT; BEGIN IF (:ADDRESS_TYPE IS NULL) THEN ADDRESS_TYPE = 0; IF (MAX_COUNT IS NULL) THEN MAX_COUNT = 100; IF ((:MAX_COUNT > 100) OR (:MAX_COUNT < 5)) THEN MAX_COUNT = 100; CNT = 0; FOR SELECT A.ADDRESSREGION_ID, A.ADDRESS_ID, A.ADDRESS_VERSION FROM KLADR_ADDRESS_20 A WHERE (A.ABBREV_LEVEL < 5) AND UPPER(A.ADDRESS_NAME) LIKE :SRCH_STR ORDER BY A.ADDRESSREGION_ID INTO :ADR_REG, :ADR_ID, :ADR_VERS DO BEGIN SELECT SA FROM GET_FULLADDRESS_20(:ADDRESS_TYPE, :ADR_REG, :ADR_ID, :ADR_VERS) INTO :ADR_FULLNAME; SUSPEND; CNT = :CNT + 1; IF (:CNT > :MAX_COUNT) THEN EXCEPTION EXC_MANYVALUES; END END ; |