Wednesday 15 September 2010

sql server 2008 - Evaluation of deterministic functions -


स्टॉपलाइटस्टैटस

  1 - लाल 2 - पीला 3 - ग्रीन   

चूंकि यह एक नियतात्मक फ़ंक्शन है ...

  निर्माण करें dbo.udf_StoplightStatusRed () रिटर्न के रूप में वापस कैस के रूप में TINYINT रिटर्न (1 TINYINT के रूप में) END   

क्या यह करना सुरक्षित है ...

  का चयन करें [स्थिति] = केस स्टॉपलाइट स्टैटुसड कब dbo.udf_StoplightStatusRed () तब से 1 ELSE 0 END से dbo.StoplightAudit जहां StopLightStatusID = dbo Udf_StoplightStatusRed ()   

क्वेरी ही बहुत समझ में नहीं आता, मुझे पता है। मैं सिर्फ यह सुनिश्चित करना चाहता हूं कि यदि मैं ऐसा करता हूं, तो प्रत्येक पंक्ति के लिए मेरे फ़ंक्शन का मूल्यांकन नहीं किया जा रहा है।

मुझे अधिक जानकारी प्राप्त करने के लिए अन्य तालिकाओं में शामिल होने की आवश्यकता है। क्या बेहतर होगा कि सीटीई में सभी ऑडिट आईडी मिलें और उसके साथ जुड़ें, या इससे कोई फर्क नहीं पड़ता क्योंकि ये फ़ंक्शन निर्णायक हैं?

आपका फ़ंक्शन नियतात्मक होना चाहिए:

डिटर्मिस्टिक फ़ंक्शंस हमेशा किसी भी समय इन्हें इनपुट मानों के विशिष्ट सेट के साथ बुलाया जाता है और उसी स्थिति को दिया जाता है डेटाबेस का Nondeterministic फ़ंक्शंस प्रत्येक बार जब वे एक विशिष्ट इनपुट मूल्यों के साथ बुलाए जाते हैं तब भी अलग-अलग परिणामों को वापस कर सकते हैं, भले ही डाटाबेस स्थिति का उपयोग वे एक समान रहें।

डेटाबेस इंजिन स्वचालित रूप से ट्रांसएक्ट-एसक्यूएल कार्यों के शरीर का विश्लेषण करता है और मूल्यांकन करता है कि क्या फ़ंक्शन निर्णायक है। उदाहरण के लिए, यदि फ़ंक्शन ने अन्य फ़ंक्शन कॉल किए हैं जो गैर-नियतात्मक हैं, या फ़ंक्शन कॉल संग्रहित प्रक्रियाओं को बढ़ाता है, तो डेटाबेस इंजिन फ़ंक्शन को गैर-नियतात्मक के रूप में चिह्नित करता है सामान्य भाषा रनटाइम (CLR) फ़ंक्शंस के लिए, डेटाबेस इंजिन फ़ंक्शन के लेखक पर निर्भर करता है जिससे फ़ंक्शन को नियतात्मकता के रूप में चिह्नित किया जाता है या SqlFunction कस्टम विशेषता का उपयोग नहीं करता है।

No comments:

Post a Comment