我正在尝试将SQL DB作为存储过程发送。它并没有真正存储在数据库中,我正在动态创建它。这是代码(借口我的VB):
Dim idOfChosenRecord As Integer = {Some value}
Dim myQuery As String "SELECT [field] FROM [myDB].[myTable] WHERE [id]=@id"
Dim cmd As SqlCommand = New SqlCommand(myQuery, myConnectionInitializedAndOpen)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlParameter("@id", idOfChosenRecord))
Dim Reader As SqlDataReader = cmdView.ExecuteReader()
类似的函数在我的代码之前运行良好(只是它调用了一个真正的存储过程),并且事实上整个模块都运行良好。 不同之处在于我正在尝试在现场创建查询。
错误消息是此问题的奇怪标题:
Could not find stored procedure ''
- 抓住了上述代码的最后一行。
如何解决这个问题(最好不要深入研究数据库本身......)?
TX
答案 0 :(得分:5)
替换
cmd.CommandType = CommandType.StoredProcedure
与
cmd.CommandType = CommandType.Text
问题是您指定要调用存储过程,而实际上您只是一个查询。所以你应该指定这是一个查询。
答案 1 :(得分:0)
你应该改变:
cmd.CommandType = CommandType.StoredProcedure
要
cmd.CommandType = CommandType.Text
答案 2 :(得分:0)
你不能这样做。您无法动态创建存储过程。选择CommandType.StoredProcedure
后,您会希望在myQuery
中传递过程名称。所以你必须使用cmd.CommandType = CommandType.Text
答案 3 :(得分:0)
您需要将其更改为
cmd.CommandType = CommandType.Text
存储过程与运行文本查询不同(就像您在此处所做的那样)。