我写了一个sql函数,它返回一个标量:1如果密码正确,否则为0。具有两个参数的sql函数。从VB .NET调用
CREATE FUNCTION check_credential( @User_IN nvarchar(50), @Pwd_IN nvarchar(50))
RETURNS int
AS
BEGIN
DECLARE @PwdRES int
DECLARE @PWD_DB varbinary(255)
IF (@User_IN is not null and @User_IN != '' and @Pwd_IN is not null and @Pwd_IN != '')
begin
SELECT @PWD_DB = password FROM myTable WHERE username = @User_IN
SET @PwdRES = pwdcompare(@Pwd_IN, @PWD_DB)
end
ELSE
SET @PwdRES = 0
RETURN @PwdRES
END
而且这个工作正常。
我使用下面的代码调用SQL函数:
Dim conn As SqlConnection
Dim sqlcmd As SqlCommand
Dim da As SqlClient.SqlDataAdapter
Dim table As DataTable
Dim Result As Integer
conn = New SqlConnection(ConnectionString)
sqlcmd = New SqlClient.SqlCommand()
sqlcmd.Connection = conn
conn.Open()
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.CommandText = "check_credential"
sqlcmd.Parameters.Add(New SqlClient.SqlParameter("@username", Utilities.NothingToDBNull(user)))
sqlcmd.Parameters.Add(New SqlClient.SqlParameter("@password", Utilities.NothingToDBNull(password)))
在这一点上,我想执行SQLCMD并获得返回值。
是不是可以使用的功能? – GVillani82
@ Joseph82在存储过程中包装函数。 –
@ Joseph82为什么它是一个功能这么重要? – podiluska