调用带返回参数的存储过程
我在调用存储过程的时候提示:不允许从数据类型 sql_variant 到 nvarchar 的隐性转换。请使用 CONVERT 函数来运行此查询(程序代码和存储过程如下:)
程序代码:
Dim n_objCommand As New OleDb.OleDbCommand
n_objCommand.Connection = Me.m_objConn
n_objCommand.CommandType = CommandType.StoredProcedure
n_objCommand.CommandText = "UserLogin"
n_objCommand.Parameters.Add("@UserID", SqlDbType.NVarChar, 20)
n_objCommand.Parameters.Add("@UserPass", SqlDbType.NVarChar, 20)
n_objCommand.Parameters.Add("@LoginFlag", SqlDbType.Int, 50)
n_objCommand.Parameters.Add("@UserName", SqlDbType.NVarChar, 30)
n_objCommand.Parameters(0).Value = strUserID
n_objCommand.Parameters(1).Value = strUserPass
n_objCommand.ExecuteNonQuery()‘*********这里出先问题*****
If n_objCommand.Parameters("@LoginFlag").Value = 1 Then
'存在
End If
存储过程:
CREATE PROCEDURE UserLogin
@UserID nvarchar(20),
@UserPass nvarchar(20),
@LoginFlag int output,
@UserName nvarchar(30) output
AS
declare @strSql nvarchar(200)
select @loginflag=count(*) from userinfodb where userid=convert(nvarchar(20),@userid) and userpass=convert(nvarchar(20), @userpass )
if @loginflag=1
begin
select @UserName= username from userinfodb where userid=convert(nvarchar(20),@userid) and userpass=convert(nvarchar(20), @userpass )
end
else
begin
set @loginflag=0
set @UserName=""
end
return @loginflag
return @username
请大家帮帮忙,不胜感激。