2013-03-03 73 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

相关问题