2012-01-30 21 views
0

我米執行以下操作:db2:預期令牌可能包括:「<values>」。 LINE NUMBER = 1。 SQLSTATE = 42601

db2 -tvsf ./sql/update_product.sql 

我已經使用蝕編輯update_product.sql和移動的文件到UNIX框。在執行之前,我也刪除了update_product.sql^M字符。

,我發現了以下錯誤:

Database Connection Information 

Database server  = DB2/AIX64 9.7.0 
SQL authorization ID = CGO_USER 
Local database alias = JPN_DEV 


DECLARE BEGIN DECLARE v_eisidentifier VARCHAR(100) 
DB21034E The command was processed as an SQL statement because it was not a 
valid Command Line Processor command. During SQL processing it returned: 
SQL0104N An unexpected token "DECLARE BEGIN DECLARE v_eisidentifier VARC" was 
found following "BEGIN-OF-STATEMENT". Expected tokens may include: 
"<values>". LINE NUMBER=1. SQLSTATE=42601 

以下是在SQL文件:

CONNECT TO JPN_DEV USER devuser USING password; 

    DECLARE 

    BEGIN 

    DECLARE v_eisidentifier VARCHAR(100); 
DECLARE v_categoryGuid DECIMAL(19,0); 
DECLARE v_localeGuid DECIMAL(19,0); 
DECLARE v_realmGuid DECIMAL(19,0); 
DECLARE v_catchingPhrase VARCHAR(120) ; 
DECLARE v_genericName VARCHAR(80); 
DECLARE v_ingredients VARCHAR(900); 
DECLARE v_quantity VARCHAR (60); 
DECLARE v_dose VARCHAR(40); 
DECLARE v_nutritionFacts VARCHAR (900); 
DECLARE v_productDescription VARCHAR (900); 
DECLARE v_recommendedFor VARCHAR (200); 
DECLARE v_promotionMessage VARCHAR (200); 
DECLARE v_message VARCHAR (4500); 


DECLARE C1 CURSOR FOR 
    SELECT 
      EISIDENTIFIER, 
      CATEGORY_GUID, 
      LOCALEGUID, 
      REALMGUID, 
      CATCHING_PHRASE, 
      GENERIC_NAME, 
      INGREDIENTS, 
      QUANTITY, 
      DOSE, 
      NUTIRITION_FACTS, 
      PRODUCT_DESCRIPTION, 
      RECOMMENDED_FOR, 
      PROMOTION_MESSAGE, 
      MESSAGE 
     FROM 
      TEMP_UPLOAD_PRODUCT_ATTRIBUTES; 

     FETCH C1 into :v_eisidentifier,  
         :v_categoryGuid, 
         :v_localeGuid, 
         :v_realmGuid, 
         :v_catchingPhrase, 
         :v_genericName, 
         :v_ingredients, 
         :v_quantity, 
         :v_dose, 
         :v_nutritionFacts, 
         :v_productDescription 
         :v_recommendedFor, 
         :v_promotionMessage, 
         :v_message 
     ; 
     DECLARE v_proudctGuid; 
     WHILE (SQLCODE=0) 
     DO 
      IF EXISTS (SELECT 1 FROM PRD_PRODUCT WHERE EISIDENTIFIER = :v_eisidentifier) 
      THEN 
       SELECT GUID INTO :v_productGuid where PRD_PRODUCT WHERE EISIDENTIFIER = :v_eisidentifier;      
       UPDATE PRD_PRODUCT_L10N 
       SET CATEGORY_GUID = :v_categoryGuid, 
        REALMGUID = :v_realmGuid, 
        CATCHING_PHRASE =:v_catchingPhrase, 
        GENERIC_NAME =:v_genericName, 
        INGREDIENTS =:v_ingredients, 
        QUANTITY=:v_quantity, 
        DOSE=:v_dose, 
        NUTIRITION_FACTS=:v_nutritionFacts, 
        PRODUCT_DESCRIPTION=:v_productDescription, 
        RECOMMENDED_FOR:=v_recommendedFor, 
        PROMOTION_MESSAGE:=v_promotionMessage, 
        MESSAGE:=v_message 
       WHERE PRODUCTGUID =:v_proudctGuid and LOCALGUID =:v_categoryGuid; 
       IF SQLCODE <> 0 THEN 
        DBMS_OUTPUT.PUT_LINE ('ERROR:' || SUBSTR(SQLERRM,1,175)); 
       END IF 

      ELSE 
       -- INSERT INTO --- should not be the case.... 
       DBMS_OUTPUT.PUT_LINE ('WARNING: THE PRODUCT' || :v_eisidentifier || ' NOT FOUND IN THE DATABASE'); 
      END IF; 

      IF EXISTS (SELECT 1 FROM PRD_PRODUCT_CATEGORY WHERE CATEGORY_GUID=:v_categoryGuid AND PRODUCT_GUID=:v_productGuid) 
       DBMS_OUTPUT.PUT_LINE ('WARNING: PRODUCT NOT FOUND IN THE DATABASE'); 
      ELSE 
       INSERT INTO PRD_PRODUCT_CATEGORY (CATEGORY_GUID, PRODUCT_GUID) VALUES (:v_categoryGuid,:v_productGuid); 
       IF SQLCODE <> 0 THEN 
        DBMS_OUTPUT.PUT_LINE ('ERROR: COULD NOT INSERT categoryGuid: ' || :v_categoryGuid || ' productGuid: ' || :v_productGuid || 'in PRD_PRODUCT_CATEGORY table'); 
        DBMS_OUTPUT.PUT_LINE ('ERROR:' || SUBSTR(SQLERRM,1,175)); 
       END IF 
      END IF; 

      FETCH C1 into :v_productGuid, 
         :v_categoryGuid, 
         :v_localeGuid, 
         :v_realmGuid, 
         :v_catchingPhrase, 
         :v_genericName, 
         :v_ingredients, 
         :v_quantity, 
         :v_dose, 
         :v_nutritionFacts, 
         :v_productDescription 
         :v_recommendedFor, 
         :v_promotionMessage, 
         :v_message 
      ; 
     END WHILE; 

END ; 
COMMIT; 

請指教。

回答

1

在連接語句後,您似乎還有一個額外的DECLARE

+0

啊,哦......我想不起來......謝謝。我現在修改它作爲下..我仍然錯過了很多東西..我用suggetion和行終止符作爲@修改它,但仍然得到錯誤:SQL0104N在「」後找到一個意外的令牌「DECLARE」 」。 預期代幣可能包括:「NEW」。 SQLSTATE = 42601 – beetri 2012-01-30 22:36:13

相關問題