0

我正在尝试将我的 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 ''- 在上述代码的最后一行捕获。

这将如何解决(最好不深入研究数据库本身......)?

发送

4

4 回答 4

5

代替

cmd.CommandType = CommandType.StoredProcedure

cmd.CommandType = CommandType.Text

问题是您指定要调用存储过程,而实际上您只有一个查询。所以你应该指定这是一个查询。

于 2012-09-06T10:03:56.823 回答
0

你应该改变:

cmd.CommandType = CommandType.StoredProcedure

cmd.CommandType = CommandType.Text
于 2012-09-06T10:04:13.140 回答
0

你不能这样做。您不能即时创建存储过程。一旦您选择了,CommandType.StoredProcedure那么它会期望您将过程名称传递给myQuery. 所以你必须使用cmd.CommandType = CommandType.Text

于 2012-09-06T10:04:34.260 回答
0

您需要将其更改为

cmd.CommandType = CommandType.Text

存储过程不同于运行文本查询(就像您在此处所做的那样)。

于 2012-09-06T10:05:03.780 回答