2009-12-22 13 views
6

मेरे पास एक SQL स्क्रिप्ट है जिसे TOAD में निष्पादित किया जा रहा है। वर्तमान में मैंने इसे कथन के बाद केवल कथन के साथ रखा है, इस प्रकार:TOAD स्क्रिप्ट में चर

select such-and-such from somewhere; 

delete other-thing from somewhere-else; 

और इसी तरह। कुछ खंड जहां दोहराए जाते हैं क्योंकि मेरे पास विशेष आईडी को संचालित करने के लिए जटिल आंतरिक प्रश्न हैं। मैं एक चर में लिपि की शुरुआत में आईडी को कैप्चर करना चाहता हूं, और उसके बाद उस चर का उपयोग उस खंड में करें जहां खंड हैं। तो इस तरह कुछ:

variable MY_ID = select the-ID from somewhere; 

select such-and-such from somewhere where ID = @MY_ID; 

स्पष्ट रूप से मैं उस वाक्यविन्यास को बना रहा हूं लेकिन यह वह कार्यक्षमता है जिसे मैं ढूंढ रहा हूं। लेकिन मुझे यकीन नहीं है कि क्या एक TOAD स्क्रिप्ट में यह संभव है। मुझे पता है कि मैं पूरी चीज को पीएल/एसक्यूएल ब्लॉक में बदल सकता हूं लेकिन मैं विभिन्न कारणों से ऐसा करने से बचने की कोशिश कर रहा हूं।

पीएल/एसक्यूएल ब्लॉक में परिवर्तित किए बिना TOAD का उपयोग करके ऐसा करने का कोई तरीका?

धन्यवाद,

~ जस्टिन

+0

मैं जवाब नहीं दे सकता, क्योंकि मैं TOAD से अपरिचित हूं, लेकिन PLSQL का उपयोग न करने के आपके कारण क्या हैं? –

+0

पीएल/एसक्यूएल पर स्विच न करने के कई कारण हैं। एक यह है कि यह 90% पहले से ही किया गया है और मुझे स्विच करने के लिए समय निवेश करने की तरह महसूस नहीं होता है। दो यह है कि पीएल/एसक्यूएल स्क्रिप्ट मेरे अनुभव से डीबग करना कठिन होता है और एक समय में एक कथन "चरणबद्ध" करना भी कठिन होता है। यह मेरे हिस्से पर ज्ञान की कमी हो सकती है क्योंकि मैं कोई पीएल/एसक्यूएल विशेषज्ञ नहीं हूं। तीसरा मैं इस स्क्रिप्ट को दूसरों को सौंप रहा हूं और फिर से अपने अनुभव से "सरल" एसक्यूएल स्क्रिप्ट पीएल/एसक्यूएल से निपटने में आसान है। – RationalGeek

उत्तर

9

मुझे लगता है कि यह आप जो चाहते हैं उसे पूरा करेंगे। आप एक बाइंड वैरिएबल घोषित कर सकते हैं, इसमें एक मूल्य डाल सकते हैं, और उसके बाद भविष्य के विवरणों में इसका उपयोग कर सकते हैं।

variable l_var varchar2(1); 

begin 
    select dummy 
    into :l_var 
    from dual; 
end; 

select * 
    from dual 
where dummy = :l_var; 
0

मैं अब सक्रिय रूप से मेंढक उपयोग करें, लेकिन बाँध के लिए मूल्यों की स्थापना के लिए कुछ तंत्र मानकों यानी select such-and-such from somewhere where ID = :myid; ऐसी है कि हर बार यह मेंढक होता है कि के लिए एक ही मूल्य की आपूर्ति नहीं होनी चाहिए पैरामीटर।

वैकल्पिक रूप से, आप एक सत्र संदर्भ मान या पीएल/एसक्यूएल पैकेज चर बना सकते हैं (नोट: पीएल/एसक्यूएल का उपयोग करने के लिए अपने पूरे कोड को फिर से लिखने के समान नहीं)। this question

+0

मुझे पता है कि आप बाइंड चर के साथ क्या कह रहे हैं। हालांकि, मैं एक अलग चयन कथन के मूल्य पर कब्जा करना चाहता हूं। प्रत्येक बार जब मैं स्क्रिप्ट चलाता हूं तो वैरिएबल संभावित रूप से एक अलग मूल्य होता है। – RationalGeek

+0

तो जब भी आप इसे चलाते हैं तो शुरुआत में इसे अलग-अलग सेट करें।यदि आप पैकेज मार्ग पर जाते हैं (थॉमस जोन्स-लो का उदाहरण लेते हैं) तो अपना पहला स्टेटमेंट foo.myVar: = 'जो भी मुझे इस समय चाहिए'; अंत; – Dan

0

TOAD में "परिकलित फ़ील्ड" सुविधा वास्तव में सही तरीके से उपयोग होने पर काफी शक्तिशाली है। यह एक "टोकन" स्क्रिप्ट संपादक से अधिक कुछ नहीं है जो स्वयं को क्वेरी में संलग्न करता है। यह केवल क्वेरी डिजाइन संपादक के माध्यम से उपलब्ध है, न कि मूल संपादक से, जो आपको सीधे एसक्यूएल लिखने की अनुमति देता है।

एक संकेत के रूप में, अगली बार जब आप TOAD में एक क्वेरी तैयार करते हैं और जटिल WHERE या उप-क्वेरी बनाने की आवश्यकता होती है, तो "परिकलित फ़ील्ड" सुविधा आज़माएं और मूल रूप से किसी दिए गए कॉलम पर अपनी शर्तों को संलग्न करने के लिए FORMS विकल्प का उपयोग करें या क्वेरी। आप आश्चर्यचकित होंगे कि यह कितना शक्तिशाली है। और यह आपकी SQL क्वेरी को एक अच्छे पठनीय प्रारूप में रखने में मदद करता है।

1

मैं एसक्यूएल * प्लस प्रतिस्थापन चर का उपयोग करता हूं। वे TOAD द्वारा समर्थित हैं। आप F5 दबाकर इस कोड को निष्पादित कर सकते हैं।

COLUMN VAR NEW_VALUE VAR_VALUE 

SELECT 'SOMETHING' VAR FROM DUAL; --this sets 'VAR_VALUE' = 'SOMETHING' 

SELECT '&VAR_VALUE' FROM DUAL; --this uses the value set by the previous stmt. 
+0

लिखित के रूप में, यह भी एक अच्छा जवाब है: आप कई चर भी कर सकते हैं और पूरी चीज को टॉड में एक स्क्रिप्ट के रूप में चलाया जा सकता है। उपर्युक्त उत्तर में अंतिम विवरण स्वयं को एक ही प्रश्न के रूप में निष्पादित किया जा सकता है, और टोड आपको प्रत्येक 'और' प्रकार चर के लिए संकेत देगा; हालांकि, यहां तक ​​कि यदि आपके सभी चर के समान नाम हैं, तो टोड आपको प्रत्येक के लिए संकेत देगा। –

संबंधित मुद्दे