Jump to content
Sign in to follow this  
VidU

[mySql] ajuda com metodo basico

Recommended Posts

VidU

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 ;)


vi vi viduuuu!

Share this post


Link to post
Share on other sites
José Lopes

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; 


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.