我有一个问题,一直让我很沮丧,我用google和google搜索,找不到我想要的东西。存储过程返回唯一标识符
我有这样的SQL Server存储过程,它的伟大工程,并返回唯一的标识符:
ALTER PROCEDURE [dbo].[mcd_AddLogin]
@UserName nvarchar(256),
@Password nvarchar(256),
@UID uniqueidentifier OUTPUT
AS
BEGIN
IF(@UID IS NULL)
SELECT @UID = NEWID()
ELSE
BEGIN
IF(EXISTS(SELECT [USERNAME] FROM dbo.LoginPassing_Active))
RETURN -1
END
Declare @Active bit
Declare @Exp_Date datetime
Set @Active = 1
Set @Exp_Date = DATEADD(mi, 1, GETDATE())
INSERT dbo.LoginPassing ([USERNAME], [PASSWORD], [ACTIVE], [EXP_DATE], [UID])
VALUES (@UserName, @Password, @Active, @Exp_Date, @Uid)
RETURN 0
END
我想在和ASP.NET应用程序中使用这一点,并正在以下错误:
Procedure or function 'mcd_AddLogin' expects parameter '@UID', which was not supplied.
下面是我的ASP.Net应用程序的代码,任何人都可以帮我解决了什么错误,我敢肯定,它很简单,我刚才错过了一招:
Dim conSQL As New SqlConnection
conSQL.ConnectionString = My.Settings.conSQL
conSQL.Open()
Dim comSQL As New SqlCommand
comSQL.Connection = conSQL
comSQL.CommandText = "mcd_AddLogin"
comSQL.CommandType = CommandType.StoredProcedure
comSQL.Parameters.Add("@Username", SqlDbType.NVarChar).Value = "username"
comSQL.Parameters.Add("@Password", SqlDbType.NVarChar).Value = "password"
comSQL.ExecuteNonQuery()
litAD.Text = comSQL.Parameters("@UID").Value
请提前感谢您的帮助。
感谢, 史蒂夫
在你的代码中,在下一行添加参数之前,它看起来像是在执行存储过程comSQL.ExecuteNonQuery()。 – 2013-03-01 16:31:42
不,这是您如何获得输出值...这不是添加参数,而是读取它。谢谢史蒂夫。 – Steve 2013-03-01 16:40:24
这是真的,但你必须在执行前添加它 - 记下相应地设置它的方向属性。目前你遇到的问题是输出参数甚至不在参数集合 – 2017-01-13 16:43:58