Guest Tassiana Postado Março 22, 2007 Denunciar Share Postado Março 22, 2007 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 dataSQL state: 42601Hint: If you want to discard the results of a SELECT, use PERFORM instead.Context: PL/pgSQL function "teste_now" line 8 at SQL statementCREATE FUNCTION teste_now(vtipo integer, vstatus integer) RETURNSinteger AS $$DECLAREv_tipo ALIAS FOR $1;v_status ALIAS FOR $2; registro record;retorno char(10);BEGINIF v_tipo <> 0 AND v_status <> 0 THENselect nome from empreendimento where idtipoempreendimento = v_tipo and statusempreendimento = v_status;retorno := "SELECT 1"; END IF;IF v_tipo <> 0 AND v_status = 0 THENselect * from empreendimento where idtipoempreendimento = v_tipo;retorno := "SELECT 2";END IF;IF v_tipo = 0 AND v_status <> 0 THENselect * 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!!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Março 30, 2007 Denunciar Share Postado Março 30, 2007 voce quer exibir os dados ou retornar os dados para outra função? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Tassiana Postado Março 30, 2007 Denunciar Share Postado Março 30, 2007 voce quer exibir os dados ou retornar os dados para outra função?Eu quero exibir os dados! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Março 30, 2007 Denunciar Share Postado Março 30, 2007 estudei um pouco sobre essa linguagem e vi que o erro acontece porque voce atribui toda pesquisa a variavelela 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); Citar Link para o comentário Compartilhar em outros sites More sharing options...
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
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.