调用存储过程RETURN返回值为空解决办法

调用存储过程RETURN返回值为空
存储过程:admin_yz
CREATE PROCEDURE [admin_yz] 
  @name varchar,@mm varchar
AS
IF(Select mm from admin where name= @name )=@mm
  RETURN 1
ELSE 
  RETURN 0
GO
VB客户端: 
 Myconnection.ConnectionString = "Driver={SQL server};server=FS;uid=sa;pwd=;database=yd"
Myconnection.Open
Set rs1 = New ADODB.Recordset
  Set cmd = New ADODB.Command
 cmd.ActiveConnection = Myconnection

  cmd.CommandText = "admin_yz"
  cmd.CommandType = adCmdStoredProc
 Set param = cmd.CreateParameter("RetVal", adInteger, adParamReturnValue, 4)
 cmd.Parameters.Append param
  Set param = cmd.CreateParameter("name", adChar, adParamInput, 20, Trim(Text3.Text))
 cmd.Parameters.Append param
  Set param = cmd.CreateParameter("mm", adChar, adParamInput, 20, Trim(Text2.Text))
  cmd.Parameters.Append param

  Set rs1 = cmd.Execute()
  Set rs1 = Nothing
If cmd.Parameters("RetVal").Value = 1 Then
frm_main.Show
Unload Me
Else
MsgBox ("密码错误,请重新输入!!!")
Text2.SetFocus
End If
返回的结果总不是‘1’,既提示 ("密码错误,请重新输入!!!")
但在查询分析器里却可以返回正确的值,真不知道哪里搞错了。


------解决方案--------------------
@name varchar,@mm varchar

没定义长度.建议定义一个长度,例如:

@name varchar(20),@mm varchar(20)