0

これは、1 つ以上の結果を持つ asp.net4.0 グリッドビューを設定するための私の MySQL SP です。しかし、それは1行しか返していません。グリッドビューにすべての結果を入力する方法を教えてください。ありがとうございました。

    CREATE DEFINER=`metro`@`localhost` PROCEDURE `p_get_plants_gridview`()
        LANGUAGE SQL
        NOT DETERMINISTIC
        MODIFIES SQL DATA
        SQL SECURITY DEFINER
        COMMENT 'procedure to populate plants gridview in plants.aspx page.'
    BEGIN
    DECLARE noMoreRow INT DEFAULT 0;
    DECLARE plantid         INT UNSIGNED;
    DECLARE plantname   VARCHAR(100);
    DECLARE plantcode   VARCHAR(10);
    DECLARE plantaddr1  VARCHAR(50);
    DECLARE plantaddr2  VARCHAR(50);
    DECLARE plantaddr3  VARCHAR(50) ;
    DECLARE O_PL_CURSOR  CURSOR FOR SELECT plant_id,
                                                        plant_name, 
                                                        plant_code,
                                                        plant_addr1,
                                                        plant_addr2,
                                                        plant_addr3
                                                FROM    plants;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET noMoreRow = 1;
    OPEN O_PL_CURSOR; 
    LOOPROWS: LOOP
          FETCH O_PL_CURSOR INTO plantid,plantname,plantcode,plantaddr1,plantaddr2,plantaddr3;
          IF noMoreRow  THEN

              LEAVE LOOPROWS;

          END IF;
          SELECT plantid,plantname,plantcode,plantaddr1,plantaddr2,plantaddr3;
        END LOOP;                                           
                  CLOSE O_PL_CURSOR;
    END;

これは、データテーブルにデータを入力するための ASP.net ルーチンです。

public DataTable GetPlants_Grid() 
   {
                MySqlConnection conn = new  
                                         MySqlConnection(Configuration.ConnectionInfo);
        DataTable dt = new DataTable();
        MySqlCommand cmd = new MySqlCommand("p_get_plants_gridview", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        conn.Open();
        dt.Clear();
    try
    {
        MySqlDataAdapter da = new MySqlDataAdapter();
        da.SelectCommand = cmd;
        da.Fill(dt);
    }
        catch (MySqlException ex) { string msg = ex.Message; }
        finally { conn.Close(); }
        return dt;
    }
4

1 に答える 1

0

プロシージャは、各行に対してplants発行することにより、テーブル内の行と同じ数の結果セットを返しますSELECT

CURSORこれで、手順で使用する必要はまったくなくなりました。あなたはそれをただに煮詰めます

CREATE PROCEDURE p_get_plants_gridview()
  SELECT plant_id,
         plant_name, 
         plant_code,
         plant_addr1,
         plant_addr2,
         plant_addr3
    FROM plants;

または、これを使用しSELECTてグリッドにデータを入力します

于 2013-09-16T08:21:55.333 に答える