How do I get an output Parameters value from a stored procedure

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • CyberSoftHari
    Recognized Expert Contributor
    • Sep 2007
    • 488

    How do I get an output Parameters value from a stored procedure

    I am trying to get an output Parameters value from a stored procedure using
    sqlDataSource in asp.net 2.0. But I only get a null value for the
    output Parameters. Can someone Point me to get value?

    [code=cpp]
    SqlDataSource InsertDS = getSqlDataSourc e;
    //-----------------parameters
    InsertDS.Insert Parameters.Add( "FirstName" , FirstName);
    ............... ............... .........
    //----------------This is an Output Param
    InsertDS.Insert Parameters.Add( "outQryStat us", strOutStatus);
    InsertDS.Insert Command = "RegisterUs er";
    try{
    intRowsAffected = InsertDS.Insert ();
    //-------------Trying to get and return
    return InsertDS.Insert Parameters[7].DefaultValue.T oString();
    //-----------------And also tyried
    //return strOutStatus; //this also return null
    }
    catch ........Block
    ............... ............... ............
    [/code]
    Note: I am using it in my Webservice.cs.
  • Plater
    Recognized Expert Expert
    • Apr 2007
    • 7872

    #2
    It doesn't look like you're designating your parameter's direction as output.

    For example:
    Code:
    SqlCommand sc = new SqlCommand("AddNewBillOfMaterialsConnections", dbcon);
    sc.CommandType = CommandType.StoredProcedure;
    
    sc.Parameters.Add("@PartID", SqlDbType.BigInt);
    sc.Parameters["@PartID"].Value = PartID;
    
    sc.Parameters.Add("@Notes", SqlDbType.VarChar);
    sc.Parameters["@Notes"].Value = quoteReplace(Notes);
    
    sc.Parameters.Add("@ModifiedDate", SqlDbType.DateTime);
    sc.Parameters["@ModifiedDate"].Value = ModifiedDate;
    
    //out
    sc.Parameters.Add("@BOMConnectionID", SqlDbType.BigInt);
    sc.Parameters["@BOMConnectionID"].Direction = ParameterDirection.Output;
    
    sc.ExecuteNonQuery();
    Int64 retval = (Int64)sc.Parameters["@BOMConnectionID"].Value;
    sc.Dispose();

    Comment

    • CyberSoftHari
      Recognized Expert Contributor
      • Sep 2007
      • 488

      #3
      Working fine with SqlCommand (i chang it in my code). How to do it in SqlDataSource?
      Thank you.

      Comment

      • Plater
        Recognized Expert Expert
        • Apr 2007
        • 7872

        #4
        I think you can do:
        InsertDS.Insert Parameters["paramName"].Direction = ParameterDirect ion.Output;

        Comment

        • CyberSoftHari
          Recognized Expert Contributor
          • Sep 2007
          • 488

          #5
          Thank you plater, I feel SqlCommand is easer than SqlDataSource.
          In SqlDS we need to use Different properties for Insert, Update, Delete and Select query commands.

          Comment

          • Plater
            Recognized Expert Expert
            • Apr 2007
            • 7872

            #6
            The SqlDataSource's Insert/Update/Delete are just instances of the SqlCommand object. the difference is, they get called automatically with special setups to handle the data in your datasource.

            Comment

            Working...