Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmentos - Backoffice RM - BI - Erro Subquery ao executar sentença SQL em Visões de Dados


time.png Tempo aproximado para leitura: 00:03:00 min

Ocorrência
Ao tentar executar uma consulta em Visões de Dados é apresentada a mensagem Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <=, >, >= or when the subquery is used as an expression.

 

mceclip0.png


Ambiente
Cross Segmentos - TOTVS Backoffice (Linha RM) - RM BI – Todas as versões

Causa

Esta mensagem de erro aparece quando você tenta utilizar uma subconsulta (correlacionada ou não) que retorna mais de um valor para a consulta chamadora. Isso geralmente indica que há entradas duplicadas na coluna de uma tabela onde se espera que sejam exclusivas. Um dos motivos pelos quais isso pode ocorrer é se a coluna da tabela afetada não estiver restrita a identificadores exclusivos.
Em resumo, o erro relacionado a subquery ocorre quando uma subconsulta (consulta dentro de outra) não retorna os dados no formato esperado pela instrução principal. Um dos erros mais comuns é quando a subquery deveria retornar apenas um único valor (linha e coluna), mas retorna vários, o que gera conflito na execução da consulta.

Esse tipo de erro geralmente está relacionado ao uso incorreto da subquery em cláusulas como WHERE, SELECT ou SET, onde é exigido um único resultado. Para corrigir, é necessário revisar a subconsulta e garantir que ela esteja devidamente filtrada ou ajustada para retornar apenas o valor necessário ao contexto.

 

Solução
Para solucionar essa ocorrência, realize os seguintes passos:
1. Acesse o Menu Visões de Dados;

2. Localize a consulta através do código;

 

 mceclip2.png

 

 3. Edite a consulta localizada e analise se o Subselect está retornando mais de um resultado, para isso execute somente o Select retornado após a condição Where. Com base no resultado aplique as devidas correções para que o resultado retorne apenas uma linha.

 mceclip3.png

 

Exemplificando

A consulta SQL abaixo:

SELECT NOME, MATRICULA, CODCCUSTO
FROM PFUNC
WHERE CODCCUSTO = (
SELECT CODCCUSTO
FROM PFUNC
WHERE MATRICULA = '12345'
);

Geraria o erro referente ao retorno de subquery se:
A subquery:

SELECT CODCCUSTO
FROM PFUNC WHERE MATRICULA = '12345'


Retornar mais de uma linha. Ou seja:

Se houver mais de um registro com a matrícula '12345' na tabela PFUNC, e esses registros tiverem valores de CODCCUSTO diferentes (ou iguais, mas ainda assim múltiplos registros), a subquery não será considerada escalar (de linha única) e causará erro.


Por que isso acontece?
A cláusula = espera apenas um único valor à direita.
Quando a subquery retorna 2 ou mais valores, o Oracle não sabe com qual deles comparar, e lança o erro.

 

Como evitar esse erro:
Garantir que a subquery retorne uma única linha, por exemplo:

SELECT MAX(CODCCUSTO)
FROM PFUNC
WHERE MATRICULA = '12345'

Ou mudar = para IN, se aceitar múltiplos valores:

WHERE CODCCUSTO IN (
SELECT CODCCUSTO
FROM PFUNC
WHERE MATRICULA = '12345'
)


Saiba mais

Acesse o link Mensagem Subquery onde demonstra algumas dicas de como identificar o campo que traz mais de um valor. 

 

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _