रिटर्न वैल्यू कैप्चर करने के लिए (रिटर्न ({number}) सिंटैक्स का उपयोग करके SQL द्वारा लौटाया गया) का उपयोग करें:
cmdHeader.Parameters.Add("@ReturnValue", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;
साथ ही, आपको संभवतः SCOPE_IDENTITY() का उपयोग करना चाहिए। @@ पहचान के बजाय
संपादित करें:
तो आपका स्पोक कुछ ऐसा करेगा:
DECLARE @NewId INTEGER
INSERT SomeTable(FieldA) VALUES ('Something')
SELECT @NewId = SCOPE_IDENTITY()
RETURN (@NewId)
और उस मान को पुनः प्राप्त करने के लिए आपका C# कोड होगा:
int newId = cmdHeader.Parameters[@ReturnValue].value;
2 संपादित करें:
ठीक है, मूल प्रश्न ने इस मुद्दे को भ्रमित कर दिया क्योंकि "वापसी मूल्य" वास्तव में आप जो कर रहे हैं उससे एक अलग बात है जो एकल कॉलम परिणाम लौटा रहा है।
तो, इसके बजाय नहीं एक रिटर्नवैल्यू पैरामीटर बिल्कुल जोड़ें। बस ExecuteScalar() का इस्तेमाल करें अपने मूल SqlCommand सेटअप का उपयोग नीचे के रूप में करें:
int newId = Convert.ToInt32(cmdHeader.ExecuteScalar());