Jump to content
Fórum Script Brasil
  • 0

Preciso de ajuda nessa procedure


Uander
 Share

Question

/* 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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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;

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

Edited by Uander
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...