2010-11-16 9 views
5

एक संग्रहीत प्रक्रिया बनाते समय "प्रक्रिया SPNAME के ​​रूप में बनाने", शुरू करता है/अंत ब्लॉक की सेवा और उद्देश्य?बनाम "बनाने की प्रक्रिया SPNAME के ​​रूप में शुरुआत/अंत"

जैसे,

CREATE PROCEDURE SPNAME 
AS 
    SELECT * FROM TABLE 

बनाम

CREATE PROCEDURE SPNAME 
AS 
BEGIN 
    SELECT * FROM TABLE 
END 

उत्तर

2

रूप CREATE PROCEDURE documentation में संकेत दिया, शुरू/अंत वैकल्पिक है:

{[शुरू] sql_statement [;] [... n] [अंत]}

एक या अधिक चलाना -एसक्यूएल प्रक्रिया के शरीर के बयान शामिल हैं। आप कथनों को संलग्न करने के लिए वैकल्पिक BEGIN और END कीवर्ड का उपयोग कर सकते हैं। जानकारी के लिए, सर्वोत्तम अभ्यास, सामान्य टिप्पणियां, और सीमाएं और प्रतिबंध अनुभाग देखें जो अनुसरण करते हैं।

व्यक्तिगत वरीयता के मामले में, मैं हमेशा उन्हें शामिल करता हूं।

1

बाद सिर्फ प्रोग्रामिंग का एक अच्छा शैली और सामान्य standards.They निम्नलिखित के रूप में तक मुझे पता है कुछ भी अलग-अलग नहीं है।

मुझे व्यक्तिगत रूप से लगता है कि यह समझ में आता है और BEGIN और END कोड के प्रत्येक तार्किक खंड (यहां तक ​​कि संग्रहीत प्रक्रियाओं के मामले में) के आसपास पठनीयता में सुधार करता है।

+0

'एक शुरू और code' के हर तार्किक हिस्सा चारों ओर अंत, ओह! मुझे लगता है कि यह उतना ही अधिक होगा जितना इससे मदद मिलेगी। –

+0

वैसे मैं तुम्हारा बिंदु देखता हूं..मैं सर्वोत्तम प्रथाओं को इंगित करने की कोशिश कर रहा था..मेरे पास एक लाइनर या तुच्छ स्थानों के लिए नहीं होगा ... – Vishal

2

मेरे लिए, यह केवल एक अनावश्यक अतिरिक्त इंडेंट स्तर है। हालांकि, अगर आप इसे BEGIN TRY - END TRYBEGIN CATCH - END CATCH के साथ बनाते हैं तो यह एक वास्तविक उद्देश्य जोड़ता है।

0

मामले में कोई वास्तविक प्रक्षेपण नहीं है। लेकिन यदि आप BEGIN/END ब्लॉक का उपयोग करते हैं तो आपका कोड पठनीय और साफ़ होगा।

+0

मैंने BEGIN/END ब्लॉक के साथ बहुत सारे कोड देखे हैं जो नहीं थे बहुत पठनीय बस हर जगह BEGIN/END ब्लॉक का उपयोग करने के बजाय पठनीय कोड के लिए बहुत कुछ है। –

0

BEGIN और END के पास संग्रहीत प्रक्रिया के लिए कोई असर नहीं है, हालांकि फ़ंक्शन के लिए आवश्यक हैं।

ठीक है:

CREATE PROC dbo.sproc(@v varchar(10)) 
AS 
RETURN -1 

ठीक नहीं:

CREATE FUNCTION dbo.fun(@v varchar(10)) 
RETURNS INT 
AS 
RETURN 1 
संबंधित मुद्दे