储存过程如何返回output参数啊?????

xiyun 2003-03-31 12:48:45
过程如下:

ALTER PROCEDURE CheckUserLogon
@UserName varchar(10),
@Password varchar(10),
@CheckResult tinyint output
as
DECLARE @CorrectPassword VARCHAR(10)
SELECT @CorrectPassword=Passwd FROM KeyList WHERE UserID=@UserName
IF(@@RowCount<>1)
BEGIN
SET @CheckResult=0
RETURN @CheckResult
END
ELSE
IF(@CorrectPassword<>@Password)
BEGIN
SET @CheckResult=0
RETURN @CheckResult
END
ELSE
BEGIN
SET @CheckResult=1
RETURN @CheckResult
END


请问,我该怎么在vb.net中得到返回结果呢?

这样可以么?
Dim passresult As Byte
Me.SqlConnection1.Open()
Me.SqlCommand1.ExecuteNonQuery()
passresult = Me.SqlCommand1.Parameters.Item(2).Value
Me.SqlConnection1.Close()


谢谢赐教啊!!!
...全文
52 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzyun 2003-03-31
  • 打赏
  • 举报
回复
....................
SqlCmd.Parameters.Item("@CheckResult").Direction = ParameterDirection.Output
...........
SPRuternValue = SqlCmd.Parameters.Item("@ReturnTerm").Value

跟踪Me.TextBox1.Text看看,另外还有象变量的作用范围什么的,也look look.
xiyun 2003-03-31
  • 打赏
  • 举报
回复
哦,我知道那里错了
我把赋值的语句放在了InitializeComponent()
这个时候Me.SqlCommand1.Parameters.Item(0).Value当然为“”
唉,我还以为点击Submit按钮后会自动从textbox1里面读取数据给Me.SqlCommand1.Parameters.Item(0)赋值。
笨。

不管怎样,谢谢上面的两位。
分是少了点,不好意思。
xiyun 2003-03-31
  • 打赏
  • 举报
回复
并且很奇怪,我刚在end sub 的地方设了个断点,发现
Me.SqlCommand1.Parameters.Item(0).Value 为空
(我已经给它赋值了啊.Me.SqlCommand1.Parameters.Item(0).Value = Me.TextBox1.Text)
xiyun 2003-03-31
  • 打赏
  • 举报
回复
楼上的,帮忙看看我的吧,为什么我写的,不管我输入的密码对错,它都是返回0呢?
因为@CheckResult 是 output ,那么在.ExecuteNonQuery()后使用.Parameters.Item(2).Value ( Item(2)对应的是@CheckResult ),即可以得到判断结果呢?
yzyun 2003-03-31
  • 打赏
  • 举报
回复
sorrt,sorrt,上面错了,我这里没有.NET环境
差不多应该是:

Try
..........
Dim SPRuternValue as Short
Dim SP_Name,Connstring,mUserName,mPassword as String
Dim SqlCmd = New SqlCommand(SP_Name, New SqlConnection(Connstring))
With SqlCmd
.CommandType = CommandType.StoredProcedure
With .Parameters
.Add(New SqlParameter("@UserName", SqlDbType.VarChar, 10))
.Add(New SqlParameter("@Password", SqlDbType.VarChar, 10))
.Add(New SqlParameter("@CheckResult", SqlDbType.Int, 4))
End With
End With
SqlCmd.Connection.Open()
with SqlCmd.Parameters
.Item("@UserName").Value = mUserName
.Item("@Password").Value = mPassword
.Item("@CheckResult").Direction = ParameterDirection.Output
end with
SqlCmd.ExecuteNonQuery()
SPRuternValue = SqlCmd.Parameters.Item("@ReturnTerm").Value
..........
Catch EX As Exception
..........
..........
Finally
..........
..........
End Try
yzyun 2003-03-31
  • 打赏
  • 举报
回复
分少点儿,呵呵,:-)

Try
..........
Dim SPRuternValue as Short
Dim SP_Name,Connstring as String
Dim SqlCmd = New SqlCommand(SP_Name, New SqlConnection(Connstring))
With SqlCmd
.CommandType = CommandType.StoredProcedure
With .Parameters
.Add(New SqlParameter("@UserName", SqlDbType.VarChar, 10))
.Add(New SqlParameter("@Password", SqlDbType.VarChar, 10))
.Add(New SqlParameter("@CheckResult", SqlDbType.Int, 4))
End With
End With
SqlCmd.Connection.Open()
with SqlCmd.Parameters
.Add(New SqlParameter("@UserName", SqlDbType.varchar, 10))
.Add(New SqlParameter("@Password", SqlDbType.varchar, 10))
.Add(New SqlParameter("@CheckResult", SqlDbType.Int, 4))
end with
SqlCmd.ExecuteNonQuery()
SPRuternValue = SqlCmd.Parameters.Item("@ReturnTerm").Value
..........
Catch EX As Exception
..........
..........
Finally
..........
..........
End Try
wljcan 2003-03-31
  • 打赏
  • 举报
回复
我用C#写的一段,可以参考

//创建一个命令
IDbCommand cmd=DoData.DBFactory.GetCommand("c_Sys_InsertDepartment",DoData.Dodata_cn);
cmd.CommandType=CommandType.StoredProcedure;

//定义一个输出型参数
IDbDataParameter pp=DoData.DBFactory.GetParameters( "@_Department_ID" ,_DepartmentID );
pp.SourceVersion=DataRowVersion.Current;
pp.Direction=ParameterDirection.Output;


cmd.Parameters.Add(pp);

try
{
//执行
cmd.ExecuteNonQuery();
//取得output值
_DepartmentID=(int)pp.Value;

}

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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