调用存储过程RETURN返回值为空

oracle185 2011-10-05 04:25:40
存储过程: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’,既提示 ("密码错误,请重新输入!!!")
但在查询分析器里却可以返回正确的值,真不知道哪里搞错了。
...全文
310 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oracle185 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dawugui 的回复:]
@name varchar,@mm varchar

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

@name varchar(20),@mm varchar(20)
[/Quote]
麻烦你再帮我看看这个问题:我在SQL2000里面设计的表里有个“数量”的字段是“decimal”数据,精度18,小数位是2,但在VB调用存储过程向该表里插入数据时都没有小数位,如“1.234”在表里只显示“1”,如果是“0.698”这样的就是“0”,总之小数点后不管是多少都失去了。这事咋回事。

Y = "insert_dictionary" & " " & Trim(Val(Text4.Text)) & ""

还有怎样向存储过程传递像药品规格这样的数据,如(“2ml*12支”),如果用val(2ml*12支),数据库里只能接收到“2”,而不用val就提示“ml”出错,数据库里这个字段什么字符型如:varchar,nvarchar我都试过了,都不行。
帖子地址:http://topic.csdn.net/u/20111003/16/4e724da9-d09b-47d0-ad9a-2d975a0fce33.html,加分
oracle185 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dawugui 的回复:]
@name varchar,@mm varchar

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

@name varchar(20),@mm varchar(20)
[/Quote]
原来如此,你可帮我大忙了
dawugui 2011-10-08
  • 打赏
  • 举报
回复
@name varchar,@mm varchar

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

@name varchar(20),@mm varchar(20)
oracle185 2011-10-07
  • 打赏
  • 举报
回复
Set param = cmd.CreateParameter("mm", adChar, adParamInput, 20, Trim(Text2.Text))
我发现了,如果把 adChar换成adInteger,然后把存储过程里的@mm也改成int型的,表里的mm字段也改成int的,就可以了,但我用户名和密码必须用字符型的啊!
oracle185 2011-10-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xtahtygyqq 的回复:]
看下是否有空格.应该就是有空格的问题!
[/Quote]
exec admin_yz 'BOSS', '001',这是在SQL探测器里的执行语句,没有空格啊
谢谢你,那个问题我已经解决了
xtahtygyqq 2011-10-05
  • 打赏
  • 举报
回复
lsph = mycommand.Parameters("@rkdjh").Value '将返回值赋给变量lsph

你之前的这个.在前面加上SET 就行了!
xtahtygyqq 2011-10-05
  • 打赏
  • 举报
回复
看下是否有空格.应该就是有空格的问题!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧