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

oracle में sql कमांड को गतिशील रूप से बनाना और क्रियान्वित करना

Oracle का VARCHAR2 खाली स्ट्रिंग्स को NULL . के रूप में मानता है .
तो

if tname != '' then

के समान है

if tname != NULL then

जो NULL लौटाएगा TRUE . के बजाय चूंकि यह परिभाषित नहीं है।

आप NULL की जांच कर सकते हैं द्वारा tname IS NOT NULL

table_name user_tables . में अनिवार्य है हालांकि, इस जांच की कोई आवश्यकता नहीं है।

दो और बातें:

  1. चेक करें %NOTFOUND लाने के तुरंत बाद
  2. यदि संभव हो तो परिवर्तनीय घोषणाओं के लिए कॉलम-संदर्भों का उपयोग करें ( user_tables.table_name%TYPE )

तो आपका कोड ऐसा दिखाई दे सकता है:

DECLARE
  tname user_tables.table_name%TYPE;
  CURSOR ctable IS SELECT table_name FROM user_tables;
BEGIN
  OPEN ctable;
  LOOP
    FETCH ctable INTO tname;
    EXIT WHEN ctable%NOTFOUND;
    EXECUTE IMMEDIATE 'drop table ' || tname;
  END LOOP;
  CLOSE ctable;
END;

बेहतर पठनीयता के लिए आप एक निहित कर्सर का भी उपयोग कर सकते हैं:

BEGIN
  FOR cur IN ( SELECT table_name FROM user_tables ) LOOP
    EXECUTE IMMEDIATE 'drop table ' || cur.table_name;
  END LOOP;
END;



  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 से डर्बी - ConnectBy और डर्बी में समकक्ष के साथ प्रारंभ करें

  2. Oracle में दशमलव के बिना संख्या को प्रारूपित करने के 4 तरीके

  3. क्या ओरेकल पार्स की गई स्ट्रिंग/क्लोब पंक्ति से एकाधिक सबस्ट्रिंग वापस करने का तरीका प्रदान करता है?

  4. चर की जाँच करते समय गलत प्रकार की ओरेकल अभिव्यक्ति

  5. DLL "OraOps10.dll" लोड करने में असमर्थ