Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leticiiaa

Help: Erro #1064 - Você tem um erro de sintaxe no seu SQL

Recommended Posts

Estou tentando fazer a seguinte inserção de dados no Banco utilizando uma procedure e o erro é:

#1064 - Você tem um erro de sintaxe no seu SQL próximo a 'VALUES ('Funcionário', 'Luciana', 'Soares', '1', '1900-01-1', 'casa tal', 'DF',' na linha 1

use db_studiotopfit;
call create_user(type_user,nome, sobrenome, sexo, data_nascimento,endereco, uf, cidade, bairro, cpf, rg, email, username, senha, cargo, salario)VALUES ('Funcionário', 'Luciana', 'Soares', '1', '1900-01-1', 'casa tal', 'DF', 'Brasília', 'jnidas', '89076543', '94984984', 'teste@hotmail.com', 'Letícia de', '123', 'dibsadh', '1000')

Esta é a definição da minha procedure:

-- -----------------------------------------------------
-- Procedure `db_studiotopfit`.`create_user`
-- -----------------------------------------------------
DELIMITER $$
CREATE PROCEDURE create_user(
    IN type_user VARCHAR(25), 
    IN cpf BIGINT(11), 
    IN nome VARCHAR(15), 
    IN sobrenome VARCHAR(45), 
    IN sexo TINYINT(1), 
    IN data_nascimento DATE, 
    IN endereco VARCHAR(80), 
    IN uf VARCHAR(2), 
    IN cidade VARCHAR(15), 
    IN bairro VARCHAR(25), 
    IN rg VARCHAR(20), 
    IN email VARCHAR(100), 
    IN username VARCHAR(15), 
    IN password VARCHAR(45),
    IN cargo VARCHAR(30),
    IN salario DECIMAL(7, 2))
BEGIN
    DECLARE user_type INT(4) DEFAULT 0;
    DECLARE id_matricula INT(4) DEFAULT 0;
    DECLARE errno INT;
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        GET CURRENT DIAGNOSTICS CONDITION 1 @P1 = MYSQL_ERRNO, @P2 = MESSAGE_TEXT;
        SELECT @P1 AS 'Código', @P2 AS 'Mensagem';
        ROLLBACK;
    END;
    
    START TRANSACTION;
        SELECT idperfil INTO user_type FROM `perfil` WHERE perfil=type_user ORDER BY idperfil DESC LIMIT 1;
        INSERT INTO `tb_pessoa` (cpf, nome, sobrenome, sexo, data_nascimento, endereco, uf, cidade, bairro, rg, email) 
        VALUES (cpf, nome, sobrenome, sexo, data_nascimento, endereco, uf, cidade, bairro, rg, email);
        INSERT INTO `usuario` (id_pessoa_cpf, perfil_idperfil, senha, usuario)
        VALUES (cpf, user_type, MD5(password), username);
        
        CASE type_user
            WHEN 'Aluno' THEN INSERT INTO `tb_aluno` (id_pessoa_cpf) VALUES (cpf);
            WHEN 'Funcionário' THEN
                BEGIN
                    INSERT INTO `tb_funcionario` (id_pessoa_cpf, cargo, salario) VALUES (cpf, cargo, salario);
                    SELECT LAST_INSERT_ID() INTO id_matricula;

                    CASE cargo 
                        WHEN 'Professor' THEN INSERT INTO tb_professor (tb_funcionario_id_matricula) VALUES (id_matricula);
                        ELSE BEGIN END;  
                    END CASE;
                END;
            ELSE BEGIN END;
        END CASE;
    COMMIT;
END $$
DELIMITER ;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 
call create_user('Funcionário', 'Luciana', 'Soares', '1', '1900-01-1', 'casa tal', 'DF', 'Brasília', 'jnidas', '89076543', '94984984', 'teste@hotmail.com', 'Letícia de', '123', 'dibsadh', '1000')

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por asacap1000
      Olá galera estou quebrando a cabeça aqui e não sei mais o que fazer. Estamos migrando nossa intranet que estava desatualizada demais e estamos colocando toda ela em php7.3.
      Dentro desse sistema temos varias consultas que são realizadas no Oracle. As consultas estão ocorrendo 100% mas ao chegar na plataforma de relatórios travou tudo. Não consegui acertar o meio de consultar por período, já utilizei "to_date, to_char, trunc" e nada. Interessante que no PLSQL o to_date funciona certo
      SELECT DISTINCT TO_DATE(IO.TIME_ARRIVAL)
        FROM IN_OUT IO
       WHERE TO_DATE(IO.TIME_ARRIVAL) BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    04/11/2021
      2    18/11/2021
      3    17/11/2021
      4    14/11/2021
      5    22/11/2021
      6    08/11/2021
      7    11/11/2021
      8    13/11/2021
      9    09/11/2021
      10    10/11/2021
      11    05/11/2021
      12    19/11/2021
      13    15/11/2021
      14    03/11/2021
      15    06/11/2021
      16    23/11/2021
      17    01/11/2021
      18    02/11/2021
      19    16/11/2021
      20    20/11/2021
      21    12/11/2021
      22    21/11/2021
       
      Se eu utilizar ele ignora a data que estabeleci para a consulta
       TO_CHAR(IO.TIME_ARRIVAL,'DD/MM/YYYY') BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    03/07/2013
      2    05/07/2013
      3    18/06/2013
      4    21/05/2013
      5    20/05/2013
      6    12/08/2013
      7    21/08/2013
      8    23/08/2013
      9    02/09/2013
      10    12/09/2013
       
      Isso no PLSQL, no caso do PHP o to_date não funciona nem gera o relatório, e no to_char funciona mas ignorando as datas apontadas.
       
      O que dá pra  fazer pra resolver isso, tenho que finalizar essa migração até final de Dezembro e estou começando a ficar preocupado com o tempo
       
      Agradeço qualquer ajuda que vier
    • Por Lonn
      Hi
      I need help creating some .exe or .bat that would completely delete some specific files from my computer.
      An app that scans and deletes all files and traces by name + format
      example:
      delete.cfg
      As the specific directory would vary from computer to computer, I would like help to create one that excludes only using the file name and format
      Hope to get answers, thanks!
    • Por TkCode
      Estou tentando desenvolver um código para calcular o valor final de custas de imoveis.
      Exemplo: Entro com um valor de R$50.000,00. Tem o ITBI que é 2% sob os R$50.000,00 + o valor de custas que é o valor de uma tabela (essa tabela tem valores que de R$0,01 até R$17.800,90 é uma valor, e assim sucessivamente)
       
      Então teria que calcular os 2% (do valor informado) + o valor da tabela, dando um resultado final com o valor total (2%+ValorTabela).
       
      Alguem teria como me dar uma dica de como resolver isso?
      Desde já agradeço!
    • Por Sapinn
      Opa galera tudo firmesa? Então, tenho um codigo que faz uma barra aparecer toda vez que eu role a pagina até um certo ponto e tudo funciona normal. Eu gostaria de saber se tem como fazer uma transição nessa barra para ele ir aparecendo devagarzinho com a opacidade em 0 e vai subindo até chegar a 1 coisa de um 0.8s. Não sei como fazer ou se tem como fazer preciso de ajuda.
       
      Codigo js 
       
      window.onscroll = function(){
          var top = window.pageXOffset || document.documentElement.scrollTop
          var barra = document.querySelector(".barra");
          if(top > 900){
              barra.style.display = 'flex';
      //aqui tentei adicionar uma class direto do css para fazer o efeito transition mas sem sucesso.
              barra.classList.add('transition');
          }else{
             barra.style.display = 'none';
          }
      }
       
       
      Codigo css
      .barra{
          width: 100%;
          height: 70px;
          background-color: #090b13;
          display: none;
          justify-content: space-between;
          position: fixed;
          opacity: 0;
      }
      .transition{
          transition: 1s;
          opacity: 0.7;
          
      }
       
      codigo HTML
       
      <div class="barra" >
              <img src="assets/images/logo-nopad.svg" alt="">
              <button class="botao-assinatura-header">Assine Agora</button>
        </div>
       
       
    • Por alexandre_xto
      Bom dia amigos, este é meu primeiro post, espero que consiga lhes passar meu problema
      Eu possuo várias imagens de vários tamanhos e dimensões.
      De cada uma quero realizar uma copia quadrada.
      por exemplo, se a imagem  tiver 800x600 quero criar uma 800x800, esse 200 a mais de lagura quero que fique branco sem esticar as fotos.
      Se tenho uma foto 300x600 quero que ela fique com 600x600.
      O Script deve identificar se ela é mais alta ou mais baixa e criar uma cópia baseando-se no que for maior e deve fazer isso sem distorcer a imagem.
      Se for colocado uma 1500x300 ela deve sair 1500x1500, a diferença de 1200 a mais deve ser branca.

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.