Ir para conteúdo
Fórum Script Brasil
  • 0

Function Para Consulta


Guest Tassiana

Pergunta

Guest Tassiana

Criei uma função que consulta dados de acordo com os parâmetros que eu tenho, mas quando execute aparece o seguinte erro:

ERROR: query has no destination for result data

SQL state: 42601

Hint: If you want to discard the results of a SELECT, use PERFORM instead.

Context: PL/pgSQL function "teste_now" line 8 at SQL statement

CREATE FUNCTION teste_now(vtipo integer, vstatus integer) RETURNS

integer AS $$

DECLARE

v_tipo ALIAS FOR $1;

v_status ALIAS FOR $2;

registro record;

retorno char(10);

BEGIN

IF v_tipo <> 0 AND v_status <> 0 THEN

select nome from empreendimento where idtipoempreendimento = v_tipo and statusempreendimento = v_status;

retorno := "SELECT 1";

END IF;

IF v_tipo <> 0 AND v_status = 0 THEN

select * from empreendimento where idtipoempreendimento = v_tipo;

retorno := "SELECT 2";

END IF;

IF v_tipo = 0 AND v_status <> 0 THEN

select * from empreendimento where idtipoempreendimento = v_status;

retorno := "SELECT 3";

END IF;

RETURN retorno;

END;

$$LANGUAGE plpgsql;

select teste_now (1,2)

Alguém pode me ajudar???? Não consigo exibir dados da tabela fazendo a consulta dentro da function.

Obrigada!!!!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

estudei um pouco sobre essa linguagem e vi que o erro acontece porque voce atribui toda pesquisa a variavel

ela só tem capacidade de armazenar um registro, por isso voce tem que modificar um pouco a sintaxe do select, tenta assim:

CREATE OR REPLACE FUNCTION teste_now(vtipo integer, vstatus integer) RETURNS void AS $$
DECLARE
  v_tipo ALIAS FOR $1;
  v_status ALIAS FOR $2;
  consulta RECORD;
BEGIN

  IF v_tipo <> 0 AND v_status <> 0 THEN
    SELECT INTO consulta nome from empreendimento where idtipoempreendimento = v_tipo and statusempreendimento = v_status;
    RAISE NOTICE '%', consulta;
  END IF;

  IF v_tipo <> 0 AND v_status = 0 THEN
    SELECT INTO consulta * from empreendimento where idtipoempreendimento = v_tipo;
    RAISE NOTICE '%', consulta;
  END IF;

  IF v_tipo = 0 AND v_status <> 0 THEN
    select INTO consulta * from empreendimento where idtipoempreendimento = v_status;
    RAISE NOTICE '%', consulta;
  END IF;

END;
$$LANGUAGE plpgsql;
na chamada da função use:
SELECT teste_now(tipo, status);

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...