AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 77839156
Accepted
SCP-1762
SCP-1762
Asked: 2024-01-18 19:51:27 +0800 CST2024-01-18 19:51:27 +0800 CST 2024-01-18 19:51:27 +0800 CST

Erro desconhecido no mariadb com procedimento armazenado

  • 772

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 INTou INTEGERmas 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 DECLAREs 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;
mariadb
  • 1 1 respostas
  • 48 Views

1 respostas

  • Voted
  1. Best Answer
    Halil Ural
    2024-01-18T20:56:53+08:002024-01-18T20:56:53+08:00

    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.

    DELIMITER //
    
    CREATE PROCEDURE CheckUserPrivileges(
    IN pUserID INT,
    IN pPass VARCHAR(255)
    )
    BEGIN
    DECLARE privilegeCount INT;
    
    -- Check if the user exists
    SELECT COUNT(*) INTO privilegeCount
    FROM users
    WHERE UserID = pUserID AND Pass = pPass;
    
    IF privilegeCount = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'User not found or incorrect password';
    ELSE
        -- Check user privileges
        SELECT COUNT(*) INTO privilegeCount
        FROM userprivileges
        WHERE UserID = pUserID;
    
        IF privilegeCount > 0 THEN
            -- User has privileges, you can add more logic if needed
            SELECT p.PrivilegeID
            FROM userprivileges up
            JOIN privileges p ON up.PrivilegeID = p.PrivilegeID
            WHERE up.UserID = pUserID;
        ELSE
            -- User has no privileges
            SELECT 'User has no privileges';
        END IF;
    END IF;
    END //
    DELIMITER ;
    
    • 0

relate perguntas

  • Reordenar a tabela MariaDB para ascendente

  • Os gatilhos não funcionam conforme o esperado para colunas SET no mariadb

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle?

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Quando devo usar um std::inplace_vector em vez de um std::vector?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Martin Hope
    Aleksandr Dubinsky Por que a correspondência de padrões com o switch no InetAddress falha com 'não cobre todos os valores de entrada possíveis'? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer Quando devo usar um std::inplace_vector em vez de um std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB Por que o GCC gera código que executa condicionalmente uma implementação SIMD? 2024-02-17 06:17:14 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve