2013-10-15 12 views
15

मेरे पास एक प्रक्रिया है जहां मैं अपनी तालिका में मान डालता हूं।कैसे जांचें कि मूल्य सफलतापूर्वक डाला गया है या नहीं?

declare @fName varchar(50),@lName varchar(50),@check tinyint 
INSERT INTO myTbl(fName,lName) values(@fName,@lName) 

संपादित:

अब मैं जाँच चाहते हैं, तो इसे सफलतापूर्वक @check में डाल = 0 बाकी @check = 1

उत्तर

28

आप @@ROWCOUNT सर्वर चर के तुरंत बाद डालने क्वेरी जाँच करने के लिए उपयोग कर सकते हैं सम्मिलित ऑपरेशन द्वारा प्रभावित पंक्तियों की संख्या।

declare @fName varchar(50) = 'Abcd', 
     @lName varchar(50) = 'Efgh' 
INSERT INTO myTbl(fName,lName) values(@fName,@lName) 

PRINT @@ROWCOUNT --> 0- means no rows affected/nothing inserted 
       --> 1- means your row has been inserted successfully 

आपकी आवश्यकता के लिए, आप (के रूप में टिप्पणी प्रति) एक Case बयान इस्तेमाल कर सकते हैं:

--If you need @check as a bit type please change Int to bit 
DECLARE @check Int = CASE WHEN @@ROWCOUNT = 0 THEN 1 ELSE 0 END 
+0

उत्तर देने के लिए धन्यवाद, मैं अपने प्रश्न को सही करता हूं अगर यह सफलतापूर्वक डाला गया है तो मुझे @check = 0 – GeoVIP

4

आप का उपयोग करने के @@ROWCOUNT

यह पिछले बयान से प्रभावित पंक्तियों की संख्या देता है की जरूरत है । यदि पंक्तियों की संख्या 2 अरब से अधिक है, तो ROWCOUNT_BIG का उपयोग करें।

@@ ROWCOUNT दोनों दायरे और कनेक्शन सुरक्षित हैं।

वास्तव में, यह कनेक्शन और दायरे के लिए केवल अंतिम कथन पंक्ति गणना पढ़ता है।

बेस तालिका पर ट्रिगर होने पर भी SQL सर्वर में @@ ROWCOUNT का उपयोग करना सुरक्षित है। ट्रिगर आपके परिणाम नहीं छोड़ेगा; आपको मिल जाएगा जो आप उम्मीद करते हैं। @@ ROWCOUNT सही होने पर भी सही काम करता है जब NOCOUNT सेट होता है।

ताकि आप क्वेरी होना चाहिए:

declare @fName varchar(50), @lName varchar(50), @check tinyint = 0 
... 
INSERT INTO myTbl(fName,lName) values(@fName,@lName) 
if @@ROWCOUNT>0 
    set @check = 1 
0

में एसक्यूएल-Sever आप अगर मान सफलतापूर्वक डाला जाता है की जाँच करने के आउटपुट खंड का उपयोग कर सकते हैं। क्वेरी


declare @fName varchar(50),@lName varchar(50) 

INSERT INTO myTbl(fName,lName) OUTPUT inserted.* values(@fName,@lName) ; 

निम्नलिखित यदि मान डाला जाता है उसे डाला मूल्यों का उत्पादन दिखाएगा तक। आप इन मानों को नई तालिका में भी स्टोर कर सकते हैं।

+0

सेट करने की आवश्यकता है OUTPUT क्लॉज पर विस्तृत जानकारी के लिए [OUTPUT] (http://technet.microsoft.com/en-us/ पुस्तकालय/ms177564.aspx) – genius

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