2013-10-11 4 views
0

У меня есть таблица под названием Percentages with Column под названием 5StarResults, я хотел бы заполнить ее результатами имен хранимых процедур 5star.Вставить результаты хранимой процедуры в существующую таблицу

Когда я использую 'Call 5star', он возвращает только процент, я бы хотел, чтобы этот процент вставлялся в таблицу Percentages.

Пожалуйста, помогите, я попытался отредактировать процедуру, чтобы включить Insert, но он всегда возвращается, говоря, что вставлено 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 
+0

Вы можете оставить отзыв для хранимой процедуры '5star'? – wchiquito

+0

вам понадобится использовать временную таблицу, позвольте мне попытаться что-то издеваться – CSharper

ответ

0

Если опция сделать вставку в одной и той же хранимой процедуры, следующий код должен работать:

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.

UPDATE

Если вам нужен один единственный рекорд по таблице percentages, вы можете сделать UPSERT. См. Обновленный код.

+0

Отлично, спасибо :-) – user2785062

+0

Возможно ли это с помощью UPDATE, так как каждый раз, когда он запускается, он добавляет новую строку. спасибо – user2785062

+0

Смотрите обновленный код. – wchiquito

Смежные вопросы