调用存储过程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)
存储过程: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)