sql >> Database >  >> RDS >> PostgreSQL

Postgres integer-arrays als parameters?

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

Als uw niet-native driver u nog steeds niet toestaat arrays door te geven, kunt u:

  • geef een tekenreeksrepresentatie door van een array (die uw opgeslagen procedure vervolgens in een array kan ontleden -- zie string_to_array )

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

    dan

    SELECT my_method(:1)
    

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

  • vertrouw op Postgres zelf om van een string naar een array te casten

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

    dan

    SELECT my_method('{1,2,3,4}')
    
  • kies ervoor om geen bindvariabelen te gebruiken en geef in plaats daarvan een expliciete opdrachtreeks op waarin alle parameters zijn gespeld (zorg ervoor dat u alle parameters die van buitenaf komen valideert of ontsnap om SQL-injectieaanvallen te voorkomen.)

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

    dan

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


  1. Wat is IN Logische operator in SQL Server - SQL Server / TSQL-zelfstudie, deel 122

  2. subquery in FROM moet een alias hebben

  3. Python- en MySQL-database:een praktische introductie

  4. Python SQL – De SQLite-, MySQL- en PostgreSQL-databases gebruiken met Python