Bonjour,

dans la base de données,
- j'ai une table ma_table possédant une colonne de nom id de type INTEGER
- j'ai une fonction qui reçoit en entrée un tableau d'entiers

Comment est-il possible de récupérer les lignes de ma_table pour lesquelles la valeur de la colonne id est une des valeurs passées dans le tableau en paramètre pour faire un export en csv par exemple?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE OR REPLACE FUNCTION ma_fonction( tab_id INT[])
RETURNS INTEGER AS
$BODY$
 
-- essai de contenu n°1 qui fonctionne: les lignes pour lesquelles id vaut 1, 32, ou 33 sont exportées
 
EXECUTE 'COPY (
SELECT
id, col2
FROM
ma_table WHERE id = ANY(ARRAY[1,32,33]))
... etc
 
-- essai de contenu n°2 qui ne fonctionne pas: ERREUR "la colonne tab_id n'existe pas"
EXECUTE 'COPY (
SELECT
id, col2
FROM
ma_table WHERE id = ANY(tab_id))
... etc
avec un appel ma_fonction(ARRAY[1,32,33])

Or c'est bien la deuxième forme qui m'intéresse ...


Merci d'avance pour votre aide