में संग्रहित प्रक्रिया आउटपुट पैरामीटर का उपयोग करना मुझे एक SQL सर्वर संग्रहीत प्रक्रिया से आउटपुट पैरामीटर को C# चर में वापस करने में समस्या आ रही है। मैंने इस विषय से संबंधित अन्य पोस्ट पढ़ी हैं, न केवल यहां बल्कि अन्य साइटों पर, और मैं इसे काम नहीं कर सकता। मेरे पास वर्तमान में क्या है। वर्तमान में मैं वापस आने वाले मूल्य को मुद्रित करने की कोशिश कर रहा हूं। निम्नलिखित कोड एक शून्य मान देता है। जो मैं वापस करने की कोशिश कर रहा हूं वह प्राथमिक कुंजी है। मैंने @@IDENTITY
और SCOPE_INDENTITY()
(यानी SET @NewId = SCOPE_IDENTITY()
) का उपयोग करने का प्रयास किया है।सी #
संग्रहित प्रक्रिया:
CREATE PROCEDURE usp_InsertContract
@ContractNumber varchar(7),
@NewId int OUTPUT
AS
BEGIN
INSERT into [dbo].[Contracts] (ContractNumber)
VALUES (@ContractNumber)
Select @NewId = Id From [dbo].[Contracts] where ContractNumber = @ContractNumber
END
डेटाबेस खुलने:
pvCommand = new SqlCommand("usp_InsertContract", pvConnection);
pvCommand.Transaction = pvTransaction;
pvCommand.CommandType = CommandType.StoredProcedure;
pvCommand.Parameters.Clear();
pvCommand.Parameters.Add(new SqlParameter("@ContractNumber", contractNumber));
SqlParameter pvNewId = new SqlParameter();
pvNewId.ParameterName = "@NewId";
pvNewId.DbType = DbType.Int32;
pvNewId.Direction = ParameterDirection.Output;
pvCommand.Parameters.Add(pvNewId);
try
{
sqlRows = pvCommand.ExecuteNonQuery();
if (sqlRows > 0)
Debug.Print("New Id Inserted = ",
pvCommand.Parameters["@NewId"].Value.ToString());
}
catch (Exception e)
{
Debug.Print("Insert Exception Type: {0}", e.GetType());
Debug.Print(" Message: {0}", e.Message);
}
}
मैं एक ही तालिका की आवश्यकता के बजाय SCOPE_IDENTITY() का भी उपयोग करता हूं, और यदि आपको एक आउटपुट var को असाइन करते समय 'क्वेरी कई परिणाम लौटा सकता है' त्रुटि प्राप्त होती है। – JMC
क्या मैं इसे करने के लिए सेट कमांड का उपयोग करता हूं?SET NewId = SCOPE_IDENTITY()? मैंने चयन कथन को निम्नलिखित के साथ बदल दिया है ... SET @NewId = SCOPE_IDENTITY() और मुझे अभी भी एक शून्य मान वापस प्राप्त होता है। – Gary
बेशक आप पुष्टि कर सकते हैं कि नया रिकॉर्ड वास्तव में डाला गया है, है ना? क्या आप अपना सी # कोड (कनेक्शन खोलना, कमांड इत्यादि का निर्माण ..) दिखा सकते हैं – Steve