बस अतिरिक्त "रक्षात्मक" होने के लिए, निम्न संस्करण संभावना (हालांकि संभावना नहीं) के लिए खाते में एक टाइप रूपांतरण त्रुटि उत्पन्न करता है> 1 मिलान Schema
के समान है कि सत्यापन कोड अक्सर जानबूझकर कैसे फेंकता है क्योंकि मेरा मानना है कि यह अच्छा है और मुझे विश्वास है "सबसे अच्छा अभ्यास '" सभी संभावित रिटर्न परिणामों के लिए खाता है, लेकिन संभावना नहीं है और भले ही यह सिर्फ एक घातक अपवाद उत्पन्न करने के लिए है क्योंकि प्रसंस्करण को रोकने के ज्ञात प्रभाव आमतौर पर अन-ट्रैप्ड त्रुटियों के अज्ञात कैस्केडिंग प्रभावों से बेहतर है। क्योंकि यह अत्यधिक संभावना नहीं है, मुझे नहीं लगता कि यह एक अलग Count
चेक + की परेशानी के लायक हैThrow
या Try
- Catch
- Throw
फिर भी एक और अधिक उपयोगकर्ता के अनुकूल गंभीर त्रुटि है लेकिन अभी भी गंभीर त्रुटि उत्पन्न करने के लिए।
एसएस 2005-:
declare @HasSchemaX bit
set @HasSchemaX = case (select count(1) from sys.schemas where lower(name) = lower('SchemaX')) when 1 then 1 when 0 then 0 else 'ERROR' end
एसएस 2008+:
declare @HasSchemaX bit = case (select count(1) from sys.schemas where lower(name) = lower('SchemaX')) when 1 then 1 when 0 then 0 else 'ERROR' end
फिर:
if @HasSchemaX = 1
begin
...
end -- if @HasSchemaX = 1