2010-10-21 24 views
0

Je reçois une erreur lorsque vous essayez d'exécuter une requête de mise à jour dans la clé engager déclencheur dans l'oracle d2k l'erreur est: identifiant » doit être déclarerErreur lors de la tentative d'exécuter une instruction de mise à jour et d'obtenir identifiant <table name> doit être déclarer

le code complet est le suivant: ---

DECLARE 
LS_STATUS VARCHAR2(1); 
LS_COUNT VARCHAR2(3); 
BEGIN 
    GO_BLOCK('BOO_BLOCK_CAST'); 
    LS_COUNT:=0; 
    IF :BOO_BLOCK_CAST.NBT_CAST_NO IS NOT NULL THEN 
     GO_BLOCK('V_MM_FG_STOCK'); 
     FIRST_RECORD; 
     LOOP 
      IF :V_MM_FG_STOCK.QNTY_PRODUCT =:QNTY_PRODUCT THEN    
      IF :V_MM_FG_STOCK.BUNDLE_ID IS NOT NULL THEN 
       IF :V_MM_FG_STOCK.NBT_CHK_BOX = 'Y' AND :V_MM_FG_STOCK.LN_PRODUCT < 12 THEN 
        BEGIN 
        UPDATE V_MM_FG_STOCK 
         SET MFS_CD_PROD_ACTL = '300', 
          MFS_SEC2_ACTL  = :V_MM_FG_STOCK.SEC2_ACTL,  
       MFS_LN_PRODUCT  = :V_MM_FG_STOCK.LN_PRODUCT, 
       MFS_QNTY_PRODUCT = :V_MM_FG_STOCK.QNTY_PRODUCT, 
          MFS_IND_AMEND  = 'A', 
        MFS_STATUS   = 'A'  
            WHERE MFS_BUNDLE_ID = :V_MM_FG_STOCK.BUNDLE_ID; 
            COMMIT; 
            LS_COUNT := LS_COUNT + 1; 
           EXCEPTION 
            WHEN NO_DATA_FOUND THEN 
             MESSAGE(SQLERRM); 
             MESSAGE(SQLERRM,NO_ACKNOWLEDGE); 
            WHEN OTHERS THEN 
             MESSAGE (SQLERRM); 
             MESSAGE (SQLERRM,NO_ACKNOWLEDGE); 
           END;        
       ELSE 
       MESSAGE('NO MORE BILLETS FOR THIS CAST NO.'); 
       MESSAGE('NO MORE BILLETS FOR THIS CAST NO.',NO_ACKNOWLEDGE); 
       RAISE FORM_TRIGGER_FAILURE; 
       END IF; 
      ELSE 
       GO_BLOCK('V_MM_FG_STOCK'); 
       NEXT_RECORD;     
      END IF; 
      ELSE 
      MESSAGE ('NEW QUANTITY SHOULD NOT BE MORE THAN OLD QUANTITY...'); 
      RAISE FORM_TRIGGER_FAILURE; 
      EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';     
     NEXT_RECORD;  
     END IF;  
     END LOOP; 
     ELSE 
     MESSAGE('PLEASE ENTER THE CAST NO. FIRST'); 
     MESSAGE('PLEASE ENTER THE CAST NO. FIRST',NO_ACKNOWLEDGE); 
     raise form_trigger_failure; 
     END IF; 
     commit_form; 
END; 

wherever--

V_MM_FG_STOCK is table name, 
BOO_BLOCK_CAST is table name, 

pls me suggèrent aussi vite que possible ... Je suis impatient de mieux pour sa réponse ..... très très merci d'avance ........ plz aidez-moi ...

Répondre

1

Vérifiez si tous les noms de colonne sont correctement orthographiés. Vérifiez si la table a un synonyme public.

+0

également vérifier, si vous avez des subventions pour mettre à jour/sélectionner cette table –

0

S'il s'agit d'un nom de table et que vous n'avez pas créé de bloc de données, assignez d'abord la valeur de ce champ dans la variable. déclarez une variable et affectez la valeur de ces champs dans la variable, puis essayez de la mettre à jour. Aussi, d'après ce que je comprends, vous ne pouvez pas utiliser les navigations dans ceci.