2010-09-30 12 views
5

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

CREATE PROCEDURE dbo.UpdatePerson 
@PersonId INT, 
@Firstname VARCHAR(50) = NULL, 
@Lastname VARCHAR(50) = NULL, 
@Email VARCHAR(50) = NULL 
AS 
BEGIN 
    SET NOCOUNT ON 

UPDATE Person 
Set 
    Firstname = COALESCE(@Firstname, Firstname), 
    Lastname = COALESCE(@LastName, Lastname), 
    Email = COALESCE(@Email, Email) 
    WHERE PersonId = @PersonId 

END 

मुझे लगता है कि मानों हर बार वैसे भी अपडेट कर दिया जाएगा, जो आदर्श नहीं है: सबसे अच्छा मैं अपने आप को साथ आने में कामयाब रहे निम्नलिखित की तरह कुछ है। क्या यह इसे प्राप्त करने का एक प्रभावी तरीका है, या इसे बेहतर तरीके से किया जा सकता है?

उत्तर

4

मुझे लगता है कि आपका कोड ठीक है। केवल एक चीज जो मैं जोड़ूंगा वह इस मामले की जांच है जब सभी तीन पैरा NULL हैं, इस मामले में कोई अपडेट नहीं किया जाना चाहिए।

4

एसक्यूएल सर्वर वास्तव में गैर अद्यतन करने अपडेट से निपटने के लिए कुछ तर्क है।

More details than you probably wanted to know!

+0

दिलचस्प लेख! – RedFilter

+0

+1 उपयोगी और सूचनात्मक लेख। साझा करने के लिए धन्यवाद! –

+1

धन्यवाद मार्टिन। जानने के लिए कुछ उपयोगी जानकारी। –

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