0
我想實現在PL/pgSQL函數的一些業務邏輯。如何寫這個功能作爲一個PL/pgSQL函數?
我已經砍死在一起,說明我想在功能包含業務邏輯的類型,一些僞代碼。
注意:此函數返回一個表,所以可以像一個查詢使用它:
SELECT A.col1,B.col1 FROM(SELECT * FROM some_table_returning_func(1,1,2,3)作爲A),tbl2爲B;
的PL/pgSQL函數的僞代碼如下:
CREATE FUNCTION some_table_returning_func(uid int, type_id int, filter_type_id int, filter_id int) RETURNS TABLE AS $$
DECLARE
where_clause text := 'tbl1.id = ' + uid;
ret TABLE;
BEGIN
switch (filter_type_id)
{
case 1:
switch (filter_id)
{
case 1:
where_clause += ' AND tbl1.item_id = tbl2.id AND tbl2.type_id = filter_id';
break;
//other cases follow ...
}
break;
//other cases follow ...
}
// where clause has been built, now run query based on the type
ret = SELECT [COL1, ... COLN] WHERE where_clause;
IF (type_id <> 1) THEN
return ret;
ELSE
return select * from another_table_returning_func(ret,123);
ENDIF;
END;
$$ LANGUAGE plpgsql;
我有以下問題:
我怎樣才能正確地寫入功能(即執行與查詢生成的WHERE子句,並返回一個表
我該如何寫一個PL/pgSQL函數來接受一個表和一個整數並返回一個表(another_table_re turning_func)?