Ir para conteúdo
Fórum Script Brasil
  • 0

Cursores


João Paulo Silva

Pergunta

Boa tarde, estou com o seguinte erro:  error 1136 : column count doesn't match value count at row 1

alguém poderia me ajudar?

 

CREATE DATABASE CURSORES;
USE CURSORES;

CREATE TABLE VENDEDORES (
    IDVENDEDOR INT PRIMARY KEY AUTO_INCREMENT,
    NOME VARCHAR(50),
    JAN INT,
    FEV INT,
    MAR INT
);

INSERT INTO VENDEDORES VALUES(NULL,'MAFRA',32,242,574);
INSERT INTO VENDEDORES VALUES(NULL,'CLARA',2432,5665,5745);
INSERT INTO VENDEDORES VALUES(NULL,'JOÃO',3232,5667,5745);
INSERT INTO VENDEDORES VALUES(NULL,'LILIAN',4553,2434,5745);
INSERT INTO VENDEDORES VALUES(NULL,'ANTONIO',332,2334,7567);
INSERT INTO VENDEDORES VALUES(NULL,'GLORIA',3562,256,555);

SELECT NOME, (JAN+FEV+MAR) AS TOTAL FROM VENDEDORES;
SELECT NOME, (JAN+FEV+MAR) AS TOTAL, (JAN+FEV+MAR)/3 AS MEDIA FROM VENDEDORES;

CREATE TABLE VEND_TOTAL (
    IDVENDEDOR INT PRIMARY KEY AUTO_INCREMENT,
    NOME VARCHAR(50),
    JAN INT,
    FEV INT,
    MAR INT,
    TOTAL INT,
    MEDIA INT
);

DELIMITER $


CREATE PROCEDURE INSEREDADOS()
BEGIN
    DECLARE FIM INT DEFAULT 0;
    DECLARE VAR1, VAR2, VAR3, VTOTAL, VMEDIA INT;
    DECLARE VNOME VARCHAR(50);
    
    DECLARE REG CURSOR FOR (
        SELECT NOME, JAN, FEV, MAR FROM VENDEDORES
    );
    
    OPEN REG;
    
    REPEAT    
    
        FETCH REG INTO VNOME, VAR1, VAR2, VAR3;
        IF NOT FIM THEN
        
            SET VTOTAL = VAR1 + VAR2 + VAR3;
            SET VMEDIA = VTOTAL / 3;
            
            INSERT INTO VEND_TOTAL VALUES(VNOME,VAR1,VAR2,VAR3);
        END IF;
    
    UNTIL FIM END REPEAT;
    
    CLOSE REG;
END
$

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bua tarde. 

Você criou um campo AUTO_INCREMENT e o referenciou como NULL no insert.

Campos auto incrementados não necessitam de "auxilio" eles fazem o trabalho sozinhos. Além disso, por default, são NOT NULL e precisam ser chaves primárias.

O segundo erro está na declaração do insert sem a declaração de campos que serão inseridos.

O terceiro está na quantidade de campos passada na cláusula VALUES. Está menor que a declaração de campos do insert.

A inclusão deveria ser assim:

INSERT INTO VENDEDORES(NOME,  JAN, FEV, MAR, TOTAL, MEDIA)

VALUES('MAFRA', 32, 242, 574, ???);

Onde em ??? deveria haver valor

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...