Guest Teduardo Postado Julho 4, 2008 Denunciar Share Postado Julho 4, 2008 hei, pessoal, não esotu conseguindo criar uma procedure de consulta no mysql, estou usando o SGBD SQLyog e a linguagem é o PHP.procedure de insercao esta funcionando perfeito.mas olha a consulta:DELIMITER $$CREATE PROCEDURE `cetesb`.`SP_PESQUISA_SEL`(veiculo int, fabricante int, modelo int) returns int BEGIN declare resultado int; set resultado = select A.parcrtecnc, A.tdata, D.tipoveicl, f.fabrc , E.modelveicl, G.qvalvl, h.vcilnd, i.ktrans, B.CO, B.NMHC, B.NOX, B.CHO, B.CO2, B.EVAPT, B.COMARCHLENTA, B.COMBS, B.ROTCAMOTOR, C.ruidsacelr, C.limteestbl, C.ruidsmedid, C.limteestbl_2 from tb_cabcrparcr A, tb_polnt B, tb_medcaruids C, tb_dicnrveicl D, tb_dicnrmodel E, tb_dicnrfabrc F, tb_valvl G, tb_cilnd H, tb_dicnrmotor I where A.PK_cabcrparcr = B.tb_cabcrparcr_pk_cabcrparcr and A.PK_cabcrparcr = C.tb_cabcrparcr_pk_cabcrparcr and D.PK_dicnrveicl = A.tb_dicnrveicl_pk_dicnrveicl and E.PK_dicnrmodel = A.tb_dicnrmodel_pk_dicnrmodel and F.PK_dicnrfabrc = A.TB_DICNRfabrc_PK_DICNRfabrc and I.tb_cilnd_pk_cilnd = H.pk_cilnd and I.tb_valvl_pk_valvl = G.pk_valvl and A.tb_dicnrmotor_pk_dicnrmotor = I.pk_dicnrmotor and A.TB_DICNRveicl_PK_DICNRveicl = @veiculo and A.TB_DICNRfabrc_PK_DICNRfabrc = @fabricante and A.TB_dicnrmodel_pk_dicnrmodel = @modelo; return(resultado); END$$DELIMITER ;-----------------------------------------é a primeira vez q estou ceriando procedure no mysql.. não sei bem a sintaxe.. obrigado Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Julho 4, 2008 Denunciar Share Postado Julho 4, 2008 Oi, 'Teduardo'!CREATE PROCEDURE `cetesb`.`SP_PESQUISA_SEL`(veiculo int, fabricante int, modelo int) returns int BEGINVeja a instrução acima que você passou. É procedure ou função? Pois se é procedure não há return.é a primeira vez q estou ceriando procedure no mysql.. não sei bem a sintaxe..Baixe a versão do manual do mysql que você usa e leia. Lá tem todas as instruções necessárias. Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest teduardo Postado Julho 4, 2008 Denunciar Share Postado Julho 4, 2008 é procedure,retirei o return já!o manual ajudou muito.. deu certo dessa forma-----------------------------------------------DELIMITER $$CREATE PROCEDURE `cetesb`.`SP_PESQUISA_SEL`(out veiculo int, out fabricante int, out modelo int) BEGIN select A.parcrtecnc, A.tdata, D.tipoveicl, f.fabrc , E.modelveicl, G.qvalvl, h.vcilnd, i.ktrans, B.CO, B.NMHC, B.NOX, B.CHO, B.CO2, B.EVAPT, B.COMARCHLENTA, B.COMBS, B.ROTCAMOTOR, C.ruidsacelr, C.limteestbl, C.ruidsmedid, C.limteestbl_2 from tb_cabcrparcr A, tb_polnt B, tb_medcaruids C, tb_dicnrveicl D, tb_dicnrmodel E, tb_dicnrfabrc F, tb_valvl G, tb_cilnd H, tb_dicnrmotor I where A.PK_cabcrparcr = B.tb_cabcrparcr_pk_cabcrparcr and A.PK_cabcrparcr = C.tb_cabcrparcr_pk_cabcrparcr and D.PK_dicnrveicl = A.tb_dicnrveicl_pk_dicnrveicl and E.PK_dicnrmodel = A.tb_dicnrmodel_pk_dicnrmodel and F.PK_dicnrfabrc = A.TB_DICNRfabrc_PK_DICNRfabrc and I.tb_cilnd_pk_cilnd = H.pk_cilnd and I.tb_valvl_pk_valvl = G.pk_valvl and A.tb_dicnrmotor_pk_dicnrmotor = I.pk_dicnrmotor and A.TB_DICNRveicl_PK_DICNRveicl = veiculo and A.TB_DICNRfabrc_PK_DICNRfabrc = fabricante and A.TB_dicnrmodel_pk_dicnrmodel = modelo; END$$DELIMITER ;---------------------------------------obrigado! Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest teduardo Postado Julho 4, 2008 Denunciar Share Postado Julho 4, 2008 Oi, 'Teduardo'!CREATE PROCEDURE `cetesb`.`SP_PESQUISA_SEL`(veiculo int, fabricante int, modelo int) returns int BEGINVeja a instrução acima que você passou. É procedure ou função? Pois se é procedure não há return.é a primeira vez q estou ceriando procedure no mysql.. não sei bem a sintaxe..Baixe a versão do manual do mysql que você usa e leia. Lá tem todas as instruções necessárias.mas não consigo chama-la, da um erro de variavel OUT Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Julho 4, 2008 Denunciar Share Postado Julho 4, 2008 mas não consigo chama-la, da um erro de variavel OUTQue tipo de erro? Como você está chamando a procedure? Lembre-se OUT e INOUT é passagem de parâmetros por referência. Onde OUT é para retorno de dados da procedure através do parâmetro e INOUT para Entrada e retorno de dados.IN (default) é passagem de parâmetro por valor. O valor entra na procedure e esta não retorna nada. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Teduardo
hei, pessoal, não esotu conseguindo criar uma procedure de consulta no mysql, estou usando o SGBD SQLyog e a linguagem é o PHP.
procedure de insercao esta funcionando perfeito.
mas olha a consulta:
DELIMITER $$
CREATE
PROCEDURE `cetesb`.`SP_PESQUISA_SEL`(veiculo int, fabricante int, modelo int) returns int
BEGIN
declare resultado int;
set resultado = select A.parcrtecnc, A.tdata, D.tipoveicl, f.fabrc , E.modelveicl,
G.qvalvl, h.vcilnd, i.ktrans,
B.CO, B.NMHC, B.NOX, B.CHO, B.CO2, B.EVAPT, B.COMARCHLENTA,
B.COMBS, B.ROTCAMOTOR, C.ruidsacelr, C.limteestbl, C.ruidsmedid, C.limteestbl_2
from tb_cabcrparcr A, tb_polnt B, tb_medcaruids C, tb_dicnrveicl D, tb_dicnrmodel E, tb_dicnrfabrc F,
tb_valvl G, tb_cilnd H, tb_dicnrmotor I
where A.PK_cabcrparcr = B.tb_cabcrparcr_pk_cabcrparcr and
A.PK_cabcrparcr = C.tb_cabcrparcr_pk_cabcrparcr and
D.PK_dicnrveicl = A.tb_dicnrveicl_pk_dicnrveicl and
E.PK_dicnrmodel = A.tb_dicnrmodel_pk_dicnrmodel and
F.PK_dicnrfabrc = A.TB_DICNRfabrc_PK_DICNRfabrc and
I.tb_cilnd_pk_cilnd = H.pk_cilnd and
I.tb_valvl_pk_valvl = G.pk_valvl and
A.tb_dicnrmotor_pk_dicnrmotor = I.pk_dicnrmotor and
A.TB_DICNRveicl_PK_DICNRveicl = @veiculo and
A.TB_DICNRfabrc_PK_DICNRfabrc = @fabricante and
A.TB_dicnrmodel_pk_dicnrmodel = @modelo;
return(resultado);
END$$
DELIMITER ;
-----------------------------------------
é a primeira vez q estou ceriando procedure no mysql.. não sei bem a sintaxe..
obrigado
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados