我有一个存储过程如下:
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];
}
没有异常/错误,但也没有值。
答案 0 :(得分:1)
错误在LIKE子句中
(Location LIKE '@Searchvalue%');
应该是
(Location LIKE @Searchvalue);
没有单引号,而'%'外卡应直接在C#代码中添加到参数值。
command.Parameters.AddWithValue("@Searchvalue", Searchvalue + "%");
答案 1 :(得分:0)
尝试改变这一点:
(Location LIKE '@Searchvalue%');
为:
(Location LIKE @Searchvalue + '%');