आपके यहाँ कुछ अलग प्रश्न हैं।
प्रश्न: एएनएसआई मानक एसक्यूएल फ़ंक्शन क्या हैं?
ANSI मानक कार्य AVG, COUNT, MIN, MAX जैसी चीज़ें हैं। वे 1992 के एएनएसआई मानक में शामिल हैं , लेकिन यह एक सूखी, उबाऊ पढ़ने की एक बिल्ली है।
प्रश्न: क्या एएनएसआई मानक एसक्यूएल फ़ंक्शन डेटाबेस में डेटा बदलते हैं?
नहीं। आप डेटा बदलने के लिए उनका उपयोग कर सकते हैं - उदाहरण के लिए, मैं कह सकता हूं:
INSERT INTO dbo.MyReport SELECT MAX(SalespersonRevenue) FROM dbo.Sales
लेकिन स्वयं के द्वारा, केवल AVG, COUNT, MIN, MAX, आदि का उपयोग आपके डेटाबेस के अंदर स्थायी रूप से डेटा नहीं बदलना चाहिए।
प्रश्न: क्या एएनएसआई मानक मुझे अपने कार्यों को लिखने की अनुमति देता है?
हां, लेकिन सटीक कार्यान्वयन विक्रेता से विक्रेता तक भिन्न होता है। आपके द्वारा लिखे गए कार्य एएनएसआई भाषा मानक के अनुरूप हो सकते हैं, लेकिन आप अपने कार्य के अंदर जो करते हैं वह भयानक रूप से भयानक हो सकता है, जैसे साइड इफेक्ट्स बनाना।
- इच्छित व्यवहार पर चर्चा करते समय , क्रॉस-प्लेटफ़ॉर्म उत्तर प्राप्त करना संभव है।
- साइड इफेक्ट्स पर चर्चा करते समय , यह नहीं है।
प्रश्न: क्या मैं डेटा लिखने के लिए अपना स्वयं का फ़ंक्शन बना सकता हूं?
क्यों यकीन है, अगर आप रचनात्मक हैं। मैं एक Microsoft SQL सर्वर आदमी हूँ, इसलिए मैं उस प्लेटफ़ॉर्म पर ध्यान केंद्रित करने जा रहा हूँ। पुस्तकें ऑनलाइन के समारोह पृष्ठ कहते हैं:
उपयोगकर्ता-परिभाषित फ़ंक्शन का उपयोग उन क्रियाओं को करने के लिए नहीं किया जा सकता है जो डेटाबेस स्थिति को संशोधित करते हैं।
जिस पर मैं कहता हूं:
तुम मेरे असली पिता नहीं हो।
तो यहाँ है कि मैं नियम कैसे तोड़ूँगा। चेतावनी: बहुत बुरे विचारों का पालन करते हैं।
- अपने फ़ंक्शन में, इस बुरे उद्देश्य के लिए विशेष रूप से बनाई गई एक नई तालिका को क्वेरी करें, और फिर कुछ ऐसा बनाएं जो चयनित बयानों के लिए तालिका देखता है, और फिर एक कार्रवाई (विस्तारित ईवेंट, ऑडिटिंग या एक प्रॉइलर ट्रेस) को आग लगाता है। आप उन चुनिंदा कथनों के आधार पर काम करने के लिए एक साथ एक रब गोल्डबर्ग तरह के गर्भनिरोधक को हुक कर सकते हैं।
- फ़ंक्शन में, सीएलआर कोड - हेक को कॉल करें , आप एक वेब सेवा भी कॉल कर सकते हैं । वह वेब सेवा आपके डेटाबेस में डेटा को बहुत अच्छी तरह से पीछे धकेल सकती है।
- फ़ंक्शन में, xp_cmdshell को कॉल करें और कमांड प्रॉम्प्ट के माध्यम से कुछ करें । (टिप्पणियों में HT @AaronBertrand।)
इन सभी उदाहरणों में प्रदर्शन और लेन-देन की निरंतरता के रूप में बड़ी कमियां हैं। आपने अभी पूछा कि क्या यह सैद्धांतिक रूप से किया जा सकता है, और इसका उत्तर हां है। मैं कभी भी अपने कोड में उन दोनों में से किसी का भी उपयोग नहीं करूंगा - मैं वापस कदम रखूंगा और पूछूंगा, "मैं यहां क्या हासिल करने की कोशिश कर रहा हूं, व्यापार का लक्ष्य क्या है, और क्या ऐसा कोई तरीका है जिससे मैं प्रदर्शन और लेन-देन की निरंतरता प्राप्त कर सकता हूं ? " यदि आप उन पर विशिष्ट सलाह चाहते हैं, तो मैं विशेष के साथ एक अलग स्टैक प्रश्न पूछूंगा।