sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Arreglos enteros de Postgres como parámetros?

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

Si su controlador no nativo aún no le permite pasar matrices, entonces puede:

  • pasar una representación de cadena de una matriz (que su procedimiento almacenado luego puede analizar en una matriz; consulte string_to_array )

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

    entonces

    SELECT my_method(:1)
    

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

  • confíe en el propio Postgres para convertir una cadena en una matriz

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

    entonces

    SELECT my_method('{1,2,3,4}')
    
  • elija no usar variables de vinculación y emita una cadena de comando explícita con todos los parámetros explicados en su lugar (asegúrese de validar o escapar de todos los parámetros que provienen del exterior para evitar ataques de inyección SQL).

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

    entonces

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