我有以下功能,但是我不确定它是否在数组中存储任何内容。
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;
我所追求的是拥有一个数组,从javascript方面我可以遍历并读取存储在数组中的每个值。这是正确的做法吗?
答案 0 :(得分:1)
PL / pgSQL或PostgreSQL中的数组与javascript或php中的数组无关。
如果你正在使用libpq
感知客户端,比如php,那么对数据库的任何查询都将返回一组记录,这些记录可以累积到主叫方的内部数组变量中,如{ {3}}
如果您正在使用瘦客户端,例如javascript,则需要以适合javascript的格式返回数据才能理解。您将需要一个服务器端数据提供服务,它将通过libpq
本机接口从PostgreSQL获取结果,并将其转换为javascript-ready,如JSON
。 PostgreSQL本身支持XML
数据类型以及JSON
(目前有点限制)。不确定这对你有多大帮助。
关于PL / pgSQL函数,我真的建议在这种语言上阅读pg_fetch_array()
of php。要在运行时查看point
的值,请使用以下语句:
RAISE NOTICE 'point = %', point;