2013-04-16 8 views
13

मैं PostgreSQL के लिए नया हूँ। मैं pgScript की आवश्यकता को समझने में विफल रहा हूं, जिसे pgAdmin टूल का उपयोग करके निष्पादित किया जा सकता है। जब इसका इस्तेमाल किया जाना चाहिए? यह क्या कर सकता है कि plpgSQL नहीं कर सकता? माइक्रोसॉफ्ट एसक्यूएल सर्वर में इसके बराबर क्या है?PostgresSQL में pgScript का उद्देश्य क्या है?

+4

'pgScript' 'pgAdmin-III' की एक विशेषता है PostgreSQL नहीं, नाम वास्तव में थोड़ा दुर्भाग्यपूर्ण है, यह' pgAdminScript' होना चाहिए। मैंने इसे अभ्यास में कभी नहीं देखा है, हालांकि मुझे यकीन है कि लोग * इसका उपयोग करते हैं; मैं हमेशा पीएल/पीजीएसक्यूएल के साथ सादा 'psql' के साथ अपना काम करता हूं, और जहां पायथन या पर्ल स्क्रिप्ट्स के साथ जरूरी है जो' psycopg2' (पायथन) या 'डीबीआई' और 'डीबीडी :: पीजी' (पर्ल) –

+0

पर पोस्टग्रेएसक्यूएल से बात करते हैं लगता है कि "निष्पादित पीजीस्क्रिप्ट" लेनदेन के हिस्से के रूप में बयानों को चलाने से बचाता है, जो आप डेटाबेस के समूह को हटाते समय मदद कर सकते हैं। – beldaz

उत्तर

10

pgScript क्लाइंट-साइड स्क्रिप्टिंग भाषा है, जबकि pl/PgSQL सर्वर पर चलता है। इसका मतलब है कि उनके पास पूरी तरह से अलग-अलग मामलों का उपयोग है। उदाहरण के लिए, पीजीस्क्रिप्ट लेनदेन की स्थिति का प्रबंधन कर सकता है जबकि पीएल/पीजीएसक्यूएल नहीं कर सकता है, लेकिन पीजीस्क्रिप्ट का उपयोग एसक्यूएल की भाषा को बढ़ाने के लिए किया जा सकता है जबकि पीजीस्क्रिप्ट ऐसा नहीं कर सकता है।

इसके अतिरिक्त इसका मतलब है कि दोनों क्वेरी योजनाओं से गतिशील एसक्यूएल तक कई अलग-अलग चीजों को संभाल लेंगे, और जबकि पीजीस्क्रिप्ट को प्रश्न/पीजीएसक्यूएल के बीच राउंड ट्रिप की आवश्यकता नहीं है।

-1

मैंने टॉड डेटा मॉडलर से डीडीएल स्क्रिप्ट जेनरेटर का उपयोग किया।

मैं pgAdmin-III में सामान्य क्वेरी निष्पादन का उपयोग करके स्क्रिप्ट चलाने पर है लेकिन यह मुझे त्रुटि दे रखा:
"त्रुटि:: संबंध" उपयोगकर्ता "42P07 पहले से ही एसक्यूएल राज्य मौजूद है"।

मैंने PgAdmin-III में पीजीस्क्रिप्ट निष्पादित किया और यह ठीक काम किया।

2

पीजीस्क्रिप्ट के लिए एक प्रयोग वैरिएबल को परिभाषित करना और बाद में अपने एसक्यूएल में उपयोग करना है।

उदाहरण के लिए, आप कुछ इस तरह कर सकता है:

declare @mytbl, @maxid; 
set @mytbl = 'sometable'; 
set @maxid = 2500; 
set @res = select count(*) from @mytbl where id <= @maxid; 
print @res; 

यह दृष्टिकोण बस किसी भी चर आप अपनी स्क्रिप्ट के शीर्ष पर बदलने के लिए है, बजाय उन जटिल एसक्यूएल प्रश्नों के अंदर गहरे दफन हो रही चाहते है ।

बेशक, पीजीस्क्रिप्ट एक फीचर है जो केवल पीजीएडमिन III क्लाइंट के अंदर उपलब्ध है जैसे कि {{क्रेग रिंगर} उसकी टिप्पणी में उल्लिखित है।

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