0

次のようなストアドプロシージャがあります。

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];
}

例外/エラーはありませんが、値もありません。

4

2 に答える 2

1

エラーは LIKE 句にあります

  (Location LIKE '@Searchvalue%');

する必要があります

  (Location LIKE @Searchvalue);

'%' ワイルド カードは、C# コードでパラメーター値に直接追加する必要があります。

 command.Parameters.AddWithValue("@Searchvalue", Searchvalue + "%");
于 2013-03-03T10:05:11.630 に答える
0

これを変更してみてください:

(Location LIKE '@Searchvalue%');

に:

(Location LIKE @Searchvalue + '%');
于 2013-03-03T10:06:48.143 に答える