2014-12-23 25 views
0

這個問題讓我很生氣。我的代碼片段提交值的存儲過程:SQL Server錯誤過程或函數'PerformKeywordSearch'期望參數'@SearchString',這是沒有提供

using (var con = new SqlConnection(this.Connection.ConnectionString)) 
     { 
      con.Open(); 
      using (SqlCommand cmd = new SqlCommand("EXEC PerformKeywordSearch", con)) 
      { 
       cmd.Parameters.Add(new SqlParameter { Value = submittedString, DbType = DbType.String, ParameterName = "@SearchString" }); 

       using (var dr = cmd.ExecuteReader()) 
       { 
        matches.Add(
         int.Parse(dr["JobID"].ToString()), 
         float.Parse(dr["RANK"].ToString())); 
       } 
      } 
     } 

在SQL Server Profiler中我可以看到,它提交該到數據庫:

exec sp_executesql N'EXEC PerformKeywordSearch',N'@SearchString nvarchar(26)',@SearchString=N'(software AND developer)' 

我總是得到錯誤:

過程或函數'PerformKeywordSearch'期望參數'@SearchString',它沒有提供。

我不知道爲什麼我得到這個,如果我重新格式化稍微是:

EXEC PerformKeywordSearch @ SearchString在= N「(軟件和開發者)」

然後一切正常完美。這是ADO.NET的問題還是我需要一些聰明的格式來使這項工作?

+0

檢查這個https://social.msdn.microsoft.com/Forums/sqlserver/en-US/4e7366e9-7b16:在這個環節

SqlConnection sqlConnection1 = new SqlConnection("Your Connection String"); SqlCommand cmd = new SqlCommand(); SqlDataReader reader; cmd.CommandText = "PerformKeywordSearch"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@SearchString", SqlDbType.VarChar).Value = "software AND developer"; cmd.Connection = sqlConnection1; sqlConnection1.Open(); // Return value use reader reader = cmd.ExecuteReader(); // Not return value use cmd.ExecuteNonQuery() sqlConnection1.Close(); 

參考-4ad2-9616-816ccbffdf63 /執行存儲過程與輸入參數使用spexecutesql論壇= transactsql –

回答

相關問題