日期:2014-05-16  浏览次数:20867 次

(postgres)关于查询表的存储过程。
vc++客户端   (ADO连接)     我想在表am_subsys中查询所有记录并可得到各字段的值。存储过程如下。
am_subsys结构:
CREATE   TABLE   am_subsys
(
    id   int4   NOT   NULL   DEFAULT   nextval( 'am_subsys_id_seq '::regclass),
    typeid   int4   NOT   NULL,
    name   varchar(100)   NOT   NULL,
    description   varchar(100),
    CONSTRAINT   pk_am_subsys   PRIMARY   KEY   (id)
)  
执行SQL查询
CREATE   OR   REPLACE   FUNCTION   ua_func_query_subsys()   RETURNS   SETOF   am_subsys   AS   $$
        SELECT   *   FROM   am_subsys   ORDER   BY   am_subsys.id;
$$   LANGUAGE   SQL;
执行:Res.Open(   "SELECT   ua_func_query_subsys() "   )
但是得到的字段只有 "ua_func_query_subsys "  
ADO中得到的字段值是(3,1, "www ", "www ")   。但是我想得到每个字段的值,而不是字段拼接出来的一个字符串。
我按照如下方式可以得到:
Res.Open(   "select   name(ua_func_query_subsys()),   typeid(ua_func_query_subsys()))
但是函数ua_func_query_subsys()是不是执行了两遍啊,是否还有其他方式只执行一次查询而可以得到各个字段的值。
谢谢!




------解决方案--------------------
改为:Res.Open( "SELECT * from ua_func_query_subsys() " ),就OK