अधिकांश SQL क्लाइंट उस लाइन और कॉलम की रिपोर्ट करेंगे जहां त्रुटि हुई थी। यदि आपके पास एक अच्छा IDE नहीं है, तो DBMS_SQL
का उपयोग करें ।
एसक्यूएल क्लाइंट
अधिकांश SQL IDE त्रुटि की रेखा और स्तंभ संख्या को हाइलाइट करेंगे। यहां तक कि SQL*Plus ठीक वही दिखाता है जहां अमान्य संख्या त्रुटि होती है:
SQL> select *
2 from dual
3 where 1 = 1
4 and 1 = 'a'
5 and 2 = 2;
and 1 = 'a'
*
ERROR at line 4:
ORA-01722: invalid number
(दुर्भाग्य से, Oracle SQL डेवलपर यह कार्यक्षमता प्रदान नहीं करता है।)
DBMS_SQL
यदि आपकी पसंद के SQL टूल सीमित हैं, तो भी आप DBMS_SQL.LAST_ERROR_POSITION
का उपयोग करके प्रासंगिक लाइन नंबर ढूंढ सकते हैं। ।
declare
v_sql clob := q'[
select *
from dual
where 1 = 1
and 1 = 'a'
and 2 = 2
]';
v_cursor integer;
v_ignore number;
begin
v_cursor := dbms_sql.open_cursor;
dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);
v_ignore := dbms_sql.execute(v_cursor);
exception when others then
dbms_output.put_line(sqlerrm);
dbms_output.put_line('Error starts here: '||
substr(v_sql, dbms_sql.last_error_position));
end;
/
Results:
ORA-01722: invalid number
Error starts here: 'a'
and 2 = 2
(यह उत्तर मानता है कि आप सीधे SQL कथन चला सकते हैं। यदि त्रुटि PL/SQL प्रोग्राम का हिस्सा है, तो तथ्य के बाद SQL कथन के अंदर लाइन नंबर खोजने का कोई आसान तरीका नहीं है, जब तक कि आप इसे चलाने में सक्षम न हों फिर से DBMS_SQL
. के माध्यम से . सटीक संदर्भ यहाँ महत्वपूर्ण है।)