Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

संग्रहित प्रक्रिया से सी # एएसपीनेट में रिटर्न वैल्यू प्राप्त करना (वाक्यविन्यास समस्या)

रिटर्न वैल्यू कैप्चर करने के लिए (रिटर्न ({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());


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में लाखों पंक्तियों के साथ बड़ी तालिका को कैसे अपडेट करें?

  2. TransactSQL एक और TransactSQL स्क्रिप्ट चलाने के लिए

  3. SQL सर्वर में CAST () बनाम TRY_CAST ():क्या अंतर है?

  4. SQL सर्वर में सांख्यिकी प्रोफ़ाइल क्या है?

  5. SQL सर्वर (T-SQL उदाहरण) में 'datetime2' को 'तिथि' में बदलें