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

एसक्यूएल प्लस ट्रिगर संकलन त्रुटियां

यह ट्रिगर नहीं है, यह डेटा प्रकार है। यदि आप किसी तिथि को किसी अन्य तिथि से घटाते हैं, तो परिणाम एक अंतराल होता है, कोई अन्य तिथि नहीं:

CREATE TABLE dates (date1 DATE, date2 DATE, datediff DATE, numdiff NUMBER);
INSERT INTO dates (date1, date2) VALUES (sysdate, sysdate-1);

UPDATE dates SET numdiff = date1 - date2;
1 rows updated

UPDATE dates SET datediff = date1 - date2;
SQL Error: ORA-00932: inconsistent datatypes: expected DATE got DATE JULIAN

इसलिए, यदि ट्रिगर अंतराल को किसी संख्या में संग्रहीत करता है, तो यह संकलित करता है:

CREATE OR REPLACE TRIGGER newtriggernum
  BEFORE INSERT ON dates FOR EACH ROW
BEGIN
  :new.numdiff := :new.date1 - :new.date2;
END;
/
TRIGGER NEWTRIGGERNUM compiled

और यदि यह अंतराल को किसी तिथि में संग्रहीत करता है, तो यह नहीं करता है:

CREATE OR REPLACE TRIGGER newtriggerdate
  BEFORE INSERT ON dates FOR EACH ROW
BEGIN
  :new.datediff := :new.date1 - :new.date2;
END;
/
Error(2,11): PL/SQL: ORA-00922: missing or invalid option


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या ओरेकल में बाइंड वेरिएबल्स के माध्यम से कॉलम नामों को संदर्भित करना संभव है?

  2. किसी दिए गए पैकेज में घोषित सभी प्रकार के डेटा की जानकारी कैसे प्राप्त करें

  3. हाइबरनेट अपवाद क्वेरी ठीक से समाप्त नहीं हुई

  4. मानों की सूची के विरुद्ध सबस्ट्रिंग क्वेरी करना

  5. ओरेकल व्यू पर प्राथमिक कुंजी कैसे जोड़ें?