Поскольку вы используете команду GO
, я предполагаю, что вы хотите реализовать процедуру в TSQL
.Вот некоторые ошибки в вашем коде:
CREATE PROCEDURE registrarCuenta
(
@username NVARCHAR(255),
@password NVARCHAR(255),
@salt NVARCHAR(255),
@email NVARCHAR(100)
)
AS
BEGIN
DECLARE code FLOAT(5,2); -- or whatever you like
INSERT INTO `Usuarios` (`username`, `password`, `salt`, `email`) VALUES
(@username, @password, @salt, @email);
SET @code = lpad(conv(floor (rand()*pow(36,10)), 10, 36), 10, 0);
WHILE(EXISTS(SELECT * FROM `Activaciones` WHERE `code` = @code)) -- not sure if this is correct
BEGIN
SET @code = lpad(conv(floor(rand()*pow(36,10)), 10, 36), 10, 0);
END
INSERT INTO `Activaciones` (`code`) VALUES (@code);
END
GO;
Или, если вы действительно хотите MySQL:
DELIMITER $$
CREATE PROCEDURE registrarCuenta
(
IN username VARCHAR(255),
IN password VARCHAR(255),
IN salt VARCHAR(255),
IN email VARCHAR(100)
)
AS
BEGIN
DECLARE code FLOAT(5,2); -- or whatever you like
INSERT INTO `Usuarios` (`username`, `password`, `salt`, `email`) VALUES
(@username, @password, @salt, @email);
SET @code = lpad(conv(floor (rand()*pow(36,10)), 10, 36), 10, 0);
WHILE(EXISTS(SELECT * FROM `Activaciones` WHERE `code` = @code)) DO -- not sure if this is correct
SET @code = lpad(conv(floor(rand()*pow(36,10)), 10, 36), 10, 0);
END WHILE;
INSERT INTO `Activaciones` (`code`) VALUES (@code);
END$$
DELIMITER ;
Не стесняйтесь уточнить процесс, который вы пытаетесь реализовать, чтобы бытьпредоставляется дополнительная поддержка!