我在SQL Server 2008中编写了以下SQL语句,即使表中有数据,也不会返回OUTPUT参数的值。我添加了静态值并单独运行查询并生成了一条记录,所以我不确定它是否与我的存储过程或我的VB.NET代码有关。
ALTER Procedure [dbo].[GetGenInfo_Delete01_01_22]
@IDX int,
@FPath varchar(100) OUTPUT
AS
Begin
SELECT @FPath = FilePath FROM GENINFO_E1_01_22 WHERE ID = @IDX
DELETE
FROM GenInfo_E1_01_22
WHERE ID = @IDX
END
我的VB代码
Using con As New SqlConnection(connstr)
Using cmd As New SqlCommand()
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "GetGenInfo_Delete01_01_22"
cmd.Parameters.Add("IDX", ID)
cmd.Parameters.Add("@FPath", SqlDbType.VarChar, 100)
cmd.Parameters("@FPath").Direction = ParameterDirection.Output
cmd.Connection = con
con.Open()
GridView1.DataSource = cmd.ExecuteReader()
GridView1.DataBind()
con.Close()
End Using
End Using
答案 0 :(得分:3)
输出参数未显示在结果集中。因此,您无法使用ExecuteReader()
阅读它。
你可以这样读:
Dim result as String = cmd.Parameters("@FPath").Value