PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres-Integer-Arrays als Parameter?

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

Wenn Ihr nicht-nativer Treiber Ihnen immer noch nicht erlaubt, Arrays zu übergeben, dann können Sie:

  • Übergeben Sie eine Zeichenfolgendarstellung eines Arrays (die Ihre gespeicherte Prozedur dann in ein Array parsen kann - siehe string_to_array )

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

    dann

    SELECT my_method(:1)
    

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

  • Verlassen Sie sich auf Postgres selbst, um von einem String in ein Array umzuwandeln

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

    dann

    SELECT my_method('{1,2,3,4}')
    
  • Verwenden Sie keine Bind-Variablen und geben Sie stattdessen eine explizite Befehlszeichenfolge mit allen ausgeschriebenen Parametern aus (stellen Sie sicher, dass alle Parameter, die von außen kommen, validiert oder maskiert werden, um SQL-Injection-Angriffe zu vermeiden.)

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

    dann

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