我有一个名为pro()
的函数。我想通过联合两个select
语句并生成输出来返回字符串。
函数: pro()
我的尝试:
create or replace function pro()
returns varchar as
$$
declare
sql varchar;
q varchar;
begin
sql := 'SELECT DISTINCT CAST(COUNT(ProductNumber) as varchar) ||'' - Count of the product Number '' as Descp
FROM product
UNION ALL
SELECT DISTINCT CAST(COUNT(ProductName) AS varchar) || '' - Count of the product Name '' as Descp
FROM product';
raise info '%',sql;
execute sql into q;
return q;
end;
$$
language plpgsql;
调用函数:
select pro();
仅返回select语句的第一部分:
______________________________________
|pro |
|character varying |
|______________________________________|
|6 - Count of the product Number |
|______________________________________|
但是预期的结果应该是:
______________________________________
|pro |
|character varying |
|______________________________________|
|6 - Count of the product Number |
|______________________________________|
|6 - Count of the product Name |
|______________________________________|
RETURN QUERY EXECUTE
并不是必需的,一个简单的RETURN QUERY
就足够了。此外,请注意,这样简单的结果也可以声明为RETURNS SETOF TEXT
,但当然在函数声明级别上使用RETURNS TABLE
可以指定列别名。 - pozs