2009-10-15 30 views
1

我在执行存储过程时遇到问题...这个自动生成的t-sql查询有什么问题?

我有试图调用存储过程的C#代码。它看起来有点像这样:

DataTable myDataTable = new DataTable(); 
using (SqlConnection connection = new SqlConnection(myConnectionString)) 
{ 
    SqlCommand selectCommand = new SqlCommand("MyStoredProc", connection); 
    selectCommand.Parameters.Add(new SqlParameter("@myGuid", myGuid)); 
    SqlDataAdapter da = new SqlDataAdapter(selectCommand); 
    da.Fill(myDataTable); 
} 

当我执行它,我收到写着“附近有语法错误MyStoredProc'”的错误。

如果我跑SqlProfiler,我看到它试图运行我的存储过程是这样的:

exec sp_executesql 
N'MyStoredProc', 
N'@myGuid uniqueidentifier', 
@myGuid='FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF' 

果然,如果我尝试做同样的事情,我得到了同样的错误。所以我的问题是:

  1. 生成的查询有什么问题?
  2. 为什么C#生成无效查询?我在C#代码中做错了什么?

编辑: Agent_9191钉它...我愚蠢地留出到的SelectCommand类型设置为StoredProcedure的声明。新产生的查询是:

exec MyStoredProc @myGuid='FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF' 

这(当然)工作正常。

+0

请显示发生错误的实际存储过程。我的直觉是,SQL有问题,而不是C#代码。 – 2009-10-15 20:52:43

+0

@Josh:不......它不是......我可以用任何随机字符串(不存在的存储过程)替换“MyStoredProc”,我仍然会得到错误...这真的是一个语法错误电话。 – Beska 2009-10-15 20:57:13

回答

7

请务必设置您的selectCommand.CommandType = CommandType.StoredProcedure

+0

噢,我的天啊......对我而言,这是一件非常愚蠢的事...... – Beska 2009-10-15 20:52:31

+0

发生在我们身上:) – 2009-10-15 21:02:30