sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres heltalsmatriser som parametrar?

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

Om din icke-infödda drivrutin fortfarande inte tillåter dig att skicka arrayer kan du:

  • skicka en strängrepresentation av en array (som din lagrade procedur sedan kan analysera till en array -- se string_to_array )

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

    sedan

    SELECT my_method(:1)
    

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

  • lita på att Postgres själv castar från en sträng till en array

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

    sedan

    SELECT my_method('{1,2,3,4}')
    
  • välj att inte använda bindningsvariabler och utfärda en explicit kommandosträng med alla parametrar utskrivna istället (se till att validera eller escape alla parametrar som kommer utifrån för att undvika SQL-injektionsattacker.)

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

    sedan

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


  1. En översikt över JSON-funktioner inom PostgreSQL

  2. Hur man utför rullande uppgraderingar för MySQL

  3. Hur Acos() fungerar i PostgreSQL

  4. JPA flush vs commit