从VB.NET调用存储过程

时间:2010-09-07 04:46:54

标签: vb.net

任何人都可以帮我解决以下问题:

我创建了一个SQL Server存储过程,如下所示:

create procedure prcGet_sub_menu_list
     @sub_menu     char(5)
as
begin
     select
          'menu_code'     =     menu_code
          'menu_name'     =     menu_name
     from sub_menu_master
     where menu_code      =     @sub_menu
end
return

现在我从VB.NET调用这个程序,但是我得到一个错误,比如'存储过程prcGet_sub_menu_list需要参数@sub_menu未提供'。请帮我一下。我在VB.NET中的代码如下:

Imports System.Data
Imports System.Data.SqlClient

Dim sqlConn as New SqlClient.SqlConnection
sqlConn.ConnectionString = "........"
sqlConn.Open()

Dim menuCode as string
menuCode = cboDetails.selectedItem

Dim sqlCmd as New SqlCommand
sqlCmd.Connection = Connection.sqlConn
sqlCmd.CommandType = CommandType.StoredProcedure
sqlCmd.CommandText = "prcGet_sub_menu_list"
sqlCmd.Parameter.Add("menuCode", SqlDbType.Char)

Dim sqlDA as New SqlDataAdapter()
sqlDA.SelectCommand = sqlCmd
Dim sqlDT as New DataTable
sqlDA.Fill(sqlDT)

这是我写的代码,它给了我错误: '存储过程prcGet_sub_menu_list需要未提供的参数@sub_menu'。

请给我一些帮助。

此致 乔治

4 个答案:

答案 0 :(得分:1)

如消息所示,您应该添加名为“sub_menu”的参数,方法与添加“menuCode”参数的方式相同。您可能还应该给它一个值:

sqlCmd.Parameter.Add("sub_menu", SqlDbType.Char).Value = "Blah"

(当然,我不知道正确的类型是什么,所以Char只是一个例子。)

答案 1 :(得分:1)

您需要使用正确的参数名称

这样的东西
sqlCmd.Parameter.Add("@sub_menu", SqlDbType.Char)

并为其指定一个值

这样的东西
sqlCmd.Parameters("@sub_menu").Value = val

查看SqlCommand.Parameters Property

也许Lesson 07: Using Stored Procedures

答案 2 :(得分:1)

您必须提供与存储过程相同的参数名称和类型。

  sqlCmd.Parameters.Add(New SqlParameter("@sub_menu", SqlDbType.Char, 5)).Value = "Joe"

格塔。

答案 3 :(得分:1)

一些事情。参数应为参数。也不推荐使用sqlCmd.Parameters.Add,因此请使用sqlCmd.Parameters.AddWithValue:

sqlCmd.Parameters.AddWithValue(“menuCode”,menuCode)