postgresql: выберите возвращающий ARRAY - PullRequest
10 голосов
/ 12 мая 2011

У меня есть таблица как:

CREATE TABLE tbl_temp (id serial, friend_id int, name varchar(32));  

Хотелось бы запустить следующий SQL:

PREPARE x AS SELECT {$1,friend_id} FROM tbl_temp WHERE id = ANY($2);  
EXECUTE x(33, ARRAY[1,2,3,4])

Я в основном искал оператор, который вернет мне массив из двух целых, первый из которых будет пользовательским вводом, а второй будет из столбца таблицы, как friend_id.

Действительно ли это возможно в PostgreSQL?

Результаты SELECT ($ 1, friend_id) FROM tbl_temp;

EXECUTE x(44);
  row     
--------  
 (44,1)  
 (44,2)  
 (44,3)  
(3 rows)

Если я использую PQgetvalue(PGres, 0, 0), как будет выглядеть результат: {44,45} или как (44,45)?

Ответы [ 2 ]

19 голосов
/ 12 мая 2011

Я думаю, вы хотите использовать синтаксис конструктора массива :

SELECT ARRAY[$1, friend_id] FROM tbl_temp WHERE id = ANY($2)
4 голосов
/ 12 мая 2011

Я не уверен, что понимаю, что вы хотите ...

чтобы вернуть массив, сделайте это.

SELECT (44, "friend_id") FROM "tbl_temp" WHERE id = ANY(ARRAY[1,2,3,4]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...