डायनेमिक SQL आपके PL/SQL वेरिएबल को नहीं देख सकता है:आपको इसे एक स्ट्रिंग पास करने की आवश्यकता है जिसे SQL इंजन के दायरे में निष्पादित किया जा सकता है। इसलिए आपको टेबल के नाम को स्टेटमेंट के बॉयलरप्लेट टेक्स्ट के साथ जोड़ना होगा:
query1 := 'SELECT max(c) FROM ' || variable_name;
आपको क्वेरी के परिणाम को एक वेरिएबल में वापस करने की भी आवश्यकता है।
यहां बताया गया है कि यह कैसे काम करता है (मैंने आपके उदाहरण से कुछ अनावश्यक कोड निकाल दिए हैं):
DECLARE
c_table VARCHAR2(40);
c_obj VARCHAR2(20);
BEGIN
for lrec in ( select a as tab_name from A )
LOOP
EXECUTE IMMEDIATE 'SELECT max(object_ref) FROM ' || lrec.tab_name
into c_obj ;
dbms_output.put_line('Maximum value: '|| lrec.tab_name
|| '='|| c_obj);
END LOOP;
END;