मुझे नहीं पता कि आप वास्तव में क्या हासिल करना चाहते हैं, लेकिन हो सकता है कि आप पैकेज DBMS_SQL
का उपयोग करने का प्रयास करें। और यह विधि है PARSE
. यह केवल डीएमएल के साथ काम करता है केवल बयान। Oracle SQL डेवलपर यही करता है।
यह पार्सर डीएमएल स्टेटमेंट के लिए भी इस्तेमाल किया जा सकता है। पीएल/एसक्यूएल के लिए इसे कुछ ट्विकिंग की आवश्यकता होगी। जहाँ तक मुझे पता है किसी ने भी Oracle के DDL के लिए एक वास्तविक पूर्णतः मान्य पार्सर बनाने के लिए पर्याप्त समय नहीं बिताया।
यहां एक उदाहरण है कि मैं इसका उपयोग कैसे करता हूं:
declare
l_cursor number := dbms_sql.open_cursor;
l_offset number := -1 ;
begin
begin
dbms_sql.parse( l_cursor, :st, dbms_sql.native );
exception when others then
l_offset := dbms_sql.last_error_position;
end;
dbms_sql.close_cursor( l_cursor );
:off := l_offset;
end;
बस इस ब्लॉक को निष्पादित करें। VARCHAR2(String) (अधिकतम 32KB) प्रकार का एक इनपुट पैरामीटर और एक आउटपुट पैरामीटर NUMBER पास करें।