Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro de subquery com mais de uma linha

Olá, tenho um select que está dando esse erro ORA-01427, retorna mais de uma linha em um subquery. O problema é que esse erro acontece somente na segunda vez que o SQL é executado. Se eu fizer qualquer alteração no script e rodar ele retorna as linhas, porém na segunda execução acontece o erro.

O que pode ser?

2 respostas

Boa tarde Diego! Posta teu sql aqui para darmos uma olhada!

solução!

Depois de muito custo encontrei onde está dando o problema, porém não encontrei ainda a solução.

SELECT *
  FROM PRODUTO PRD
 INNER JOIN VPRODUTO_CORTAM CORTAM
    ON CORTAM.CODIGO = PRD.CODIGO
  LEFT JOIN (SELECT DISTINCT PCT.CODIGO,
                             PCT.COR,
                             PCT.TAM,
                             NVL(PREF.PROD_PEND, 0) PROD_PEND,
                             NVL(PREF.PROD_REAL, 0) PROD_REAL,
                             NVL(PREF.PROD_SEG, 0) PROD_SEG,
                             NVL(PREF.PLANEJADO, 0) PLANEJADO
               FROM PRODUTO PRD
               JOIN VPRODUTO_CORTAM PCT
                 ON PCT.CODIGO = PRD.CODIGO
               LEFT JOIN V_SD_PRODUCAO_REFER PREF
                 ON PREF.CODIGO = PCT.CODIGO
                AND PREF.COR = PCT.COR
                AND PREF.TAM = PCT.TAM
                AND PREF.COLECAO = PRD.COLECAO
              WHERE PRD.COLECAO in ('x', '17CO')
                AND PRD.ATIVO = 'S') PRODUC
    ON PRODUC.CODIGO = CORTAM.CODIGO
   AND PRODUC.COR = CORTAM.COR
   AND PRODUC.TAM = CORTAM.TAM

O problema está no LEFT JOIN com a VIEW V_SD_PRODUCAO_REFER, porém quando consulta a VIEW sozinha com os códigos que estão dando o erro, a VIEW retorna sem o erro, ela apresenta o erro somente no JOIN.

Ainda sem solução, porém trabalhando muito para encontrar o problema!

Att.,

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software