PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Matrici di interi Postgres come parametri?

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

Se il tuo driver non nativo non ti consente ancora di passare gli array, puoi:

  • passa una rappresentazione di stringa di un array (che la tua procedura memorizzata può quindi analizzare in un array -- vedi string_to_array )

    CREATE FUNCTION my_method(TEXT) RETURNS VOID AS $$ 
    DECLARE
           ids INT[];
    BEGIN
           ids = string_to_array($1,',');
           ...
    END $$ LANGUAGE plpgsql;
    

    poi

    SELECT my_method(:1)
    

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

  • affidati a Postgres stesso per eseguire il cast da una stringa a un array

    CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ 
           ...
    END $$ LANGUAGE plpgsql;
    

    poi

    SELECT my_method('{1,2,3,4}')
    
  • scegli di non utilizzare le variabili di collegamento ed emetti invece una stringa di comando esplicita con tutti i parametri esplicitati (assicurati di convalidare o eseguire l'escape di tutti i parametri provenienti dall'esterno per evitare attacchi di SQL injection.)

    CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ 
           ...
    END $$ LANGUAGE plpgsql;
    

    poi

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