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