我們能否在函數中使用CASE條件表達式中的SELECT語句?
我試過以下功能來完成上述任務。PostgreSQL:如何在函數中使用CASE表達式中的SELECT語句?
例如:我有一個函數用於顯示包含一些行的表。
create or replace function test(n integer)
returns table (name text,city text) as
$body$
begin
case n when 1 then
select * from table1
when 2 then
select * from table2
when 3 then
select * from view1
end;
end;
$body$
language plpgsql;
--Calling功能
select * from test(1);
/*have to show details of table1*/
select * from test(2);
/*have to show details of table2*/
select * from test(3);
/*have to display details of view1*/
非常感謝。這裏有點混亂。 UNION ALL需要所有的列都是相同的,但是當我想顯示一個具有不同列的表時,可以在這裏嗎? – Meem
@Meem:*列號*和*日期類型*必須匹配(或者在緊密相關的類型之間可以自動轉換)。或者你必須填寫常量並施放以使它們匹配。功能也是如此。對於'UNION'查詢,只使用第一條腿的名字,'UNION'查詢後面的名字不是無關緊要的。對於函數,只使用聲明的'RETURN'類型的名稱。 –
哦!沒關係。 – Meem