Im getting an error on this parte of SQL{ “U” = UPPER(:codigo) }. When i remove the variable and hardcode :codigo as u or U it works fine. The erro i receive is Missing In or Out parameter. I’m receiving this error on Oracle 12c Service Bus
Full SQL:
SELECT Resultado_Ensaio.Amos_Cd_Tipo_Local, Resultado_Ensaio.Amos_Cd_Loc_Amostg, Resultado_Ensaio.Prod_Cd_Id, Resultado_Ensaio.Amos_Dh_Amostra, Resultado_Ensaio.Reen_Md_Res_Num, Componente_Gas_Nat.Cpgn_Nm_Abreviado, Caract_Produto.Capr_Nm_Completo, Unidade_Medida_Emq.Unme_Sg_Notacao, Metodo_Ensaio.Prme_Cd_Id, Metodo_Ensaio.Meen_Cd_Id, Resultado_Ensaio.Reen_Cd_Res_Alfa_E, Resultado_Ensaio.Tiam_Cd_Id, Caract_Produto.Capr_Cd_Comp_Carac, Caract_Produto.Capr_Cd_Id , Ce.AMOS_NR_CERT_QUAL, Ce.AMOS_DT_CERT_QUAL FROM Caract_Produto INNER JOIN Resultado_Ensaio ON (Caract_Produto.Capr_Cd_Id = Resultado_Ensaio.Capr_Cd_Id AND Caract_Produto.Capr_Cd_Comp_Carac = Resultado_Ensaio.Capr_Cd_Comp_Carac AND Caract_Produto.Grcp_Cd_Id = Resultado_Ensaio.Grcp_Cd_Id) INNER JOIN Metodo_Ensaio ON (Metodo_Ensaio.Meen_Cd_Id = Resultado_Ensaio.Meen_Cd_Id AND Metodo_Ensaio.Prme_Cd_Id = Resultado_Ensaio.Prme_Cd_Id) INNER JOIN Unidade_Medida_Emq Unidade_Medida_Emq ON (Unidade_Medida_Emq.Gume_Cd_Id = Resultado_Ensaio.Gume_Cd_Id AND Unidade_Medida_Emq.Unme_Cd_Id = Resultado_Ensaio.Unme_Cd_Id) LEFT JOIN Caract_Produto_Componente ON (Caract_Produto_Componente.Grcp_Cd_Id = Resultado_Ensaio.Grcp_Cd_Id AND Caract_Produto_Componente.Capr_Cd_Id = Resultado_Ensaio.Capr_Cd_Id AND Caract_Produto_Componente.Capr_Cd_Comp_Carac = Resultado_Ensaio.Capr_Cd_Comp_Carac) LEFT JOIN Componente_Gas_Nat ON (Caract_Produto_Componente.Cpgn_Cd_Id = Componente_Gas_Nat.Cpgn_Cd_Id) LEFT JOIN Certificado_Ensaio Ce ON (Resultado_Ensaio.Amos_Cd_Loc_Amostg = Ce.Amos_Cd_Loc_Amostg AND Resultado_Ensaio.Amos_Cd_Tipo_Local = Ce.Amos_Cd_Tipo_Local AND Resultado_Ensaio.Amos_Dh_Amostra = Ce.Amos_Dh_Amostra AND Resultado_Ensaio.Tiam_Cd_Id = Ce.Tiam_Cd_Id AND Resultado_Ensaio.Prod_Cd_Id = Ce.Prod_Cd_Id AND Resultado_Ensaio.Prco_Cd_Comp_Prod = Ce.Prco_Cd_Comp_Prod AND Resultado_Ensaio.Orga_Cd_Cbi_Exec = Ce.Orga_Cd_Cbi_Exec) WHERE Resultado_Ensaio.Amos_Cd_Tipo_Local = (:tipo) --------------AND ('U' = UPPER(:posicao) AND------------------------------- Resultado_Ensaio.Amos_Dh_Amostra = ( SELECT MAX(Reen2.Amos_Dh_Amostra) FROM Resultado_Ensaio Reen2 WHERE Resultado_Ensaio.Amos_Cd_Loc_Amostg = Reen2.Amos_Cd_Loc_Amostg AND Resultado_Ensaio.Amos_Cd_Tipo_Local = Reen2.Amos_Cd_Tipo_Local AND Reen2.Amos_Dh_Amostra <= TO_TIMESTAMP('1999-11-01 07:00', 'YYYY-MM-DD HH24:MI:SS') ) OR ------------------'P' = UPPER(:posicao) AND-------------------------------- Resultado_Ensaio.Amos_Dh_Amostra = ( SELECT MIN(Reen2.Amos_Dh_Amostra) FROM Resultado_Ensaio Reen2 WHERE Resultado_Ensaio.Amos_Cd_Loc_Amostg = Reen2.Amos_Cd_Loc_Amostg AND Resultado_Ensaio.Amos_Cd_Tipo_Local = Reen2.Amos_Cd_Tipo_Local AND Reen2.Amos_Dh_Amostra >= TO_TIMESTAMP('1999-11-01 07:00', 'YYYY-MM-DD HH24:MI:SS') ) ) AND Resultado_Ensaio.Amos_Cd_Loc_Amostg like '314TQ5901%' ORDER BY Resultado_Ensaio.Amos_Dh_Amostra, Resultado_Ensaio.Amos_Cd_Loc_Amostg, Caract_Produto.Capr_Nm_Completo
Advertisement
Answer
The problem was:
Each time variable :posicao was referenced my request need to have the same exact number of variables
let $dbInput := posicao1, posicao2
Even if posicao1 and posicao2 got the same values.
Oracle Service Bus works like this when calling DbAdapters