Oracle का VARCHAR2
खाली स्ट्रिंग्स को NULL
. के रूप में मानता है .
तो
if tname != '' then
के समान है
if tname != NULL then
जो NULL
लौटाएगा TRUE
. के बजाय चूंकि यह परिभाषित नहीं है।
आप NULL
की जांच कर सकते हैं द्वारा tname IS NOT NULL
।
table_name
user_tables
. में अनिवार्य है हालांकि, इस जांच की कोई आवश्यकता नहीं है।
दो और बातें:
- चेक करें
%NOTFOUND
लाने के तुरंत बाद - यदि संभव हो तो परिवर्तनीय घोषणाओं के लिए कॉलम-संदर्भों का उपयोग करें (
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;