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

सी # में संग्रहीत प्रक्रिया आउटपुट पैरामीटर का उपयोग करना

मैंने आपकी संग्रहीत कार्यविधि को थोड़ा संशोधित किया है (SCOPE_IDENTITY . का उपयोग करने के लिए) ) और यह इस तरह दिखता है:

CREATE PROCEDURE usp_InsertContract
    @ContractNumber varchar(7),
    @NewId int OUTPUT
AS
BEGIN
    INSERT INTO [dbo].[Contracts] (ContractNumber)
    VALUES (@ContractNumber)

    SELECT @NewId = SCOPE_IDENTITY()
END

मैंने यह कोशिश की और यह ठीक काम करता है (उस संशोधित संग्रहीत प्रक्रिया के साथ):

// define connection and command, in using blocks to ensure disposal
using(SqlConnection conn = new SqlConnection(pvConnectionString ))
using(SqlCommand cmd = new SqlCommand("dbo.usp_InsertContract", conn))
{
    cmd.CommandType = CommandType.StoredProcedure;
        
    // set up the parameters
    cmd.Parameters.Add("@ContractNumber", SqlDbType.VarChar, 7);
    cmd.Parameters.Add("@NewId", SqlDbType.Int).Direction = ParameterDirection.Output;

    // set parameter values
    cmd.Parameters["@ContractNumber"].Value = contractNumber;

    // open connection and execute stored procedure
    conn.Open();
    cmd.ExecuteNonQuery();

    // read output value from @NewId
    int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value);
    conn.Close();
}

क्या यह आपके वातावरण में भी काम करता है? मैं यह नहीं कह सकता कि आपका मूल कोड क्यों काम नहीं करेगा - लेकिन जब मैं इसे यहां करता हूं, वीएस -2010 और एसक्यूएल सर्वर 2008 आर 2, यह सिर्फ त्रुटिपूर्ण रूप से काम करता है ....

यदि आपको कोई मूल्य वापस नहीं मिलता है - तो मुझे आपकी तालिका पर संदेह है Contracts हो सकता है कि वास्तव में IDENTITY वाला कॉलम न हो उस पर संपत्ति।



  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 सर्वर 2014 CTP1 के लिए एक नया VM तैयार करें

  2. SQL सर्वर 2017 में डेटा डालें

  3. एसक्यूएल कास्ट डेटाटाइम

  4. SQL सर्वर में FORMAT () द्वारा समर्थित कस्टम न्यूमेरिक फॉर्मेट स्ट्रिंग्स

  5. IS DISTINCT FROM और IS DISTINCT F से फिर से कैसे लिखा जाए?