webForumDet fria alternativet

Output och anropa

.NET

7 svar · 290 visningar · startad av pellesvenne

Medlem sedan jan. 2002227 inlägg
Frågan#1

hur anropar man en output med asp.net?

så här ser min sp ut:

CREATE PROCEDURE test
@outparm      int      OUTPUT
AS

SELECT @outparm = Update medlemmar set Online = 1
IF (@outparm > 0)
RETURN 0
ELSE
RETURN 99
GO
Medlem sedan mars 20023 561 inlägg
#2
// C#
SqlConnection objConn = new SqlConnection(<[i]connectionsträng[/i]>);
SqlCommand objCmd = new SqlCommand("test", objConn);
objCmd.CommandType = CommandType.StoredProcedure;

SqlParameter param = objCmd.Parameters.Add("@outparm", SqlDbType.Int);
param.Direction = ParameterDirection.Output;

objCmd.ExecuteNonQuery();

int value = param.Value;

objCmd.Dispose();
objConn.Dispose();
Medlem sedan maj 20012 812 inlägg
#3

Du skall dock inte använd RETURN eftersom det inte är en "Output" parameter utan en "Return" parameter.

Så sätt din @OUTPUT parameter till värdet 0 eller 99 så kommer det att fungera.

- M

Medlem sedan jan. 2002227 inlägg
#4

josef> hur ska den se ut i vb da?
så ser den ut nu´!

   Dim objConn As New SqlConnection(ConfigurationSettings.AppSettings("connection"))

        Dim objCmd As New SqlCommand("checkLogin", objConn)
        objCmd.CommandType = CommandType.StoredProcedure

        objCmd.Parameters.Add("@anvandarnamn", SqlDbType.VarChar, 15).Value = anvandarnamn.Text
        objCmd.Parameters.Add("@losenord", SqlDbType.VarChar, 15).Value = losenord.Text

        objCmd.Connection.Open()

        Dim objReader As IDataReader = objCmd.ExecuteReader()

        Dim i As String = objReader.Read().ToString()

        If i = "1" Then
            Session("anvandarnamn") = anvandarnamn.Text
            'Response.Redirect("logged.aspx")
        Else
            'Response.Redirect("login.aspx")
        End If
Medlem sedan juli 20022 537 inlägg
#5

Josefs kod i vb:

Dim objConn As New SqlConnection(<connectionsträng> )
Dim objCmd As New SqlCommand("test", objConn)
objCmd.CommandType = CommandType.StoredProcedure

Dim param As SqlParameter = objCmd.Parameters.Add("@outparm", SqlDbType.Int)
param.Direction = ParameterDirection.Output

objCmd.ExecuteNonQuery()

Dim value As Integer = param.Value

objCmd.Dispose()
objConn.Dispose()

Kan ha smygit in något fel..

Medlem sedan jan. 2002227 inlägg
#6

Procedure or function checkLogin has too many arguments specified.

Medlem sedan juli 20022 537 inlägg
#7

Vad är checkLogin?

Medlem sedan apr. 2004778 inlägg
#8

Läs den här artikeln som Engine postade i det förra inlägget du frågade om db connections.

Using Return Code and Output Parameters for Stored Procedures

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)