• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

VidU

[mySql] ajuda com metodo basico

2 mensagens neste tópico

Boas pessoal, tou a um dia a bater com a cabeça neste pedaço de codigo, isto serve para receber atributos do php e registar o doente na Bd, mas o problema é que quando nao existe registos na bd ele nao inser, mas se existir doentes ele inser.

Creio que o problema esteja aqui:

select MAX(id_doente)+1 into doente_id from doente;
if ((doente_id=0) or (doente_id=NULL)) then
SET @doente_id=1;
end if;

O que isto faz é ver se existe algum id Null ou 0 e se isso existir vai por a variavel doente_id=1, mas creio que o codigo nao esta certo visto que nao esta a atribuir o valor 1 a variavel quando a bd esta vazia.

deixo aqui o codigo todo do metodo:

Delimiter |
CREATE FUNCTION inserirnovodoente(nome varchar(50), n_beneficiario int, sistemasaude varchar(50), sexo varchar(15), data_nascimento date, morada varchar(150), telefone int, dadosMedicos varchar(2000)) RETURNS tinyint(1)
begin
declare doente_id int;
select MAX(id_doente)+1 into doente_id from doente;
if ((doente_id=0) or (doente_id=NULL)) then
SET @doente_id=1;
end if;
Insert into doente values(doente_id, nome, n_beneficiario, sistemasaude, sexo, data_nascimento, morada, telefone, NULL);

return true;

end|

Preciso de ajuda rapidamente visto que tenho de entregar este projecto, alias é o meu primeiro projecto em mysql :P

Cumps  ;)

Modificado

Desculpem mas carreguei no ENTER antes nao tinha reparado ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mesmo sem testar em Runtime...há uma coisa que me parece errada

GeSHi (sql):
select MAX(id_doente)+1 into doente_id from doente; -- Tu aqui estás sempre a dizer que O doente é 1, logo... não passa pelo código depois do if..porque dexa de ser 0 ou null
if ((doente_id=0) or (doente_id=NULL)) then
SET @doente_id=1;
end if; 

tenta antes assim:

GeSHi (sql):
select MAX(id_doente) into doente_id from doente;
if ((doente_id=0) or (doente_id=NULL)) then
    SET @doente_id= 1 ; -- Não tenho a certeza que isto se possa fazer assim... mas basicamente aqui podes dizer que o primeiro vai ser um ..não precisas usar a a variável.
else
    SET @doente_id=doente_id+1 -- através deste método crias uma espécie de sequência (coisa que penso que mysql não tem, pelo menos automaticamente) (a partir do 2....)
end if; 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora