CREATE OR REPLACE PROCEDURE INSERT_LOCATION(
IN stockId VARCHAR (36),
IN locationName VARCHAR (50),
IN createdBy VARCHAR (25),
IN createdTstamp TIMESTAMP,
IN shipTo BIGINT,
IN aisleId VARCHAR (36),
IN aisleName VARCHAR(25),
IN cabinetId VARCHAR(36),
IN cabinetName VARCHAR(25),
IN shelfStart SMALLINT,
IN shelfEnd SMALLINT,
IN columnStart SMALLINT,
IN columnEnd SMALLINT
)
BEGIN
IF NOT EXISTS (SELECT STOCKLOCATIONID
FROM EVMIDB.CI_STOCKLOC
WHERE SHIPTO = shipTo
and LOCATIONNAME= locationName ) THEN
INSERT INTO EVMIDB.CI_STOCKLOC
(STOCKLOCATIONID
,SHIPTO
,LOCATIONNAME
,CREATEDBY
,CREATEDTIMESTAMP)
VALUES (stockId
,shipTo
,locationName
,createdBy
,createdTstamp);
ELSE
SET stockId=(SELECT STOCKLOCATIONID
FROM EVMIDB.CI_STOCKLOC
WHERE SHIPTO = shipTo
AND LOCATIONNAME= locationName
FETCH FIRST 1 ROWS ONLY);
END IF;
IF(aisleId !='') THEN
IF NOT EXISTS (SELECT AISLEID
FROM EVMIDB.CI_AISLE
WHERE SHIPTO = shipTo
AND AISLENAME= aisleName ) THEN
INSERT INTO EVMIDB.CI_AISLE(
AISLEID
,SHIPTO
,AISLENAME
,STOCKLOCATIONID)
values (aisleId
,shipTo
,aisleName
,stockId);
ELSE
SET aisleId=(SELECT AISLEID
FROM EVMIDB.CI_AISLE
WHERE SHIPTO = shipTo
and AISLENAME= aisleName
FETCH FIRST 1 ROWS ONLY);
END IF;
END IF;
IF(cabinetId !='') THEN
INSERT INTO EVMIDB.CI_CABINET
(CABINETID
,SHIPTO
,CABINETNAME
,SHELFSTARTRANGE
,SHELFENDRANGE
,COLUMNSTARTRANGE
,COLUMNENDRANGE
,AISLEID)
values cabinetId,
shipTo,
cabinetName,
shelfStart,
shelfEnd,
columnStart,
columnEnd,
aisleId);
END IF;
END
Я не могу сохранить данные в БД, поскольку запрос на выборку не может установить значение в БД, чтобы я мог использовать его в другом запросе. Кто-нибудь может помочь в написании этой хранимой процедуры? Я не могу найти, почему он не хранится в db2 для склада и проходной таблицы. Только в шкафу хранятся данные.