0
in Procedure there are two fields (Cod_manufacturer(VARCHAR) and Codigo_manufacturer(INT)), a Varchar and an Int, when I do a LEFT JOIN to cross the tables, it gives me a conversion error, I tried to use CAST and CONVERT in left Join but still gave conversion error, someone knows if there would be another way or maybe I have used cast and Convert in the wrong location?? :(
BEGIN
DELETE FROM TMP_SALDO_ESTOQUE;
INSERT INTO TMP_SALDO_ESTOQUE
(CODIGO_PRODUTO, TIPO, ENTRADAS, SAIDAS)
SELECT M.CODIGO_PRODUTO, 'E', SUM(M.QTDE) AS ENTRADAS, 0 AS SAIDAS
FROM
MOVIMENTO_ESTOQUE M
INNER JOIN LANCAMENTO_ESTOQUE L
ON M.CODIGO_LANCAMENTO = L.CODIGO
WHERE (M.AFETA_SALDO_ESTOQUE = 'S') AND (L.TIPO = 'E') AND (L.DATA_MOVIMENTO <= :DATA) AND ((:CODIGO_ALMOX = 0) OR (M.CODIGO_ALMOX = :CODIGO_ALMOX))
GROUP BY M.CODIGO_PRODUTO
UNION ALL
SELECT M.CODIGO_PRODUTO, 'S', 0 AS ENTRADAS, SUM(M.QTDE) AS SAIDAS
FROM
MOVIMENTO_ESTOQUE M
INNER JOIN LANCAMENTO_ESTOQUE L
ON M.CODIGO_LANCAMENTO = L.CODIGO
WHERE (M.AFETA_SALDO_ESTOQUE = 'S') AND (L.TIPO = 'S') AND (L.DATA_MOVIMENTO <= :DATA) AND ((:CODIGO_ALMOX = 0) OR (M.CODIGO_ALMOX = :CODIGO_ALMOX))
GROUP BY M.CODIGO_PRODUTO;
FOR
SELECT
P.CODIGO,
P.COD_FABRICANTE,
F.NOME,
P.DESCRICAO,
P.CUSTO_MEDIO,
P.CODIGO_UNIDADE,
P.CODIGO_GRUPO,
P.CODIGO_EMBALAGEM,
P.CODIGO_FORNECEDOR,
P.TIPO_ITEM,
P.CURVA_ABC,
P.LOCALIZACAO,
P.TIPO_AQUISICAO,
P.INATIVO,
P.SERVICO,
P.DIFER_ICMS,
G.DESCRICAO AS GRUPO,
U.SIGLA AS UNIDADE,
SUM(S.ENTRADAS) AS ENTRADAS,
SUM(S.SAIDAS) AS SAIDAS,
P.NCM
FROM
PRODUTO P LEFT JOIN UNIDADE U
ON P.CODIGO_UNIDADE = U.CODIGO
LEFT JOIN FABRICANTE F
ON P.COD_FABRICANTE = F.CODIGO_FABRICANTE
LEFT JOIN GRUPO_PRODUTO G
ON G.CODIGO = P.CODIGO_GRUPO
LEFT JOIN TMP_SALDO_ESTOQUE S
ON P.CODIGO = S.CODIGO_PRODUTO
GROUP BY
P.CODIGO,
P.COD_FABRICANTE,
F.NOME,
P.DESCRICAO,
P.CUSTO_MEDIO,
P.CODIGO_UNIDADE,
P.CODIGO_GRUPO,
P.CODIGO_EMBALAGEM,
P.CODIGO_FORNECEDOR,
P.TIPO_ITEM,
P.CURVA_ABC,
P.LOCALIZACAO,
P.TIPO_AQUISICAO,
P.INATIVO,
P.SERVICO,
P.DIFER_ICMS,
G.DESCRICAO,
U.SIGLA,
P.NCM
INTO :CODIGO, :COD_FABRICANTE, :DESCRICAO, :CUSTO_MEDIO, :CODIGO_UNIDADE, :CODIGO_GRUPO, :CODIGO_EMBALAGEM, :CODIGO_FORNECEDOR, :TIPO_ITEM, :CURVA_ABC, :LOCALIZACAO, :TIPO_AQUISICAO, :INATIVO, :SERVICO, :DIFER_ICMS, :GRUPO, :UNIDADE, :ENTRADAS, :SAIDAS , :NCM
DO
BEGIN
SUSPEND;
END
END
what error? where is the conversion in your code? it is not an error pq can not convert (text to number)?
– Ricardo Pontual
in "from" when I try to convert this way gives "Parsing error": LEFT JOIN MANUFACTURER F ON CAST (P.COD_FABRICANTE AS interger(7)) = F.CODIGO_FABRICANTE
– dkiller
Hi viva make a comparison of VARCHAR and INT has everything to go wrong, if in varchar comes a value with '10D'...will never convert, what I advise you is to standardize the type of data, try to find a way to be of the same TYPE.
– Ernesto Casanova