evefuji 8 de jan. de 2012
não entendi sua dúvida, poderia ir exatamente no ponto em que tem dúvida? O que você já pesquisou e o que te deixou confuso?
rick1902 8 de jan. de 2012
Amigo fico grato pela sua ajuda eis o que estou tentando fazer no postgres:
CREATE OR REPLACE FUNCTION sp_pesqusuarios ( integer )
RETURNS SETOF us_usuarios AS
'
BEGIN
SELECT usu_nome , usu_login , usu_senha , usu_dtexpira FROM us_usuarios WHERE usu_codigo = $ 1 ;
END ;
'
LANGUAGE plpgsql
Quando tento executar esta procedure esta dando o seguinte erro no pgadmin III
ERROR : query has no destination for result data
HINT : If you want to discard the results of a SELECT , use PERFORM instead .
CONTEXT : PL / pgSQL function "sp_pesqusuarios" line 4 at SQL statement
********** Error **********
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 "sp_pesqusuarios" line 4 at SQL statement
Sei que deve se tratar da meneira que estou tentando mostrar o resultado, mais nao sei como fazer isso ?
evefuji 8 de jan. de 2012
create or replace function sp_pesqusuarios ( integer )
returns setof category
as $$
begin
return query SELECT usu_nome , usu_login , usu_senha , usu_dtexpira FROM us_usuarios WHERE usu_codigo = $ 1 ;
end ;
$$
language plpgsql ;
select * from sp_pesqusuario ( 1 )
rick1902 8 de jan. de 2012
Amigo agradeco a ajuda deu muito certo mais agora estou querendo implementar um Join fiz da seguinte forma :
create or replace function sp_pesqusuarios(integer)
returns setof us_usuarios
as '
begin
return query SELECT usu_codigo, usu_nome, usu_login, usu_senha, usu_ativo,
usu_dtexpira, usu_cod_nivel, us_niveis.niv_descricao,
usu_dtcadastro, usu_dtalteracao
FROM us_usuarios
INNER JOIN us_niveis ON (us_niveis.niv_codigo = usu_cod_nivel)
WHERE usu_codigo = $1;
end;
'
language plpgsql;
Mais esta me retornando o seguinte erro ao rodar o select *
ERROR : structure of query does not match function result type
DETAIL : Returned type character varying ( 100 ) does not match expected type date in column 8 .
CONTEXT : PL / pgSQL function "sp_pesqusuarios" line 3 at RETURN QUERY
********** Error **********
ERROR : structure of query does not match function result type
SQL state : 42804
Detail : Returned type character varying ( 100 ) does not match expected type date in column 8 .
Context : PL / pgSQL function "sp_pesqusuarios" line 3 at RETURN QUERY
rick1902 9 de jan. de 2012
Pessoal dei uma pesquisada e cheguei ao seguinte :
create or replace function sp_pesqusuarios ( IN integer , OUT usu_codigo integer ,
OUT usu_nome character varying , OUT niv_descricao character varying )
returns setof record
as '
begin
return query SELECT
us_usuarios . usu_codigo , us_usuarios . usu_nome , us_niveis . niv_descricao
FROM us_usuarios
LEFT OUTER JOIN us_niveis ON ( us_niveis . niv_codigo = usu_cod_nivel )
WHERE us_usuarios . usu_codigo = $ 1 ;
end ;
'
language plpgsql ;
Espero ter ajudado e agradeco a ajuda de todos, um forte abraco a todos.