HeidiSQL で次の行でエラー 1064が表示される次のストアド プロシージャを作成しました。SET pay_ref = SELECT CONCAT('KOS' ...
まず、この手順で何が起こっているのかを説明しましょう。gamers
auto_increment を持つ BIGINT 主キーを持つテーブルがあります。このプロシージャは次のことを想定しています。
- ユーザーからいくつかのパラメーターを受け取ります
- ユーザーの電子メール アドレスに基づいてデータベースにユーザーが既に存在するかどうかを確認し、レコードが存在する場合は「DUPLICATE」という単語を吐き出します。
- それ以外の場合は、通常どおり挿入を行います
- 次に、作成された新しいレコードの ID を読み取り、それを varchar に変換し、先頭にゼロを埋め込んでから、他の文字列と連結します。
- この新しい文字列 (たとえば
KOS00001ABCDEF
) がフィールドに更新されpay_refcode
ます >>> これが、ユーザーの一意の支払い参照を生成することに決めた方法です - すべてがうまくいけば
retval
、新しく生成された参照コードで更新され、PHP スクリプトによって読み取られます。
DELIMITER //
CREATE PROCEDURE `InsertGamer` (
IN p_fname VARCHAR(30),
IN p_lname VARCHAR(30),
IN p_email VARCHAR(255),
IN p_favgame VARCHAR(60),
IN p_pay_suffix VARCHAR(6),
OUT retval VARCHAR(14)
)
BEGIN
DECLARE last_id BIGINT;
DECLARE pay_ref VARCHAR(14);
IF (EXISTS(SELECT * FROM gamers WHERE (email = p_email))) THEN
SET retval = 'DUPLICATE';
ELSE
INSERT INTO gamers (fname, lname, email, favgame, pay_refcode)
VALUES (p_fname, p_lname, p_email, p_favgame, NULL);
SET last_id = LAST_INSERT_ID();
SET pay_ref = SELECT CONCAT('KOS', (SELECT LPAD(CONVERT(last_id, VARCHAR(5)),5,'0')), p_pay_suffix);
UPDATE gamers
SET pay_refcode = pay_ref
WHERE application_id = last_id;
SET retval = pay_ref;
END IF;
END //
私は一生、問題が何であるかを理解することはできません。あなたからの助けに心から感謝します. 事前にどうもありがとうございました!