Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从VB.NET调用存储过程_Vb.net - Fatal编程技术网

从VB.NET调用存储过程

从VB.NET调用存储过程,vb.net,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 men

有人能在以下方面帮助我吗

我创建了一个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
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)
现在我从VB.NET调用这个过程,但是我得到了一个类似“存储过程prcGet_sub_menu_list expected parameter@sub_menu(未提供)”的错误。请帮我做同样的事。我在VB.NET中的代码如下:

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
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”

请给我一些同样的帮助

问候,,
George

正如消息所暗示的,您应该以与添加“菜单代码”参数相同的方式添加名为“sub_menu”的参数。您可能还应该给它一个值:

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

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

您需要使用正确的参数名

差不多

sqlCmd.Parameter.Add("@sub_menu", SqlDbType.Char)
sqlCmd.Parameters("@sub_menu").Value = val
并给它赋值

差不多

sqlCmd.Parameter.Add("@sub_menu", SqlDbType.Char)
sqlCmd.Parameters("@sub_menu").Value = val
看看


而且,您可能必须提供与存储过程中相同的参数名和类型

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

吉莎。

几件事。参数应该是参数。另外,sqlCmd.Parameters.Add已弃用,因此请使用sqlCmd.Parameters.AddWithValue:


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

亲爱的Geetha,非常感谢您的回复。我尝试了同样的方法,它也能工作,但是当我在那里传递一个变量时,它不起作用,并且给了我一个错误,而不是你给出的值“Joe”。我给出了类似sqlCmd.Parameters.Add(newsqlparameter(“@menu_code”,SqlDbType.Char,5)).Value=menuCode的语句。请提供相同的帮助。过程或函数“prc_test”需要参数“@menu_code”,但未提供该参数。这是错误代码。当我以.value=“MENU1”的形式传递值时,不会出现此错误,它可以通过给我正确的输出来正常工作,但当我传递变量时不会出现此错误。请给我一些建议。谢谢。是的,它很有价值。不知道显示此类错误的原因。请尝试将存储过程和sqldbtype中的数据类型更改为varchar/nvarchar。亲爱的Geetha,很抱歉,变量没有值,这就是错误的原因。现在它运行良好,非常感谢您的帮助和支持。亲爱的Evgeny,感谢您的回复。我也尝试了同样的方法,当在末尾给出一个值时,它就起作用了,比如.value=“MENU1”,但是当我在那里传递一个变量时,它就不起作用了,并且给我一个错误。我给出了类似sqlCmd.Parameters.Add(newsqlparameter(“@menu_code”,SqlDbType.Char,5)).Value=menuCode的语句。请帮我做同样的事情。