2012-09-06 70 views
0

我试图发送我的SQL数据库查询作为存储过程。它不是真的存储在数据库中,我正在创建它。下面是代码(原谅我VB):找不到存储过程''

Dim idOfChosenRecord As Integer = {Some value} 
Dim myQuery As String "SELECT [field] FROM [myDB].[myTable] WHERE [id][email protected]" 
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 '' - 抓住上述代码的最后一行。

这将如何解决(最好不要挖掘到DB本身...)?

TX

回答

5

更换

cmd.CommandType = CommandType.StoredProcedure 

cmd.CommandType = CommandType.Text 

的问题是,你指定你要调用存储过程的时候,其实你刚才的查询。所以你应该指定这是一个查询。

+0

谢谢。我从另一个地方复制它,我想它不在那里工作... – JNF

+0

@JNF好的,但我的建议工作? – Andrey

+0

当然可以。即使省略它,我认为这是默认的。 – JNF

0

你应该改变:

cmd.CommandType = CommandType.StoredProcedure 

cmd.CommandType = CommandType.Text 
0

你不能做这种方式。您无法即时创建存储过程。一旦你选择CommandType.StoredProcedure那么它会期望你通过myQuery的程序名称。所以,你必须使用cmd.CommandType = CommandType.Text

0

您需要将其更改为

cmd.CommandType = CommandType.Text 

存储过程是从运行文本查询(就像你在这里做什么)不同。