Ir ao conteúdo

Erro de Inserção


Visitante: aldeyf

Posts recomendados

Visitante: aldeyf
 
Postado

Olá pessoal, eu fiz uma procedure no mysql para inserir dados:

CREATE DEFINER=`root`@`localhost` PROCEDURE `cadastra_usuario`(IN v_nome VARCHAR(15), IN v_email VARCHAR(40), IN v_senha VARCHAR(20), IN v_sobrenome VARCHAR(30), IN v_aniversario DATE, IN v_tipo VARCHAR(15))

BEGIN

INSERT INTO tbusuario(strnome, stremail, strsenha, strsobrenome, dtmaniversario, strtipo) VALUES (v_nome, v_email, v_senha, v_sobrenome, v_aniversario, v_tipo);

END

e na hora de salvar no cadastro do formulario q eu fiz em asp.net(aspx) deu o seguinte erro:

Column 'strsobrenome' cannot be null

alguém pode me ajudar?

Postado

Acho que no seu sistema, você está passando um valor NULO para o quarto parâmetro, aí dá erro no SQL quando executa a procedure.

Tente ver se é isso, mas creio que sim.

EDIT----------

Poderia não estar dando erro, se o campo strsobrenome tivesse sido criado como

NULL YES

mas acho que você criou como NOT NULL, que creio ser melhor, realmente.

  • Moderador
Postado

nao sabia que dava pra criar stored procedures no mysql.. eu ja tentei uma vez.. ele ate executa os comandos mas nao aconteceu nada.. bem eu nunca usei esse tipo de coisa.. ate tenho curiosidade em aprender isso

Postado

Ae DIF, se interessar, segue trecho de um DOC que eu faço para não esquecer comandos ^^

nesse "DOC" está como criar uma procedure simplesinha que fiz de teste com valor NULL, os comando para pesquisar, alterar, excluir um procedure


*-------------------------------------------------------------------------
STORE PROCEDURE
*-------------------------------------------------------------------------
DELIMITER $$

DROP PROCEDURE IF EXISTS ECOECO $$

CREATE PROCEDURE ECOECO( IN teste DECIMAL( 12,2 ) )

BEGIN
DECLARE VAR_TESTE DECIMAL( 10,2 );

SET VAR_TESTE:=10;

IF (TESTE = 0) THEN
BEGIN
SELECT 2;
END;
ELSEIF TESTE IS NULL THEN
BEGIN
SELECT 3;
END;
END IF;

SELECT var_teste,teste,var_teste+teste;
END$$

DELIMITER ;

CALL sp_name([parameter[,...]]) // O comando CALL é usado para chamar uma rotina que foi definida anteriormente com CREATE PROCEDURE.

SHOW PROCEDURE|FUNCTION STATUS [LIKE pattern] //Exibe as procedures ou funções criadas

SHOW CREATE PROCEDURE|FUNCTION sp_name //Exibe estrutura da procedure ou função que se deseja

ALTER PROCEDURE|FUNCTION sp_name [characteristic ...] //usado para alterar o nome de uma SP ou func
characteristic:
NAME newname
| SQL SECURITY {DEFINER | INVOKER}
| COMMENT string

DROP PROCEDURE|FUNCTION [IF EXISTS] sp_name //Excluir SP ou func

Visitante: aldeyf
 
Postado
Acho que no seu sistema, você está passando um valor NULO para o quarto parâmetro, aí dá erro no SQL quando executa a procedure.

Tente ver se é isso, mas creio que sim.

EDIT----------

Poderia não estar dando erro, se o campo strsobrenome tivesse sido criado como

NULL YES

mas acho que você criou como NOT NULL, que creio ser melhor, realmente.

Cara valeu você me ajudou pra caramba:)

  • Moderador
Postado

amigo você esta na seção errada.. mas tudo bem.. vejo que seu arquivo php nao esta bem organizado.. faça desta forma:

conexao.php


<?php
$conexao = mysql_connect("localhost","marcos","120510") or die("Erro na conexão com banco de dados");
$banco = mysql_select_db("marcos_victoria", $conexao);
?>


<?php

//Abaixo atribuímos os valores provenientes do formulário pelo método POST

$nome = $_POST["nome"];
$user = $_POST["user"];
$email = $_POST["email"];

//inclui o arquivo conexao.php responsável por conectar no seu banco de dados
include 'conexao.php';

//String com consulta SQL da inserção
$string_sql = "INSERT INTO pessoa (nome,user,email) VALUES ('$nome','$user','$email')";

//executa a instruçao SQL
$dados = mysql_query($string_sql);

//verifica se foi afetada alguma linha, nesse caso inserida alguma linha
if($dados){

echo"<script>
alert('Cadastro feito com sucesso');
window.location='cadastro.htm';
</script>";
} else {

echo"<script>
alert('Erro, não possível inserir no banco de dados');
history.go(-1);
</script>";

}
//fecha conexão com banco de dados
mysql_close($conexao);

?>

  • 3 semanas depois...
Postado
Nossa cara funcionou, e eu me matando alterei meus arquivos como voce disse e parece que foi como magica!!!!!!!!!!

muito obrigado........

vou dar uma estudada nesse tutorial que mandou para entender aonde estava errando!!!

até mais

"aldeyf" Não sei se já resolveu seu problema, mas se não, pelo que eu vi do erro o problema é que a consulta que você definiu pra o insert está trazendo o campo strsobrenome com valor null, quando criamos as tabelas o padrão é que os registros não poderão estar nulos.

Postado

Basta alterar a coluna que esta gerando erro para permitir valores nulos, ou tratar para quando não houver valores passar uma string vazia.

Visitante: aldeyf
 
Postado

deu certo sim valeu, obrigado por me ajudarem

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!