0

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

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

4

1 回答 1

1

PL/pgSQL 或 PostgreSQL 中的数组与 javascript 或 php 中的数组无关。

如果您正在使用libpq-aware 客户端,例如 php,那么对数据库的任何查询都将返回一组记录,这些记录可以累积到调用方的内部数组变量中,例如pg_fetch_array()php

如果您正在使用瘦客户端,例如 javascript,您将需要以适合 javascript 理解的格式返回数据。您将需要一个服务器端数据提供服务,该服务将通过libpq本机接口从 PostgreSQL 获取结果并将其转换为 javascript-ready 的,例如JSON. PostgreSQL 对数据类型有原生支持,XML而且JSON(目前有点受限)。不确定这是否会对您有很大帮助。

至于 PL/pgSQL 函数,我真的推荐阅读关于这种语言的官方文档。为了point在运行时查看 的值,请使用以下语句:

RAISE NOTICE 'point = %', point;
于 2013-02-19T13:24:37.823 回答