Estou criando um site para praticar e precisei fazer um banco de dados SQL para armazenar os usuários e seus privilégios. Eu queria fazer um procedimento armazenado para recuperar os privilégios do usuário selecionado, mas por algum motivo diz que tenho um erro de sintaxe, mas estou muito confuso sobre o que é. Isso tudo está no phpmyadmin hospedado no xampp, e infelizmente eu estou muito desacostumado com sql e já tentei pesquisar em todos os lugares com o erro
código do procedimento:
CREATE PROCEDURE CHECKUSERPRIVILEGES(
IN username VARCHAR(32),
IN pass VARCHAR(32)
)
BEGIN
DECLARE
userid INT(11); <-- error here
SELECT
UserID
INTO userid
FROM
users
WHERE
Username = username AND Pass = pass; DECLARE priviligeid BIGINT(16);
SELECT
PrivilegeID
INTO privilegeid
FROM
userprivleges
WHERE
UserID = userid;
SELECT
*
FROM PRIVILEGES
WHERE
PrivilegeID = privilegeid
GO;
erro:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 7
Eu também tentei mudar INT(11)
para apenas INT
ou INTEGER
mas ainda o mesmo erro
Encontrei um erro semelhante aqui , mas não entendo o que a resposta está fazendo e como aplicá-la ao meu problema
Editar: tentei mover o DECLARE
s para o início e ainda o mesmo erro
CREATE PROCEDURE CHECKUSERPRIVILEGES(
IN username VARCHAR(32),
IN pass VARCHAR(32)
)
BEGIN
DECLARE
userid INT(11);
DECLARE
priviligeid BIGINT(16);
SELECT
UserID
INTO userid
FROM
users
WHERE
Username = username AND Pass = pass;
SELECT
PrivilegeID
INTO privilegeid
FROM
userprivleges
WHERE
UserID = userid;
SELECT
*
FROM PRIVILEGES
WHERE
PrivilegeID = privilegeid
GO;
Eu escrevi seu procedimento de loja do zero, se você estiver interessado, você também pode usar o SP abaixo ou talvez pensar no tratamento de erros e usar a contagem selecionada em seu SP.