Pavelski 0 Denunciar post Postado Novembro 8, 2012 Buon Giorno senhores. Venho à algum tempo pesquisando nos tópicos mas realmente não consegui achar uma solução para o meu problema. Seguinte Eu estou tentando criar uma SP para validação. O usuário informa um valor, na primeira variável é feita a pesquisa pra ver se esse valor existe no DB, na segundo ele verifica se esse valor existente esta habilitado para tal tarefa. Minha tabela user é mais ou menos assim: user ID | user | quota | empresa | habilitando | 01 | joao | 25 | Valve | HABILITADO | Para se autenticar em meu sistema o valor a ser passado deve ser "joao HABILITADO" . Eu criei a seguinte procedure: DELIMITER // CREATE PROCEDURE checando(user VARCHAR(70)); BEGIN SELECT user INTO @checando1 FROM user WHERE user ='%s'; IF ISNULL(@checando1) THEN SELECT habilitando INTO @checando2 FROM user WHERE user='@chacando1'; IF (@checando2 == "HABILITADO") THEN SELECT '@checando1 HABILITADO' as MSG; ELSE SELECT 'Usuário Inválido' as MSG; END IF; ELSE SELECT 'Um usuário precisa ser infotmado.' as MSG; END IF; END; // Mas ao tentar criar esta SP eu recebo o seguinte erro: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; BEGIN SELECT user INTO @checando1 FROM user WHERE user ='%s'; IF ISNULL(@ch' at line 1 Alguém pode me dar uma luz? Desde já agradeço. E como diria o mestre, "Dá uma licençinha pro Madruguinha que ele vai tomar uma aguinha" Compartilhar este post Link para o post Compartilhar em outros sites
jrodrigues_ 0 Denunciar post Postado Novembro 8, 2012 Hi! Bom camarada, tu não irá conseguir por que o nome da tabela que você criou ela eh reservada."user" a sua possível solução e colocar o nome do banco de dados junto com o nome da tabela ex.: db_meu_banco.user db_meu_banco -- Nome da sua data base user -- Nome da tabela :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Pavelski 0 Denunciar post Postado Novembro 8, 2012 Hi! Bom camarada, tu não irá conseguir por que o nome da tabela que você criou ela eh reservada."user" a sua possível solução e colocar o nome do banco de dados junto com o nome da tabela ex.: db_meu_banco.user db_meu_banco -- Nome da sua data base user -- Nome da tabela :thumbsup: No caso meu db chama-se tangamandapio, então ficaria: CREATE PROCEDURE checando('tangamandapio'.'user' VARCHAR(70)); ? Compartilhar este post Link para o post Compartilhar em outros sites
jrodrigues_ 0 Denunciar post Postado Novembro 8, 2012 Assim meu camarada: delimiter // create procedure checando( usuario varchar(70)); begin select a.user into @checando1 from tangamandapio.user as a where a.user ='%s'; if isnull(@checando1) then select habilitando into @checando2 from tangamandapio.user as a where a.user='@chacando1'; if (@checando2 == "HABILITADO") then select '@checando1 HABILITADO' as MSG; else select 'Usuário Inválido' as MSG; end if; end; // O parâmetro que você esta criado pode colocar outro nome como o que eu coloquei? Abraços :) Compartilhar este post Link para o post Compartilhar em outros sites
Pavelski 0 Denunciar post Postado Novembro 8, 2012 Posso sim, mas só para eu entender algumas coisas.. create procedure checando( usuario varchar(70)); --o nome tem que ser diferente da tabela por causa de conflito ou padrão da linguagem? select a.user into @ (não entendi o porque deste "a." e nem do "from tangamandapio.user "as a"") Agradeço a boa vontade desde já. Compartilhar este post Link para o post Compartilhar em outros sites
jrodrigues_ 0 Denunciar post Postado Novembro 8, 2012 create procedure checando( usuario varchar(70)); --o nome tem que ser diferente da tabela por causa de conflito ou padrão da linguagem? R: tem que ser diferente em questão do padrão da linguagem. select a.user into @ (não entendi o porque deste "a." e nem do "from tangamandapio.user "as a"") R: "a." eu dei o nome da sua tabela user de "a" se não iri ficar muito extensa "tangamandapio.user" R: "from tangamandapio.user " com a sua tabela tem o mesmo nome de uso restrito tive que colocar o nome do seu banco de dados antes do nome da sua tabela para saber aonde esta localizado essa tabela Deu certo o que você queria. Compartilhar este post Link para o post Compartilhar em outros sites
Pavelski 0 Denunciar post Postado Novembro 8, 2012 Entendi, não conhecia essa função de abreviaçã "as" qualquer-coisa valew pelo ensinamento. Mas ainda não deu certo não... Parece que não lê o comando inteiro, a mensagem de erro que recebo é: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; begin select a.user into @checando1 from tangamandapio.user as a where a.user ='%s'' at line 1 -- observando que o aparece '' entes de at line 1 sendo que no comando da SP finaliza com apenas um ='%s'; Compartilhar este post Link para o post Compartilhar em outros sites