0

我在 SQL Server 2008 中有以下存储过程,它不会在 SQL 中生成任何错误,但会在 Web 应用程序中生成一个声明“'GetGenInfo_Delete01_01_22' 需要参数'@FPath',未提供”。我在 SQL 方面相当新手,但我想做的是在删除行之前将一个字段返回到 VB.NET。任何建议都会非常有帮助。

ALTER Procedure  [dbo].[GetGenInfo_Delete01_01_22]
   @IDX int,
   @FPath varchar(100) OUTPUT
AS
Begin
SELECT @FPath  = (SELECT 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)
            Dim returnParameter = cmd.Parameters.Add("@FPath", SqlDbType.VarChar)
            returnParameter.Direction = ParameterDirection.ReturnValue
            cmd.Connection = con
            con.Open()
            GridView1.DataSource = cmd.ExecuteReader()
            GridView1.DataBind()
            con.Close()
        End Using
    End Using
4

2 回答 2

1

您正在创建 parameter returnParameter,但没有将其添加到参数集合中。cmd.Parameters.Add(returnParameter)在 DB Call 之前使用。

于 2013-05-14T18:22:55.747 回答
0

您可以将 FPath 参数添加到 cmd。像这样做:

SqlParameter fpath = new SqlParameter();
fpath.Direction = ParameterDirection.Output;
fpath.ParameterName = "@FPATH";
cmd.Parameters.Add(p);
于 2013-05-14T18:25:48.213 回答