2010-11-01 6 views

Répondre

4

J'ai eu le même problème ces derniers temps.

Regardez ici:

http://postgresql.1045698.n5.nabble.com/Using-PL-pgSQL-text-argument-in-IN-INT-INT-clause-re-post-td3235644.html

Hope it helps.

Voici une fonction exemple:

CREATE OR REPLACE FUNCTION "GetSetOfObjects"(ids text) 
    RETURNS SETOF record AS 
$BODY$select * 
from objects 
where id = any(string_to_array($1,',')::integer[]);$BODY$ 
    LANGUAGE sql IMMUTABLE 
+1

Tnx une beaucoup) J'ai essayé n'importe quoi, mais oubliez de passer à =)) –

+0

Comment le niez-vous, pour trouver des identifiants * NOT * dans le tableau? Simplement utiliser! = Ne fonctionne pas pour moi. – Cerin

+1

@Cerin: veuillez utiliser '! = All' au lieu de'! = Any' – rsc

1

Fondamentalement, vous ne pouvez pas. Ce que vous pouvez faire est de passer dans une liste délimitée par des virgules et de le partager en deux dans votre fonction. Here are some examples en utilisant SQL Server, mais je suis sûr qu'ils peuvent être traduits.

À moins que this (PostgreSQL) est ce dont vous parlez.

1

i utilisent généralement la conversion implicite

select '{1,2,3,4,5}' :: entier []

+0

La question n'était pas de savoir comment obtenir un tableau d'entiers) J'ai un tel tableau par défaut à partir des paramètres d'entrée. –

Questions connexes