从VB.NET调用存储过程
有人能在以下方面帮助我吗 我创建了一个SQL Server存储过程,如下所示:从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
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的语句。请帮我做同样的事情。