我有这个:
IF EXISTS
(SELECT 1
FROM User_Passwords
WHERE up_Password = @CurrentPassword)
PRINT 'Bad Password'
--RETURN TRUE
ELSE
根据我遇到的情况,我需要 SP 返回一些内容,1 或 0,或者 string/varchar,这样我就可以在 VB 端做一些工作。但截至目前,它不会返回任何内容,除非我没有正确调用它。这是VB代码:
Public Function UpdatePasswords()
Dim objCommand As New SqlCommand("Update_Passwords", DatabaseInterface_.Connection)
objCommand.CommandType = CommandType.StoredProcedure
objCommand.Parameters.AddWithValue("@ua_pk", ua_pk_)
objCommand.Parameters.Add(New SqlParameter With {.ParameterName = "@ResetDaysAmount", .SqlDbType = SqlDbType.Int, .Value = Company.GetSetting("PasswordExpireDays", SettingMisc.ReturnDataType.Integer_)})
objCommand.Parameters.Add(New SqlParameter With {.ParameterName = "@AllowedNumberOfPasswords", .SqlDbType = SqlDbType.Int, .Value = Company.GetSetting("NumberOfPasswords", SettingMisc.ReturnDataType.Integer_)})
objCommand.Parameters.Add(New SqlParameter With {.ParameterName = "@CurrentPasswordDate", .SqlDbType = SqlDbType.Date, .Value = ua_PasswordDate_})
objCommand.Parameters.Add(New SqlParameter With {.ParameterName = "@CurrentPassword", .SqlDbType = SqlDbType.VarChar, .Value = ua_Password_})
If objCommand.ExecuteScalar.ToString() = "Bad Password" Or 1 Then
Return True
Else
Return False
End If
End Function
最佳答案
您应该使用 SELECT 语句将某些内容返回到代码中
IF EXISTS (SELECT 1 FROM User_Passwords WHERE up_Password = @CurrentPassword)
SELECT 1
ELSE
SELECT 0
然后你的代码是
Dim result = Convert.ToInt32(objCommand.ExecuteScalar())
Return If(result = 1, True, False)
关于sql-server - SQL Server 到 VB.Net IF EXISTS 需要返回任何内容,但不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41174488/