2009-06-23 18 views
8

में SELECT और SET के बीच क्या अंतर है मैं एक संग्रहीत प्रो पर काम कर रहा हूं जो कुछ गतिशील एसक्यूएल निष्पादित करता है। यहाँ उदाहरण मैं 4GuysFromRolla.comटी-एसक्यूएल

CREATE PROCEDURE MyProc 
    (@TableName varchar(255), 
    @FirstName varchar(50), 
    @LastName varchar(50)) 
AS 

    -- Create a variable @SQLStatement 
    DECLARE @SQLStatement varchar(255) 

    -- Enter the dynamic SQL statement into the 
    -- variable @SQLStatement 
    SELECT @SQLStatement = "SELECT * FROM " + 
        @TableName + "WHERE FirstName = '" 
        + @FirstName + "' AND LastName = '" 
        + @LastName + "'" 

    -- Execute the SQL statement 
    EXEC(@SQLStatement) 

अगर आप देखते हैं पर पाया है, वे कीवर्ड का उपयोग कर रहे चयन intead की सेट। मुझे नहीं पता था कि आप ऐसा कर सकते हैं। क्या कोई मुझे 2 के बीच अंतर बता सकता है? मैंने हमेशा सोचा चयन बस रिकॉर्ड चुनने के लिए था। जैसे चयन @foo = 1, @bar = 2

+1

http://stackoverflow.com/questions का डुप्लिकेट/866767/सेट-बनाम-चयन-क्या-अंतर-अंतर – shahkalpesh

+0

बिल्कुल एक डुप्लिकेट नहीं है। दूसरा सवाल प्रदर्शन के बारे में पूछ रहा है। मैं कीवर्ड भाषा अंतर – Micah

उत्तर

10

चयन एएनएसआई, सेट @LocalVar है एमएस T-SQL

चयन कई assignents अनुमति देता है।

संपादित तुम मुझे 44 सेकंड

+0

के बारे में पूछ रहा था आपका पहला बिंदु @ breitak67 के उत्तर में कई स्रोतों से विरोधाभास है (http://stackoverflow.com/questions/1034634/what-is-the-difference-between-select-and-set- इन-टी-एसक्यूएल/1034756 # 1034756) –

+0

अरे! मैं बूढ़ा हो रहा हुँ। हालांकि, मुझे लगता है कि चयन अब एएनएसआई में भी है। – gbn

+0

दिलचस्प है कि Sybase SET @var का उल्लेख नहीं करता है http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sqlug/html/sqlug/sqlug598.htm – gbn

2

चुनें एकाधिक कार्य की अनुमति देता है:

6

मूल रूप से हरा, सेट सेटिंग्स चर के लिए एसक्यूएल एएनएसआई मानक है, का चयन नहीं है। एसईटी केवल एक ही असाइनमेंट के लिए काम करता है, चयन कई असाइनमेंट कर सकता है।

ryan farley blog

tony rogerson

stackoverflow

0

का चयन करता है तेजी से हो सकता है अगर आप एक से अधिक मान असाइन करना होगा: के बजाय एक लंबे व्याख्या यह है कि अच्छी तरह से नेट पर कई स्थानों में संक्षेप है लिखने

http://sqlblog.com/blogs/alexander_kuznetsov/archive/2009/01/25/defensive-database-programming-set-vs-select.aspx

+0

आपको अभी भी मानों को स्मृति में लिखना है, मुझे शक है। यह अभी भी 2 असाइनमेंट है चाहे वह 2xSET या 1xSELECT है। – gbn

+0

जीबीएन, मैंने बेंचमार्क प्रदान किए। आप बेंचमार्क चला सकते हैं और खुद के लिए देख सकते हैं –

0

चयन भी कर सकते हैं (यह मानते हुए बयान केवल एक रिकॉर्ड रिटर्न) एक का चयन करें बयान से चर काम पाने के लिए इस्तेमाल किया जा मेरी मेज से

करें @myvariable = myfield जहां आईडी = 1

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