0

5StarResults という列を持つ Percentages というテーブルがあり、これに 5star というストアド プロシージャの結果を入力したいと思います。

「Call 5star」を使用すると、パーセンテージのみが返されます。このパーセンテージをパーセンテージ テーブルに挿入したいと思います。

挿入を含めるように手順を編集しようとしましたが、常に 0 行が挿入されたと表示されます。

ありがとうございました

編集、

ストアドプロシージャは次のとおりです

BEGIN
  declare Rating5Total int default 5;
  declare Rating5Win int default 5;
  declare 5StarPerformance decimal;
  set Rating5Total = (select COUNT(Ratings) from vHighPerformance where Ratings = 7);
  set Rating5Win = (select COUNT(Results) from vHighPerformance where Ratings = 7 and Results = 1);
  set 5StarPerformance = Rating5Win*100.0/Rating5Total;
  Select 5StarPerformance;
END
4

1 に答える 1

0

同じストアド プロシージャで INSERT を実行するオプションがある場合は、次のコードが機能するはずです。

CREATE PROCEDURE `5star`()
BEGIN
    DECLARE Rating5Total INT DEFAULT 5;
    DECLARE Rating5Win INT DEFAULT 5;
    DECLARE 5StarPerformance DECIMAL(18, 3);
    SET Rating5Total := (SELECT COUNT(Ratings) FROM vHighPerformance WHERE Ratings = 7);
    SET Rating5Win := (SELECT COUNT(Results) FROM vHighPerformance WHERE Ratings = 7 AND Results = 1);
    SET 5StarPerformance := Rating5Win*100.0/Rating5Total;
    /* INSERT INTO percentages (percentage) VALUES (5StarPerformance); */
    INSERT INTO percentages (id, percentage) VALUES (1, 5StarPerformance)
       ON DUPLICATE KEY UPDATE percentage = 5StarPerformance;
    SELECT 5StarPerformance;
END$$

例はSQL Fiddleにあります。

アップデート

table に 1 つのレコードが必要な場合はpercentages、UPSERT を作成できます。更新されたコードを参照してください。

于 2013-10-11T20:02:05.863 に答える