2010-11-01 69 views

回答

4

我最近有同樣的問題。

看看這裏:

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

希望它能幫助。

下面是一個示例函數:

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一個很多)我試過任何,但忘記切換IN =)) – 2010-11-03 15:33:42

+0

你如何否定它,找到ids * NOT *在數組中?只需使用!=對我無效。 – Cerin 2011-02-10 13:42:58

+1

@Cerin:請使用'!= all'而不是'!=任何' – rsc 2011-02-11 08:42:50

1

基本上你不能。你可以做的是傳遞一個逗號分隔的列表,並在你的函數中拆分它。 Here are some examples使用SQL Server,但我相信他們可以翻譯。

除非this (PostgreSQL)是你在說什麼。

1

我通常使用隱式轉換

選擇 '{1,2,3,4,5}' ::整數[]

+0

問題不是關於如何獲得整數數組)我有這樣的數組默認情況下從輸入參數。 – 2010-11-03 15:34:31