2016-06-20 8 views
0

Ich habe eine gespeicherte Prozedur mit Eingabe- und Ausgabeparametern definiert und erhalte den folgenden Fehler, wenn ich versuche, die gespeicherte Prozedur aufzurufen.Fehler beim Aufrufen der gespeicherten DB2-Prozedur

[SQL0312] Variable KUNNR nicht definiert oder nicht verwendbar. Hier

ist der Ruf:

CALL-R3QA6DATA.SP_ADDRESS_CHANGES ('1999-12-31 23.59.59', '2016.06.01 23.59.59': KUNNR,: KUNN2, : NAME1,: NAME2: STRAS,: ORT01,: REGIO,: PSTLZ,: LAND1,: TELF1,: TELFX,: DEFPA)

GO ist die gespeicherte Prozedur:

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 
+0

Woher rufen Sie es an? KUNNR ist anscheinend keine gültige Variable zum Zeitpunkt des Aufrufs. – Charles

+0

Ich rufe es von Aqua Data Studio .... RUFEN Sie R3QA6DATA.SP_ADDRESS_CHANGES ('1999-12-31 23:59:59', '2016-06-01 23:59:59',: KUNNR,: KUNN2, : NAME1,: NAME2,: STRAS,: ORT01,: REGIO,: PSTLZ,: LAND1,: TELF1,: TELFX,: DEFPA) GO – Don

+0

Es erscheint unwahrscheinlich, dass Aqua das '' KUNNR'-Format für Variablen verwendet. Aber ich kenne das Produkt nicht. Sie sollten wahrscheinlich ein Tag für dieses Produkt zu Ihrer Frage hinzufügen. – Charles

Antwort

0

In RPGLE oder COBOL Dieses Problem tritt normalerweise auf, wenn die Variablen in einer externen Quelle definiert sind und über die COPY-Anweisung zugegriffen wird. Wenn dies bei Ihrem Problem der Fall ist, versuchen Sie, die Quelle über INCLUDE zu verwenden.