VidU Posted June 27, 2008 at 09:29 AM Report Share #193960 Posted June 27, 2008 at 09:29 AM 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 😉 Link to comment Share on other sites More sharing options...
José Lopes Posted June 28, 2008 at 12:01 AM Report Share #194223 Posted June 28, 2008 at 12:01 AM 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