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

Preciso de ajuda nessa procedure


Uander

Pergunta

/* desconsidere os comentarios e as # */

CREATE DATABASE BRINCANDO;

USE BRINCANDO;

#DROP TABLE USUARIO;

CREATE TABLE USUARIO(

ID_USUARIO INT AUTO_INCREMENT NOT NULL,

USUARIO VARCHAR(30),

SENHA VARCHAR(20),

PRIMARY KEY(ID_USUARIO)

);

/*

SELECT * FROM USUARIO;

*/

/*(Um simples insert para testar a tabela, depois acabei comentando ele)

INSERT INTO USUARIO

(USUARIO, SENHA)

VALUES

('UANDER','123');

*/

#DROP PROCEDURE INSEREUSUARIO;

DELIMITER $$

CREATE PROCEDURE INSEREUSUARIO

(

IN PRO_USU_NOME VARCHAR(30),

IN PRO_USU_SENHA VARCHAR(20)

)

BEGIN

IF(NOME='') THEN

SELECT 'INSIRA NOME' AS Msg;

ELSE IF(SENHA='') THEN

SELECT 'INSIRA SENHA' AS Msg;

ELSE

INSERT INTO USUARIO

(NOME, SENHA)

VALUES(PRO_USU_NOME, PRO_USU_SENHA);

END IF;

END IF;

SELECT 'DADOS INSERIDOS COM SUCESSO' AS Msg;

END $$

DELIMITER ;

CALL INSEREUSUARIO('UANDER2','123456');

---------------------------------------------------------

CREATE TABLE USUARIO -- 0 ROW(S) AFECTED 0.078 SEC

INSERT INTO USUARIO (USUARIO, SENHA) 1 ROW(S) EFFECTED 0.048 SEC

COMENTO O INSERT

EXECUTO O BLOCO DA PROCEDURE INSERE USUARIO = ERROR CODE:1050 'USUARIO' ALREADY EXISTS 0.000 SEC

alguém PODERIA AJUDAR?

ABRAÇO

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
/* desconsidere os comentarios e as # */

CREATE DATABASE BRINCANDO;

USE BRINCANDO;

#DROP TABLE USUARIO;

CREATE TABLE USUARIO(

ID_USUARIO INT AUTO_INCREMENT NOT NULL,

USUARIO VARCHAR(30),

SENHA VARCHAR(20),

PRIMARY KEY(ID_USUARIO)

);

/*

SELECT * FROM USUARIO;

*/

/*(Um simples insert para testar a tabela, depois acabei comentando ele)

INSERT INTO USUARIO

(USUARIO, SENHA)

VALUES

('UANDER','123');

*/

#DROP PROCEDURE INSEREUSUARIO;

DELIMITER $$

CREATE PROCEDURE INSEREUSUARIO

(

IN PRO_USU_NOME VARCHAR(30),

IN PRO_USU_SENHA VARCHAR(20)

)

BEGIN

IF(NOME='') THEN

SELECT 'INSIRA NOME' AS Msg;

ELSE IF(SENHA='') THEN

SELECT 'INSIRA SENHA' AS Msg;

ELSE

INSERT INTO USUARIO

(NOME, SENHA)

VALUES(PRO_USU_NOME, PRO_USU_SENHA);

END IF;

END IF;

SELECT 'DADOS INSERIDOS COM SUCESSO' AS Msg;

END $$

DELIMITER ;

CALL INSEREUSUARIO('UANDER2','123456');

---------------------------------------------------------

CREATE TABLE USUARIO -- 0 ROW(S) AFECTED 0.078 SEC

INSERT INTO USUARIO (USUARIO, SENHA) 1 ROW(S) EFFECTED 0.048 SEC

COMENTO O INSERT

EXECUTO O BLOCO DA PROCEDURE INSERE USUARIO = ERROR CODE:1050 'USUARIO' ALREADY EXISTS 0.000 SEC

alguém PODERIA AJUDAR?

ABRAÇO

Meu camarada, na sua procedure você terá que alterar o nome da coluna NOME, pois na tabela que você criou não possui essa coluna e sim USUARIO

insert into USUARIO

(NOME, SENHA)

values(PRO_USU_NOME, PRO_USU_SENHA);

Abraços ;)

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, realmente, ótima observação.

porem ainda existe acusação de erro na coluna usuario.

pesquisei algumas coisas e não achei nada relacionado tambem, criei até outro bd, sem sucesso tambem.

=/, a procedure agora executa com sucesso, esta com erro na hora de executa-la.

tanto é que no comando show procedure insereusuario é possivel visualiza-la.

abraço

DROP DATABASE IF EXISTS BRINCANDO;

CREATE DATABASE BRINCANDO;

USE BRINCANDO;

DROP TABLE IF EXISTS USUARIO;

CREATE TABLE USUARIO(

ID_USUARIO INT AUTO_INCREMENT NOT NULL,

USUARIO VARCHAR(30),

SENHA VARCHAR(20),

PRIMARY KEY(ID_USUARIO)

);

/*

INSERT INTO USUARIO

(USUARIO, SENHA)

VALUES

('UANDER','123');

*/

/*

SELECT * FROM USUARIO;

*/

DROP PROCEDURE IF EXISTS INSEREUSUARIO;

DELIMITER $$

CREATE PROCEDURE INSEREUSUARIO

(

IN PRO_USU_USUARIO VARCHAR(30),

IN PRO_USU_SENHA VARCHAR(20)

)

BEGIN

IF(USUARIO = '') THEN

SELECT 'INSIRA NOME' AS Msg;

ELSE IF(SENHA='') THEN

SELECT 'INSIRA SENHA' AS Msg;

ELSE

INSERT INTO USUARIO

(USUARIO, SENHA)

VALUES(PRO_USU_USUARIO, PRO_USU_SENHA);

END IF;

END IF;

SELECT 'DADOS INSERIDOS COM SUCESSO' AS Msg;

END $$

DELIMITER ;

CALL INSEREUSUARIO('UANDER','TESTE');

SELECT * FROM USUARIO;

SHOW PROCEDURE STATUS;

---------------------------

Editado por Uander
Link para o comentário
Compartilhar em outros sites

  • 0

Tente assim:

DELIMITER $$

DROP PROCEDURE IF EXISTS `brincando`.`INSEREUSUARIO`$$

CREATE PROCEDURE `brincando`.`INSEREUSUARIO` (IN PRO_USU_USUARIO VARCHAR(30),
IN PRO_USU_SENHA VARCHAR(20))
BEGIN
   DECLARE Msg varchar(250);
   DECLARE excessao SMALLINT DEFAULT 0;
   DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excessao = 1;
   IF(PRO_USU_USUARIO = '') THEN
      set excessao = 1;
      SET Msg = 'INSIRA NOME';
   end if;
   IF(PRO_USU_SENHA = '' and excessao <> 1) THEN
     set excessao = 1;
     SET Msg = 'INSIRA SENHA';
   end if;
   if excessao <> 1 then
      START TRANSACTION;
      INSERT INTO USUARIO (USUARIO, SENHA)
      VALUES(PRO_USU_USUARIO, PRO_USU_SENHA);
      IF excessao = 1 THEN
         SET msg = 'Erro ao inserir';
         ROLLBACK;
      else
         COMMIT;
         SET Msg = 'DADOS INSERIDOS COM SUCESSO';
      end if;
   END IF;
   SELECT  Msg;
END$$

DELIMITER;

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...