我希望有人可以帮我弄清楚如何返回我的参数值。我试图获得一个值,我可以在我的程序的其余部分使用,但似乎无法弄清楚如何获得它。这是我正在做的(在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
答案 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
我希望它可以帮到你。 :)