Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

PLS-00049 खराब बाइंड चर:

आप एक 'A' . के साथ varibales को बाँधने की बात कर रहे हैं शुरुआत में और कोई अंडरस्कोर नहीं, जैसे :OLD.AWitnessID , लेकिन आपका टेबल कॉलम सिर्फ WITNESS_ID है . इसलिए वे मेल नहीं खाते, और यह त्रुटि उत्पन्न करते हैं। आपके पास WITNESS_TYPE भी नहीं है कॉलम।

फिर अपने insert . में स्टेटमेंट आपके पास ऑडिट टेबल में कॉलम के नाम भी गलत हैं। आपने वेरिएबल को Update . पर भी सेट किया है लेकिन UPDATE के लिए जांच करें - याद रखें कि तुलना स्ट्रिंग मानों के लिए केस-संवेदी है।

यह आपके स्कीमा के साथ संकलित करता है:

CREATE OR REPLACE TRIGGER TRG_PLAUDWIT
AFTER INSERT OR DELETE OR UPDATE ON PL_WITNESS
FOR EACH ROW
DECLARE
  v_trigger_task varchar2(10);
BEGIN
  IF UPDATING THEN
    v_trigger_task := 'UPDATE';
  ELSIF DELETING THEN
    v_trigger_task := 'DELETE';
  ELSIF INSERTING THEN
    v_trigger_task := 'INSERT';
  ELSE
    v_trigger_task := NULL;
  END IF;

  IF v_trigger_task IN ('DELETE','UPDATE') THEN
    INSERT INTO PLAUDWIT (AUD_AWitnessID, AUD_AWitnessType, AUDIT_USER,
      AUDIT_DATE, AUDIT_ACTION)
    VALUES (:OLD.Witness_ID, :OLD.FK1_WITNESS_TYPE_ID, UPPER(v('APP USER')),
      SYSDATE, v_trigger_task);
  ELSE    
    INSERT INTO PLAUDWIT (AUD_AWitnessID, AUD_AWitnessType, AUDIT_USER,
      AUDIT_DATE, AUDIT_ACTION)
    VALUES (:NEW.Witness_ID, :NEW.FK1_WITNESS_TYPE_ID, UPPER(v('APP USER')),
      SYSDATE, v_trigger_task);
  END IF;
END TRG_PLAUDWIT;
/

SQL Fiddle कोई संकलन त्रुटि नहीं दिखा रहा है




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अपने Oracle सत्र के दिनांक स्वरूप की जांच कैसे करें

  2. स्पार्क त्रुटि - दशमलव परिशुद्धता 39 अधिकतम सटीकता 38 से अधिक है

  3. ईक्लिप्सलिंक का उपयोग करके इनपुट या आउटपुट के रूप में ओरेकल प्रकार के साथ ओरेकल स्टोर प्रक्रिया कॉल को कैसे संभालें?

  4. क्या MERGE क्वेरी को बेहतर बनाने का कोई तरीका है?

  5. शुरुआत और अंत के साथ दो पीएलएसक्यूएल कथन, अलग-अलग ठीक चलते हैं लेकिन एक साथ नहीं?