मेरे पास आपके लिए एक बढ़िया समाधान है, लेकिन आपको दो काम करने होंगे:
-
SQL को PL/SQL प्रोग्राम यूनिट के अंदर रखें। तो, हाँ, आपके द्वारा उल्लिखित संग्रहीत कार्यविधि के लिए।
-
12.2 इंस्टेंस पर उस प्रोग्राम यूनिट और सभी आश्रित तालिकाओं (अर्थात अपना एप्लिकेशन कोड इंस्टॉल करें) को संकलित करें (आप 12.2 को http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html या आप Cloud.oracle.com पर एक Exadata एक्सप्रेस क्लाउड सेवा खरीद सकते हैं या Cloud.oracle.com/tryit पर एक महीने के लिए बिना किसी लागत के एक का उपयोग करने के लिए $300 का क्रेडिट प्राप्त कर सकते हैं।
12.2 महत्वपूर्ण है क्योंकि जिस सुविधा का आप वास्तव में उपयोग करना चाहते हैं उसे पीएल/स्कोप कहा जाता है और यह एक कंपाइलर टूल है जो पीएल/एसक्यूएल पहचानकर्ता (11.1 के रूप में) और पीएल/एसक्यूएल (12.2 के अनुसार) के अंदर एसक्यूएल उपयोग के बारे में जानकारी एकत्र करता है।पी>
CREATE TABLE my_data (n NUMBER)
/
ALTER SESSION SET plscope_settings='identifiers:all, statements:all'
/
CREATE OR REPLACE PROCEDURE my_procedure (n_in IN NUMBER)
AUTHID DEFINER
IS
l_n my_data.n%TYPE;
CURSOR all_data_cur
IS
SELECT *
FROM my_data
FOR UPDATE OF n;
BEGIN
INSERT INTO my_data (n)
VALUES (n_in);
END;
/
SELECT idt.line,
idt.owner || '.' || idt.object_name code_unit,
idt.name column_name,
RTRIM (src.text, CHR (10)) text
FROM all_identifiers idt, all_source src
WHERE idt.usage = 'REFERENCE'
AND idt.TYPE = 'COLUMN'
AND idt.line = src.line
AND idt.object_name = src.name
AND idt.owner = src.owner
AND idt.object_name = 'MY_PROCEDURE'
ORDER BY code_unit, line
/
LINE CODE_UNIT COLUMN_NAME TEXT
4 STEVEN.MY_PROCEDURE N l_n my_data.n%TYPE;
10 STEVEN.MY_PROCEDURE N FOR UPDATE OF n;
12 STEVEN.MY_PROCEDURE N INSERT INTO my_data (n)
आशा है कि इससे मदद मिलेगी!
livesql.oracle.com पर पीएल/स्कोप के और भी कई उदाहरण। बस "pl/scope" (duh) खोजें।