以下代码是我在查询分析器中执行的!没有问题,但我不知道asp.net中怎样去读取这个过程.请大家帮忙
declare @isresult smallint
set @isresult=2
execute st_uponline '1',@isresult output
print @isresult
declare @isresult smallint
set @isresult=2
execute st_uponline '1',@isresult output
print @isresult
SqlCommand myCommand = new SqlCommand("Pr_GetUsers",myConnection);
//調用存儲過程
myCommand.CommandType = CommandType.StoredProcedure;
SqlDataReader dr = null;
try
{
myConnection.Open();
}
catch(Exception ex)
{
throw new MyException("10001","錯誤!",ex);
}
try
{
dr = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
catch(Exception ex)
{
throw new MyException("10001",ex.Message,ex);
}return dr;這是調用存儲過程的代碼。你參考一下吧
比如说有个叫:DbDataAdapter 类
(@userid [varchar](50),
@isresult smallint output)AS
set @isresult=2
if not exists (select * from online where userid=@userid)
begin
set @isresult=1
end
if exists (select * from online where userid=@userid)
begin
--return 0
set @isresult=0
end
return @isresult
GO
这是写存储过程代码,bs老是返回0
Public Function UpdateOnlineInfo(ByVal userid As String) As Integer
Dim condb As SqlConnection
condb = New SqlConnection(System.Configuration.ConfigurationSettings.AppSettings("constr"))
condb.Open()
Dim selestr As SqlCommand
selestr = New SqlCommand("st_uponline", condb)
selestr.CommandType = CommandType.StoredProcedure
Dim isresult As Integer
isresult = 2
Dim userpar As New SqlParameter("@userid", SqlDbType.VarChar)
Dim sqlpa As New SqlParameter("@isresult", SqlDbType.SmallInt)
selestr.Parameters.Add("@userid", userid)
selestr.Parameters.Add("@isresult", isresult)
Dim reader As SqlDataReader
reader = selestr.ExecuteReader
Dim bs As Integer
sqlpa.Direction = ParameterDirection.ReturnValue
bs = sqlpa.Value
Return bs
condb.Close()
End Function 'UpdateOnlineInfo
Dim condb As SqlConnection
condb = New SqlConnection(System.Configuration.ConfigurationSettings.AppSettings("constr"))
condb.Open()
Dim selestr As SqlCommand
selestr = New SqlCommand("st_uponline", condb)
selestr.CommandType = CommandType.StoredProcedure
sqlCmd.Parameters.Add("@userid", userid);
sqlCmd.Parameters.Add("@isresult", SqlDbType.SmallInt);
sqlCmd.Parameters["@isresult"].Direction = ParameterDirection.Output;
sqlCmd.ExecuteNonQuery();
Dim bs As Integer
bs = sqlCmd.Parameters["@isresult"].Value
Return bs
condb.Close()
End Function 'UpdateOnlineInfo
这句话,不对下面有波浪线
不过我认为就是没有波浪线运行的话,它也会报参数isresult没有值
这句话,在这里也不能用,,用波浪线,
selestr.Parameters["@isresult"].后面就没有direction这个方法
但我不给值,运行时就报没有给参数@isresult赋值
----------
那是你沒有將參數定義為Output。剛那段代碼運行什麼錯誤?我測試OK的。不過你是用VB.NET的寫法,不知道是不是有些出入.
这是按您那个写的,报上面的错误
paoluo(一天到晚游泳的鱼) ( ) 信誉:100
也要其它帮助我的!!呵呵..
必须得把参数写进去,,
我把代码贴出来,让大家看看,,
Dim condb As SqlConnection
condb = New SqlConnection(System.Configuration.ConfigurationSettings.AppSettings("constr"))
condb.Open()
Dim selestr As SqlCommand
selestr = New SqlCommand("st_uponline", condb)
selestr.CommandType = CommandType.StoredProcedure
Dim isresult As Integer
isresult = 2
selestr.Parameters.Add("@userid", userid)
selestr.Parameters.Add("@isresult", SqlDbType.SmallInt)
selestr.Parameters("@isresult").Direction = ParameterDirection.ReturnValue
selestr.Parameters.Add("@isresult", isresult)
selestr.ExecuteNonQuery()
Dim bs As Integer
bs = selestr.Parameters("@isresult").Value
Return bs
condb.Close()