2013-05-14 66 views
0

我在SQL Server 2008中有以下存储过程,它不会在SQL中产生任何错误,但会在Web应用程序中生成一个,其中声明“'GetGenInfo_Delete01_01_22''期望参数'@ FPath',不提供“。我是SQL的新手,但我想要做的是在删除行之前将字段返回给VB.NET。任何建议都会非常有帮助。使用SQL输出和ASP.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 [email protected]) 

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 

回答

1

你创建参数returnParameter,但你不能将它添加到参数集合。在数据库调用之前使用cmd.Parameters.Add(returnParameter)

+0

我以后returnParameter.Direction = ParameterDirection.ReturnValue 加入cmd.Parameters.Add(returnParamter),但我收到的调试说明SqlParameter有一个错误已被另一SqlParameterCollection遏制。 – 2013-05-14 18:44:48

+0

您可以发布更新的代码吗? – 2013-05-14 18:50:04

+0

已更新的代码在原始帖子中 – 2013-05-14 18:52:45

0

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

SqlParameter fpath = new SqlParameter(); 
fpath.Direction = ParameterDirection.Output; 
fpath.ParameterName = "@FPATH"; 
cmd.Parameters.Add(p); 
+0

他已经创建@FPath参数,只需将其添加到集合中即可。哦,它是VB.NET – 2013-05-14 18:36:39

+0

啊,我没有看到,因为在我的屏幕上,返回参数行看起来像是被注释掉了。我只是跳过他们 – Melanie 2013-05-14 18:52:44