Search Postgresql Archives

Re: SQL works but same function is confused

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks Tom and Adrian - Here are my SQL and the function:

SELECT category, v_status as status, count (tool_id) AS tool_count
FROM 
    (SELECT distinct category, tool_id, 'active' as v_status
                                  FROM tools
                                 WHERE time >= 123456
      UNION
                SELECT distinct e1.category, e1.tool_id, 'inactive' as v_status
                FROM tools e1
                WHERE not exists
                                (SELECT e2.category, e2.tool_id
                                FROM tools e2
                                WHERE e2.sim_time >= 123456
                                AND e2.category = e1.category
                                AND e2.tool_id = e1.tool_id)
   ) AS derived_table
GROUP BY category, Status

And here is the function:
CREATE OR REPLACE FUNCTION get_status
RETURNS TABLE (category SMALLINT, status TEXT, tool_count BIGINT) AS
$BODY$

#variable_conflict use_variable
DECLARE
v_status TEXT;
BEGIN
    RETURN QUERY SELECT category, v_status as status, count (tool_id) AS tool_count
    FROM 
    (SELECT distinct category, tool_id, 'active' as v_status
FROM tools
                                 WHERE time >= 123456
                                UNION
                SELECT distinct e1.category, e1.tool_id, 'inactive' as v_status
                FROM tools e1
                WHERE not exists
                                (SELECT e2.category, e2.tool_id
                                FROM tools e2
                                WHERE e2.sim_time >= 123456
                                AND e2.category = e1.category
                                AND e2.tool_id = e1.tool_id)
   ) AS derivedTable
GROUP BY category, Status;

END; $BODY$
LANGUAGE plpgsql;


-----Original Message-----
From: Tom Lane [mailto:tgl@xxxxxxxxxxxxx] 
Sent: Tuesday, April 01, 2014 7:21 PM
To: Bui, Michelle P
Cc: pgsql-general@xxxxxxxxxxxxxx
Subject: Re:  SQL works but same function is confused

"Bui, Michelle P" <michelle.p.bui@xxxxxxxxxx> writes:
> I have this query that when executed as a SQL statement, it works perfect!

OK ...

> I used <<block>> before Declare section and try using block.v_status 
> but this is not allowed (has syntax error).

That should work (in the sense of not getting a syntax error), but since you've not shown us exactly what you wrote, it's impossible to say what you did wrong.  However, that's mostly beside the point, because ...

> When I use #variable_conflict use_variable, there is no error anymore, but the resulted Status field is null. Seemed like Postgresql does not assign the v_status as we wish.

According to the above, the behavior you want is use_column.  Why are you trying to get it to use the variable when that's not what you want?

			regards, tom lane


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux