2010-07-13 8 views
23

में खाली विवरण एसक्यूएल सर्वर 2005 या नए में टी-एसक्यूएल में एक खाली स्टेटमेंट कीवर्ड है? पीएल/एसक्यूएल में कुछ कथन की तरह कुछ।टी-एसक्यूएल

+9

आप क्या हासिल करने की कोशिश कर रहे हैं? – cjk

उत्तर

1

नहीं। "कोई ऑपरेशन" समतुल्य नहीं है।

  • संग्रहित प्रो के लिए, आपके पास कम से कम SET NOCOUNT ON होगा।
  • एक IF/ELSE के लिए, यदि एक शर्त खाली न आना है यह

अन्यथा, क्यों आप कृपया पूछते हैं? सटीक होने के लिए, क्या बात है?

+1

ठीक है। धन्यवाद। मुझे अपने एसक्यूएल जनरेटर के लिए इसकी ज़रूरत है। लेकिन वैसे भी ऐसा लगता है कि मुझे अपनी मध्यवर्ती वस्तुओं से पहले एक खाली शाखा (आईएफ/ईएलएसई, केस) को हटा देना होगा। मैंने पाया कि रिक्त कथन को खाली ब्लॉक (BEGIN END) द्वारा "अनुकरण" किया जा सकता है लेकिन यह अच्छा नहीं लग रहा है। – ternyk

6

कभी-कभी बदसूरत होता है। मेरा मानना ​​है कि उनका वैध उपयोग है। कई अन्य विवरणों के साथ एक लंबी/जटिल निर्णय शाखा संरचना में, उन बयानों में से कुछ में ऐसी स्थितियां हो सकती हैं जिनमें आप विशेष रूप से कोई कार्रवाई नहीं करना चाहते हैं। आप यह भी नहीं चाहते कि वे स्थिति डिफ़ॉल्ट रूप से हो रही हों, जहां कुछ काम किया जाता है। उस स्थिति में, यह एक वैध उपयोग है।

यहाँ यह करने के लिए दो तरीके हैं - देखने के बी और सी

Declare @status as char(1) 
set @status = 'D' 

If (@status = 'A') 
    select 'Great!' 

Else if (@status = 'B') 
begin 
    if null=null select null -- predicate never resolves true 
end 

Else if (@status = 'C') 
    set @status = @status -- set a variable to itself 

Else 
    select 'Needs work!' 

ध्यान दें, यह एक अति सरल उदाहरण है। हालात जटिल होने पर पठनीयता के लिए इसका सबसे अच्छा उपयोग किया जाता है।

+0

हाँ मुझे लगता है कि 'if null = null select null' सामान्य सी प्रकार की भाषा में // NOOP रिक्त मामलों के करीब है – syclee

+0

मुझे वास्तव में 'if null = null select null' संस्करण पसंद है, क्योंकि यह एक दायरे में दोहराने योग्य है , यदि इसे अधिक बार किया जाना चाहिए और इसका कोई दुष्प्रभाव नहीं है –

7

मुझे यह भी विश्वास है कि कभी-कभी कुछ भी स्क्रिप्ट के लिए वैध उपयोग नहीं होते हैं (उदाहरण के लिए स्वचालित रूप से जेनरेट की गई स्क्रिप्ट)।

हालांकि यह पुराना धागा है, मैं अपने दो सेंट डाल दूंगा। मुझे लगता है कि एक चर घोषित करना सबसे सौम्य बयानों में से एक है जिसका आप उपयोग कर सकते हैं। कथन निष्पादन योजनाओं में भी दिखाई नहीं देता है:

IF (@variable = 0) 
BEGIN 
    DECLARE @placeHolder BIT; 
END 
34

आप कुछ भी करने के लिए लेबल घोषित नहीं कर सकते हैं।

DECLARE @value INT 

IF @value IS NULL 
BEGIN 
no_op1: 
END 
+1

धन्यवाद, मुझे लगता है कि यह कुछ भी करने का सबसे अच्छा तरीका नहीं है क्योंकि यह वास्तव में कुछ भी नहीं करता है, यह केवल घोषणात्मक है। मैं फ़ायरबर्ड से एसक्यूएल-सर्वर से संग्रहीत प्रक्रिया कोड के अपने स्वचालित अनुवाद के लिए इसका उपयोग करने जा रहा हूं, क्योंकि फ़ायरबर्ड रिक्त ब्लॉक की अनुमति देता है जबकि SQL-Server नहीं करता है। कम से कम उन मामलों के लिए जहां प्रारंभ-अंत ब्लॉक को छोटा रूप से हटाया नहीं जा सकता है। –

+1

ग्रेट। और ध्यान दें कि एक ही लेबल को एक से अधिक बार परिभाषित नहीं किया जा सकता है .. यही कारण है कि आपको इसे __1 1 3 3 के रूप में नामित करना चाहिए ... – sotn

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