PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Matrizes inteiras do Postgres como parâmetros?


Veja:http://www.postgresql.org/docs/9.1/static/arrays.html

Se o seu driver não nativo ainda não permitir que você passe arrays, você pode:

  • passar uma representação de string de um array (que seu procedimento armazenado pode então analisar em um array -- veja string_to_array )
    CREATE FUNCTION my_method(TEXT) RETURNS VOID AS $$ 
    DECLARE
           ids INT[];
    BEGIN
           ids = string_to_array($1,',');
           ...
    END $$ LANGUAGE plpgsql;
    

    então
    SELECT my_method(:1)
    

    com :1 ='1,2,3,4'

  • confie no próprio Postgres para converter de uma string para um array
    CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ 
           ...
    END $$ LANGUAGE plpgsql;
    

    então
    SELECT my_method('{1,2,3,4}')
    

  • opte por não usar variáveis ​​de ligação e emita uma string de comando explícita com todos os parâmetros especificados (certifique-se de validar ou escapar de todos os parâmetros vindos de fora para evitar ataques de injeção de SQL).
    CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ 
           ...
    END $$ LANGUAGE plpgsql;
    

    então
    SELECT my_method(ARRAY [1,2,3,4])