Ошибка при вызове хранимой процедуры DB2

Я определил хранимую процедуру с входными и выходными параметрами и получаю следующую ошибку, когда пытаюсь вызвать хранимую процедуру.

[SQL0312] Переменная KUNNR не определена или непригодна для использования.

Вот звонок:

CALL R3QA6DATA.SP_ADDRESS_CHANGES ('1999-12-31 23:59:59', '2016-06-01 23:59:59', :KUNNR,:KUNN2,:NAME1,:NAME2,:STRAS,:ORT01,: РЕГИОН,:PSTLZ,:LAND1,:TELF1,:TELFX,:DEFPA) GO

Вот хранимая процедура:

CREATE PROCEDURE R3QA6DATA.SP_ADDRESS_CHANGES 
(IN STARTDATE TIMESTAMP, IN ENDDATE TIMESTAMP, 
 OUT KUNNR GRAPHIC(10), OUT KUNN2 GRAPHIC(10), OUT NAME1 GRAPHIC(35), OUT NAME2 GRAPHIC(35), OUT STRAS GRAPHIC(35), OUT ORT01 GRAPHIC(35),
 OUT REGIO GRAPHIC(3), OUT PSTLZ GRAPHIC(10), OUT LAND1 GRAPHIC(3), OUT TELF1 GRAPHIC(16), OUT TELFX GRAPHIC(31), OUT DEFPA GRAPHIC(1) )

LANGUAGE SQL

BEGIN 
    SELECT DISTINCT 
         knvp.kunnr 
        , knvp.kunn2 
        , kna1.name1 
        , kna1.name2 
        , kna1.stras 
        , kna1.ort01 
        , kna1.regio 
        , kna1.pstlz  
        , kna1.land1 
        , kna1.telf1 
        , kna1.telfx 
        , knvp.defpa 
        INTO KUNNR, KUNN2, NAME1, NAME2, STRAS, ORT01, REGIO, PSTLZ, LAND1, TELF1, TELFX, DEFPA
    FROM 
        R3QA6DATA.KNA1 AS kna1 
        INNER JOIN  
        R3QA6DATA.ZMBCM AS zmbcm 
        ON  
        kna1.KUNNR = zmbcm.KUNAG 
        INNER JOIN 
        R3QA6DATA.KNVV AS knvv 
        ON 
        ( kna1.KUNNR = knvv.KUNNR ) 
        INNER JOIN 
        R3QA6DATA.KNVP AS knvp  
        ON 
        (  
            knvv.KUNNR = knvp.KUNNR  
            AND 
            knvv.VKORG = knvp.VKORG 
            AND 
            knvv.VTWEG = knvp.VTWEG 
            AND 
            knvv.SPART = knvp.SPART 
        ) 
    WHERE 
        kna1.MANDT = '010' 
        AND 
        knvp.PARVW IN ('WE', 'AG') 
        AND 
        ( 
            knvv.VKORG = zmbcm.VKORG 
            AND 
            knvv.VTWEG = zmbcm.VTWEG 
            AND 
            knvv.SPART = zmbcm.SPART 
        ) 
        AND 
        kna1.loevm = ' ' 
        AND 
        knvv.loevm = ' ' 
        AND 
        knvp.KUNN2 IN 
        ( 
            SELECT  
                SUBSTRING(bdcp2.tabkey, 4, 10) 
            FROM 
                R3QA6DATA.BDCP2 AS bdcp2 
            WHERE 
                bdcp2.mestype = 'DEBMAS' 
                AND 
                ( 
                    (  bdcp2.tabname = 'KNA1' 
                    AND 
                    bdcp2.fldname IN  
                    ('NAME1' 
                    , 'NAME2' 
                    , 'STRAS' 
                    , 'ORT01' 
                    , 'REGIO' 
                    , 'LAND1' 
                    , 'PSTLZ' 
                    , 'TELF1' 
                    , 'TELFX') ) 
                    OR 
                    (  bdcp2.tabname = 'KNVP' ) 
                ) 
                AND 
                (  
                    bdcp2.cretime > STARTDATE 
                    AND  
                    bdcp2.cretime < ENDDATE
                ) 
        ) 
        AND 
        zmbcm.STOREID = 4 ;
END 
Go

person Don    schedule 20.06.2016    source источник
comment
Откуда ты звонишь? KUNNR, по-видимому, не является допустимой переменной в момент вызова.   -  person Charles    schedule 21.06.2016
comment
Я звоню из Aqua Data Studio.... CALL R3QA6DATA.SP_ADDRESS_CHANGES ('1999-12-31 23:59:59', '2016-06-01 23:59:59', :KUNNR,:KUNN2,: ИМЯ1,:ИМЯ2,:STRAS,:ORT01,:РЕГИОН,:PSTLZ,:LAND1,:TELF1,:TELFX,:DEFPA)   -  person Don    schedule 21.06.2016
comment
Кажется маловероятным, что Aqua использует формат :KUNNR для переменных. Но я не знаком с продуктом. Вероятно, вам следует добавить тег для этого продукта к вашему вопросу.   -  person Charles    schedule 21.06.2016


Ответы (1)


В RPGLE или COBOL эта проблема обычно возникает, если у вас есть переменные, определенные во внешнем источнике и доступ к которым осуществляется через оператор COPY. Если это так в вашей проблеме, то попробуйте использовать источник через INCLUDE.

person Sekar    schedule 01.02.2017