क्या आप कृपया कुछ टेबल परिभाषाएं और नमूना क्वेरी पोस्ट कर सकते हैं जो आप करने का प्रयास कर रहे हैं? मुझे 100% यकीन नहीं है कि आप क्या कर रहे हैं, लेकिन संग्रहीत प्रक्रियाओं/कार्यों का उपयोग करके "गतिशील" SQL के कुछ रूप हैं:
- एक फ़ंक्शन बनाएं जो इनपुट पैरामीटर (यानी श्रेणी प्रकार, शैली आईडी, ईवेंटनाम, क्षेत्र आईडी) लेता है और उन मानों को "स्थिर" SQL अनुरोध में प्लग करता है। यहां आपके मामले के लिए एक नमूना क्वेरी स्निपेट दिया गया है:
यहाँ एक वास्तविक उदाहरण है:
CREATE OR REPLACE FUNCTION SP_IGLGetItem(
pItemId INTEGER
)
RETURNS TABLE(
ItemId INTEGER,
ItemName VARCHAR(100),
ItemCategory CHAR(2)
AS
$$
BEGIN
RETURN QUERY
SELECT i.ItemId, i.ItemName, i.ItemCategory
FROM Item i
WHERE (i.ItemId = pItemId OR pItemId IS NULL) -- Return single item (if specified, otherwise return all)
;
END;
$$
LANGUAGE 'plpgsql';
-
एसक्यूएल युक्त एक स्ट्रिंग बनाएं जिसे आप विभिन्न स्थितियों, पैरामीटर मानों आदि के आधार पर गतिशील रूप से निष्पादित करना चाहते हैं। यह उतना ही गतिशील है जितना आप प्राप्त कर सकते हैं।
-
अपने इनपुट पैरामीटर के मानों के आधार पर अलग-अलग "स्थिर" SQL कथन सशर्त रूप से चलाएं।
क्या इनमें से कोई आपकी स्थिति से मेल खाता है?
पीएल/पीजीएसक्यूएल केवल पोस्टग्रेज में संग्रहीत प्रक्रियाओं/कार्यों को लिखने के लिए उपयोग की जाने वाली भाषा है। यदि आपको वास्तव में गतिशील एसक्यूएल पीढ़ी की आवश्यकता है, तो आप पीएल/पीजीएसक्यूएल का उपयोग करके एक फ़ंक्शन लिखना सबसे अच्छा शर्त है।
एक अन्य विकल्प है कि आप अपने क्लाइंट एप्लिकेशन में जो एसक्यूएल चाहते हैं उसे गतिशील रूप से जेनरेट करें और फिर उस एसक्यूएल को सीधे निष्पादित करने के लिए सबमिट करें।