2010-07-02 16 views
19

मेरे पास एक जटिल अभिव्यक्ति है जो उस तारीख से एक मान की गणना करती है जिसे मुझे एकाधिक दिनांक कॉलम पर उपयोग करना है।
क्या मैं इस अभिव्यक्ति की प्रतिलिपि बनाने और चिपकाने से बचने के लिए अपनी क्वेरी में एक अस्थायी स्थानीय फ़ंक्शन परिभाषित कर सकता हूं। ?क्या एक स्थानीय फ़ंक्शन को TSQL क्वेरी में परिभाषित करना संभव है?

चाहते:

create MyLocalFunc(@ADate datetime) 
returns int as 
begin 
    blablabla 
end 

select 
    MyLocalFunc(col1), col2, MyLocalFunc(col3), col4, MyLocalFunc(col5) 
from 
    mytable 

समाधान के लिए, मैं जानता हूँ कि मैं एक CREATE FUNCTION // DROP FUNCTION कर सकते हैं, लेकिन मैं इसे से बचने पसंद करेंगे।

+0

देखें: http://stackoverflow.com/questions/981451/can-i-create-a-one-time-use-function-in-a- स्क्रिप्ट- या संग्रहीत प्रक्रिया – Weasle

उत्तर

6

नहीं, कोई रास्ता नहीं है - बनाएं/ड्रॉप ही एकमात्र विकल्प है।

+0

यह उत्तर एक तरीका बताता है जिसमें यह संभव है: http://stackoverflow.com/a/981461/750216 –

0

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

इसे स्थायी यूडीएफ क्यों नहीं बनाते?

1

SQL सर्वर क्वेरी (ies) को BEGIN/END ब्लॉक के अंदर डालकर anonymous blocks का समर्थन करता है, लेकिन मुझे ऐसा कोई उदाहरण नहीं मिला है जहां किसी ने इसके अंदर कोई फ़ंक्शन परिभाषित किया हो। ओरेकल के पास थोड़ी देर के लिए कार्यक्षमता थी ...

+0

क्या आप SQL सर्वर में अज्ञात ब्लॉक के बारे में अधिक समझा सकते हैं? वह लिंक टूटा हुआ है और मुझे कुछ भी नहीं मिला है। –

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

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