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

ट्रिगर के अंदर अपवाद कैसे बढ़ाएं? क्या इसे करने का कोई तरीका है?

तुम लगभग वहां थे; यदि आप कुछ भी घोषित करना चाहते हैं तो आपको एक ट्रिगर में DECLARE ब्लॉक की आवश्यकता है; इसका मतलब है कि आपका WHEN क्लॉज गलत जगह पर है।

create or replace trigger trig1
 before update
 of sal
 on emp
 for each row
 when (new.sal < old.sal)

declare    
   user_xcep EXCEPTION;
   PRAGMA EXCEPTION_INIT( user_xcep, -20001 );
begin
   raise user_xcep;
end;

एसक्यूएल फिडल

कुछ बिंदु:

  1. कभी नहीं एक अपवाद पकड़ें और फिर DBMS_OUTPUT को कॉल करें।PUT_LINE; यह व्यर्थ है। प्रत्येक रिकॉर्ड के लिए परिणाम देखने के लिए किसी को वहां होना चाहिए। यदि आप कुछ नहीं करना चाहते हैं तो अपवाद उठाएं और फिर उसे पकड़ लें। मैंने आपके अपवाद में एक त्रुटि कोड जोड़ा है ताकि आप इसे ट्रिगर के बाहर पकड़ सकें और इसे अपनी इच्छानुसार संभाल सकें (stdout पर कुछ भी प्रिंट न करें)।
  2. यह एक छोटी सी बात है लेकिन मैंने थोड़ा खाली स्थान जोड़ा है; बहुत ज्यादा नहीं। मैं शुरू में नहीं देख सका कि आपके कोड में समस्या कहाँ थी क्योंकि आपके पास कोई कोड नहीं था।
  3. अपवाद घोषणा और RAISE के बाद आप सेमी-कोलन याद कर रहे थे।

दस्तावेज़ीकरण में आंतरिक रूप से परिभाषित अपवादों के बारे में और पढ़ें




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00054:संसाधन व्यस्त है और NOWAIT निर्दिष्ट या समय समाप्त होने के साथ प्राप्त करें

  2. Oracle SQL डेवलपर का उपयोग करके टेक्स्ट फ़ाइल में CLOB निर्यात करना

  3. Oracle डेटाबेस में तत्काल निष्पादन के साथ ALTER और DROP तालिका DDL

  4. web.config asp.net में oracle डेटाबेस कनेक्शन

  5. SQLcl स्वरूपण विकल्प (ओरेकल)