सबसे पहले - यदि यह एक OUTPUT पैरामीटर है, तो आप .AddWithValue
का उपयोग नहीं कर सकते। C# में - आपको उपयोग करने की आवश्यकता है:
SqlParameter outParam = cmd.Parameters.Add("@guidid", SqlDbType.Uniqueidentifier);
outParam.Direction = ParameterDirection.Output;
और साथ ही, आपके टी-एसक्यूएल कोड में, आपको आउटपुट पैरामीटर के लिए नया मान निर्दिष्ट करने की आवश्यकता है!
ALTER PROCEDURE [dbo].[pr_Tbl_Test_Insert]
@guidid uniqueidentifier output,
@sname nvarchar(50)
AS
DECLARE @NewID UNIQUEIDENTIFIER
SET @NewID = newid();
-- INSERT a new row in the table.
INSERT [dbo].[Tbl_Test]([id], [name]) VALUES(@NewID, @sname);
SET @guidid = @NewID
अपडेट करें: यदि आप इसे अपने SQL सर्वर Mgmt Studio में चलाते हैं - क्या यह कुछ दिखाता है ??
DECLARE @insertedID UNIQUEIDENTIFIER
EXEC dbo.pr_Tbl_Test_Insert @guidid = @insertedID OUTPUT,
@sname = N'TestUser' -- nvarchar(50)
SELECT @insertedID
और आपके C# में - आपको पढ़ना ExecuteNonQuery
calling को कॉल करने के बाद आउटपुट पैरामीटर का मान !
SqlParameter outparam = cmd.Parameters.Add("@guidid",SqlDbType.UniqueIdentifier);
outparam.Direction = ParameterDirection.Output;
cmd.Parameters.AddWithValue("@sname", "mehdi");
cmd.ExecuteNonQuery();
Guid newlyInsertedID = new Guid(cmd.Parameters["@guidid"].Value);
MessageBox.Show(newlyInsertedID.ToString());