2013-03-03 76 views
0

我有一個存儲過程如下:無法獲得結果,通過在C#中的數據集存儲過程

ALTER PROCEDURE GetPatientSearchResultFromLocation(@Searchvalue varchar(100)) 
AS 
    SELECT  
     RegNo, FirstName, MiddleName, LastName, EmailId, FrCityId, Location, MobileNo 
    FROM   
     PatientsReg 
    WHERE  
     (Location LIKE '@Searchvalue%'); 

在這裏,如果我只運行SQL查詢它給了我相應的輸出,但是當我在使用它過程它不會返回任何值,只是普通的表結構。

我的C#代碼如下:

public DataTable GetPatientDetailsFromLocation(string Searchvalue) 
{ 
     command = new SqlCommand("GetPatientSearchResultFromLocation", connection); 
     command.CommandType = CommandType.StoredProcedure; 
     command.Parameters.AddWithValue("@Searchvalue", Searchvalue); 
     command.UpdatedRowSource = UpdateRowSource.OutputParameters; 
     adp = new SqlDataAdapter(command); 
     connection.Open(); 
     adp.Fill(ds); 
     connection.Close(); 
     return ds.Tables[0]; 
} 

沒有例外/錯誤,但也沒有任何價值。

+1

歡迎StackOverflow上:如果您發佈的代碼,XML或數據樣本,** **請在突出那些行文本編輯器並單擊編輯器工具欄上的「代碼示例」按鈕(「{}」),以良好地格式化和語法突出顯示它! – 2013-03-03 10:01:54

+1

你正在使用什麼** RDBMS **?你用'plsql'來標記你的問題,這是在Oracle中找到的PL/SQL - 但代碼看起來很像微軟的SQL Server ** ...... – 2013-03-03 10:03:06

+1

也許你應該更新你的標籤。 PL/SQL是Oracle SQL語言,但您使用SQLServer的類 – Steve 2013-03-03 10:03:10

回答

0

試圖改變這一點:

(Location LIKE '@Searchvalue%'); 

到:

(Location LIKE @Searchvalue + '%'); 
+0

http://stackoverflow.com/users/1210760/iswanto-san那就像奇蹟Iswanto San一樣工作。但我不明白爲什麼當這兩個產品屬於微軟,即SQL服務器和程序,這樣的差異呈現? – 2013-03-03 10:09:41

1

該錯誤是LIKE子句

(Location LIKE '@Searchvalue%'); 

在應該是

(Location LIKE @Searchvalue); 

而不單引號,而「%」通配符應直接在C#代碼被添加到參數值。

command.Parameters.AddWithValue("@Searchvalue", Searchvalue + "%"); 
+1

它不應該是@Searchvalue +'%'嗎? – Mortalus 2013-03-03 10:06:30

+0

我猜錯誤持續,因爲我複製直接從sql服務器粘貼查詢,因爲它在那裏運行良好。 – 2013-03-03 10:13:41

+0

Thankyou非常感謝您的幫助!令人印象深刻!但是不應該查詢渲染引擎在兩個工作都一樣嗎? – 2013-03-03 10:17:54

相關問題