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 kandrade disse: 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.