--Baseado no seu exemplo faria dessa forma:
--SELECT * FROM rel_treinamento_admin2(13,$$1,2,3,4$$);
-- criacao de tipo, acho que não é necessário no seu caso, criei só
para exemplificar
CREATE TYPE public.tpi AS
(
id INTEGER
);
-- O segundo parametro ficaria como text, dentro da função seria feito
cast para inteiro
--a função começa assim versao 2 :
DROP FUNCTION IF EXISTS rel_treinamento_admin2 (IN x integer, IN y text);
CREATE OR REPLACE FUNCTION rel_treinamento_admin2(IN x integer, IN y text)
RETURNS SETOF tpi AS
$$
DECLARE
j tpi;
BEGIN
FOR j IN
(
SELECT sua_query
FROM generate_series(1,x) AS sua_query -- aqui
poderia ser a sua consulta
WHERE sua_query
-- a parte do in
IN
(
SELECT z.id[i]::integer
FROM
(
SELECT *
FROM string_to_array(y,',') AS id
) AS z,
generate_series(
1,array_upper(string_to_array(y,','),1)) AS i
)
)
LOOP
RETURN NEXT j;
END LOOP;
RAISE NOTICE 'Processo concluido com sucesso!!!';
RETURN;
EXCEPTION WHEN QUERY_CANCELED THEN
RAISE NOTICE 'Processo cancelado, ROLLBACK EFETUADO!!!';
RETURN;
END;
$$
LANGUAGE 'plpgsql';
-- Sintetizando ... a parte do IN em query, basicamente seria assim:
SELECT sua_query
FROM generate_series(1,13) AS sua_query
WHERE sua_query
IN
(
SELECT z.id[i]::integer
FROM
(
SELECT *
FROM string_to_array('1,2,3,4',',') AS id
) AS z,
generate_series(
1,array_upper(string_to_array('1,2,3,4',','),1)) AS i
) ;
Espero ter ajudado!
Cordialmente,
Emerson Hermann
Em 22 de dezembro de 2010 11:03, Beto Lima <[email protected]> escreveu:
> pessoal fiz uma função mas preciso passar uma lista de valores para
> buscar dentro do IN...
>
> SELECT * FROM rel_treinamento_admin(13,1,2,3,4)
>
> a função começa assim:
>
> CREATE OR REPLACE FUNCTION rel_treinamento_admin(IN x integer, IN y
> integer, OUT nome_posto text, OUT nome text, OUT soma_notas text)
>
> numa parte do select preciso comparar uma coluna com IN valores do
> segundo parametro
>
> ex: AND coluna IN ($2)
>
> Só que não sei como passar estes valores para o segundo parametro no
> caso o IN y integer
>
> valeu
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral