如何将一组参数传递给MySql select ... in

时间:2017-04-04 14:43:47

标签: mysql

我希望从mysql数据库文件中选择id为2,4,6的记录数组。我试图将一个整数数组传递给Mysql存储过程。但我无法创建一个有效的存储过程。

你能帮我写一个吗?

这是C#代码

   public static List<PhotoComment> GetPhotos(int[] _ids)
    {
        MySqlConnection _con = Generals.GetConnnection();
        List<PhotoComment> _comments = new List<PhotoComment>();
        try
        {
            MySqlCommand _cmd = new MySqlCommand("Photos_GetPhotosByIDs", _con);
            _cmd.CommandType = CommandType.StoredProcedure;
            _cmd.Parameters.AddWithValue("@_ids", _ids);

            _con.Open();
            MySqlDataReader _reader = _cmd.ExecuteReader();
            while (_reader.Read())
            {
                PhotoComment _comment = new PhotoComment(_reader.GetInt32("cID"), _reader.GetInt32("cFID"), _reader.GetString("cUser"), _reader.GetString("cContent"), _reader.GetDateTime("cDate"), _reader.GetBoolean("cChecked"));
                _comments.Add(_comment);
            }
            _con.Close();
        }
        catch (Exception _ex)
        {
            _con.Close();
            ReportMgr.ReportException(_ex.Message);
        }
        return _comments;
    }

这是mysql

CREATE DEFINER = root @ localhost程序Photos_GetPhotosByIDs(在_ids int []中)

BEGIN

从tbl_photos中选择*,其中ID位于_ids;

END

2 个答案:

答案 0 :(得分:0)

MySQL中没有数组类型。您可以使用表(临时表)。使用id值填充bale并连接表以获得所需的结果。

答案 1 :(得分:0)

我不确定我的问题是否正确,但我认为您要问的是如何将多个值发送到存储过程的输入参数。

如果这是您要求的内容,以下链接可能有所帮助。不确定MySql中是否存在这样的功能,但在SQL Server中,它被称为&#34;表值参数&#34; - 简称TVP。

TVP允许您将多个值传递到单个输入参数中。希望这会有所帮助:https://msdn.microsoft.com/en-us/library/bb675163(v=vs.110).aspx