2011-10-17 12 views
18

मैं तालिका में कुछ मूल्य डालने के लिए संग्रहीत प्रक्रिया का उपयोग कर रहा हूं।ExecuteNonQuery() रिटर्न -1 हमेशा

CREATE PROCEDURE [dbo].[Sp_InsertValue] 
@Val1 as nvarchar(50) 
@Val2 as nvarchar(50) 
as 
BEGIN 
    IF NOT EXISTS(SELECT * FROM @mytable WHERE [email protected]) 
    INSERT INTO @mytable VALUES(@VAL2) 
END 

मैं ExecuteNonQuery उपयोग कर रहा हूँ() सी # का उपयोग कर ASP.NET में इस संग्रहीत प्रक्रिया कॉल करने के लिए। यह ठीक काम करता है, कोई समस्या नहीं, अगर वे मौजूद नहीं हैं तो यह मान डालता है। मुद्दा यह है कि cmd.ExecuteNonQuery() हमेशा वापस -1। मुझे उम्मीद है कि एक रिकॉर्ड डाला गया है, तो इसे 1, और 0 वापस करना चाहिए, है ना?

+0

जब आप इस प्रक्रिया को SQL सर्वर क्वेरी विंडो में निष्पादित करते हैं तो क्या आप परिणाम फलक में कोई रिकॉर्ड अद्यतन संदेश देख सकते हैं? और प्रक्रिया को अंतिम पंक्ति में जोड़कर प्रभावित पंक्तियों को वापस करने का प्रयास करें - वापसी @@ रोकाउंट – Lingaraj

उत्तर

36

जांचें कि आपके पास संग्रहीत प्रक्रिया में "सेट नॉट चालू" नहीं है। यह प्रभावित पंक्तियों की संख्या को वापस कर देगा। सचमुच 'नोकाउंट' चालू है।

डिफ़ॉल्ट स्थिति हमेशा इस स्थिति में '-1' होगी।

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