将函数输出存储在数组中

时间:2013-02-19 10:25:11

标签: postgresql plpgsql libpq

我有以下功能,但是我不确定它是否在数组中存储任何内容。

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方面我可以遍历并读取存储在数组中的每个值。这是正确的做法吗?

1 个答案:

答案 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;