В ниже хранимой процедуре для db2. Я хочу установить значение выборки id из базы данных и использовать во втором запросе вставки - PullRequest
0 голосов
/ 11 ноября 2019
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 для склада и проходной таблицы. Только в шкафу хранятся данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...