2013-02-19 5 views
0

У меня есть функция follwoing, которая работает нормально, НО я не уверен, что она хранит что-либо в массиве.Функция вывода функции хранения в массиве

DECLARE 
    _r record; 
    point character varying[] := '{}'; 
    i int := 0; 

BEGIN 



FOR _r IN EXECUTE ' SELECT a.'|| quote_ident(column_name) || ' AS point 
     FROM ' || quote_ident (table_name) ||' AS a' 
LOOP 

     point[i] = _r; 
     i = i+1; 

END LOOP; 

RETURN point; 
END; 

То, что я после того, как это есть массив, с яваскриптом стороны я могу траверс и читать каждое значение, хранящееся в массиве. Правильно ли это?

+0

Исправить свои теги. Как вопрос связан с sqlserver и postgis? –

+0

, поскольку я использую пространственные данные в качестве данных столбца, которые каждая строка содержит значение точки @Hamlet Hakobyan. –

+0

Я думаю, что правильные метки означают, 'правильно пометить свой вопрос'. С каким сервером * db * связан ваш вопрос? – Kaf

ответ

1

Массивы в PL/pgSQL или PostgreSQL не имеют ничего общего с массивами в javascript или php.

Если вы работаете с клиентом 0av, например php, то любой запрос к базам данных будет возвращать набор записей, которые могут быть скопированы во внутреннюю переменную массива вызывающей стороны, например pg_fetch_array() of php.

Если вы работаете с тонкими клиентами, такими как javascript, вам нужно будет вернуть данные в формате, подходящем для javascript для понимания. Вам понадобится служба предоставления данных на стороне сервера, которая получит результаты от PostgreSQL через собственный интерфейс libpq и преобразует его в готовый javascript, например JSON. PostgreSQL имеет встроенную поддержку типа данных XML, а также JSON (немного ограниченный на данный момент). Не уверен, что это вам очень поможет.

Что касается функций PL/pgSQL, я действительно рекомендую прочитать official docs на этом языке. Чтобы увидеть значение point во время работы, используйте это сообщение:

RAISE NOTICE 'point = %', point;