SQLの経験はほとんどないので、この質問は少しはっきりしているかもしれませんが、私が読んだところではBEGIN/ENDを正しく使用しているようです。私は複数のステートメントを連続して実行させるためにBEGIN/ENDを使用しています。目標は、テーブルから以前の「勝者」を削除してから、新しい「勝者」でテーブルを計算して設定することです。テーブルは1つのレコードしか持たないはずです。勝者。ステートメントがどのように構成されていても、最初の有効なステートメントを過ぎて処理することはできません。複数の文を含むSQLプロシージャ
create procedure contest.getWinner()
begin
begin
delete from contest.winner
where stars > 0;
end
begin
insert into contest.winner(img, stars, cur_DT)
(SELECT A.img, A.stars, now()
FROM
(
SELECT
I.img,
SUM(I.stars) as stars,
MIN(I.cur_DT) as TieBreaker
FROM
contest.votes as I
GROUP BY I.img
)as A
ORDER BY
A.stars DESC,
A.TieBreaker
limit 1
);
end
end
どのエンジンがありますか?何かエラーが出ますか? – Nivas
内部のbegin/endを削除しようとしましたか? –
私はwin7でMySqlを使用し、MySql Workbenchで編集しています。私はラベルを含むbegin/endのすべての順列を試してきました。そして、 'begin try'、ネストされたbegin/end、single outterのほとんどのbegin/endなどを... – nullsteph