मैं एक चयनित फ़ील्ड मान को एक चर से एक चर में कैसे संग्रहीत कर सकता हूं और इसे अद्यतन कथन में उपयोग कर सकता हूं?एक चर के लिए एक परिणाम परिणाम असाइन कैसे करें?
मैं एक SQL सर्वर 2005 T-SQL संग्रहित प्रक्रिया है जो निम्नलिखित करता है लिख रहा हूँ:
- चालान आईडी चालान तालिका से की और दुकानों की सूची कर्सर को हो जाता है
- कर्सर से चालान आईडी लायें -> tmp_key चर
- foreach tmp_key ग्राहक तालिका से चालान ग्राहक प्राथमिक संपर्क आईडी
- अद्यतन करता है ग्राहक के संपर्क पाता है प्राथमिक संपर्क आईडी के साथ कुंजी
- पास कर्सर
यहाँ मेरी प्रक्रिया है
यहाँ है मेरी कोड:
DECLARE @tmp_key int
DECLARE @get_invckey cursor
set @get_invckey = CURSOR FOR
select invckey from tarinvoice where confirmtocntctkey is null and tranno like '%115876'
OPEN @get_invckey
FETCH NEXT FROM @get_invckey into @tmp_key
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT c.PrimaryCntctKey as PrimaryContactKey
from tarcustomer c, tarinvoice i
where i.custkey = c.custkey and i.invckey = @tmp_key
UPDATE tarinvoice set confirmtocntctkey = PrimaryContactKey where invckey = @tmp_key
FETCH NEXT FROM @get_invckey INTO @tmp_key
END
CLOSE @get_invckey
DEALLOCATE @get_invckey
मैं कैसे PrimaryContactKey स्टोर और निम्न अद्यतन बयान के सेट खंड में इसे फिर से प्रयोग करते हैं? क्या मैं एक कर्सर वैरिएबल बना सकता हूं या एक इंट टाइप के साथ बस एक और स्थानीय चर बना सकता हूं?
नीचे @GilaMonster जवाब के रूप में, इस पूरे ऑपरेशन एक भी अद्यतन बयान (एक "सेट आधारित ऑपरेशन", नहीं एक [टी एसक्यूएल सेट बयान] साथ भ्रमित होने की (https हो सकता है : //msdn.microsoft.com/en-us/library/ms189484.aspx)) जो एक बेहतर तरीका है (तेज निष्पादन, कम ओवरहेड, और काफी कम कोड)। मैं बस इसे इंगित कर रहा हूं क्योंकि प्रश्न और सभी मौजूदा शीर्ष उत्तर एसईटी कथन लिखने के बारे में हैं, लेकिन यह वास्तव में शुरू करने का सबसे अच्छा तरीका नहीं है। – gregmac