VidU Posted June 27, 2008 Report Share Posted June 27, 2008 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 😛 Cumps 😉 Modificado Desculpem mas carreguei no ENTER antes nao tinha reparado 😉 vi vi viduuuu! Link to comment Share on other sites More sharing options...
José Lopes Posted June 28, 2008 Report Share Posted June 28, 2008 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á!! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now