如何从存储过程返回参数值?

时间:2015-08-18 18:48:14

标签: sql-server vb.net visual-studio stored-procedures

我希望有人可以帮我弄清楚如何返回我的参数值。我试图获得一个值,我可以在我的程序的其余部分使用,但似乎无法弄清楚如何获得它。这是我正在做的(在VB.net中)。我尝试但没有返回任何值的代码是最后一行。 (我知道我将不得不公开宣布它并从这个子表单中将其传递给表单之间,但是现在我只是想要获得这个值)和想法?

谢谢!

    Dim cnn As New SqlConnection(my connection here...)
    Dim cmdUpdate, cmdInsert As SqlCommand
    Dim cmd As New SqlCommand("procedureName", cnn)
    Try

        Number = txtIncidentNumberUseOfForce.Text
        cmdInsert = New SqlCommand("procUseOfForce", cnn)


        With cmdInsert
            .CommandType = CommandType.StoredProcedure
            .Parameters.Add("@Height", SqlDbType.SmallInt, 10, "Height")
            .Parameters.Add("@Weight", SqlDbType.SmallInt, 10, "Weight")
            .Parameters.Add("@LastName", SqlDbType.NVarChar, 100, "LastName")
            .Parameters.Add("@FirstName", SqlDbType.NVarChar, 100, "FirstName")
            .Parameters.Add("@MiddleName", SqlDbType.NVarChar, 100, "MiddleName")
            .Parameters.Add("@Sex", SqlDbType.NVarChar, 50, "Sex")
            .Parameters.Add("@Race", SqlDbType.NVarChar, 50, "Race")
            .Parameters.Add("@DateOfBirth", SqlDbType.DateTime, 8, "DateOfBirth")
            .Parameters.Add("@FormID", SqlDbType.Int, 4, "FormID").Direction = ParameterDirection.InputOutput
            .Parameters.Add("@NameID", SqlDbType.Int, 4, "NameID").Direction = ParameterDirection.InputOutput

        End With

        cmdUpdate = cmdInsert.Clone()

                cmdUpdate.Parameters.Add("@RecordStatus", SqlDbType.Int).Value = 5
                cmdInsert.Parameters.Add("@RecordStatus", SqlDbType.Int).Value = 4


        With adapter
            .UpdateCommand = cmdUpdate
            .InsertCommand = cmdInsert
        End With



        bs.EndEdit()
        newAuditTrail.RecordChanges(ds, "tblName")
        adapter.Update(ds, "tblName")
        Dim DisplayMe As String = String.Empty
        cmdInsert.Parameters("@NameID").Value = DisplayName

2 个答案:

答案 0 :(得分:0)

我看不到你在哪里声明DisplayName,但我们假设你有。

我也没有看到你在执行cmdInsert的位置,但我们假设你是。

执行命令后,如果您尝试将DisplayName变量设置为输出参数“NameID”的值,那么您将向后退行。

应该是:

DisplayName = cmdInsert.Parameters("@NameID").Value

答案 1 :(得分:0)

这是一个如何从存储过程中获取InputOutput参数的示例:

SqlParameter parm= new SqlParameter("@ProductName", SqlDbType.VarChar); 
parm.Size=50; 
parm.Direction=ParameterDirection.InputOutput; 
cmd.Parameters.Add(parm);
var productName = cmd.Parameters["@ProductName"].Value;

不要忘记在存储过程中将参数@ProductName声明为输入,如下所示:

CREATE PROCEDURE GetProductName
@ProductName varchar(50) output

AS

SELECT @ProductName = Name FROM Products

我希望它可以帮到你。 :)