POSTGRESQL将递归函数转换为循环函数

POSTGRESQL将递归函数转换为循环函数,postgresql,recursion,Postgresql,Recursion,有人能帮我用loop更改相同的程序吗你有什么问题吗?我知道这段代码没有问题。但是要在不使用递归函数的情况下更改此代码,此代码没有任何问题。但是我想要相同的代码而不使用递归函数。函数本身不是递归的。您使用一个查询,而该查询又是一个递归公共表表达式。如果不使函数递归,就不能得到相同的结果。@Nikhil这不是“为我编写代码”的地方。如果您在编写代码时遇到问题,请说明您尝试过什么,问题是什么;如果您没有问题,请雇佣人员或阅读手册,然后带着真正的问题回来。 CREATE OR REPLACE FUNCT

有人能帮我用loop更改相同的程序吗

你有什么问题吗?我知道这段代码没有问题。但是要在不使用递归函数的情况下更改此代码,此代码没有任何问题。但是我想要相同的代码而不使用递归函数。函数本身不是递归的。您使用一个查询,而该查询又是一个递归公共表表达式。如果不使函数递归,就不能得到相同的结果。@Nikhil这不是“为我编写代码”的地方。如果您在编写代码时遇到问题,请说明您尝试过什么,问题是什么;如果您没有问题,请雇佣人员或阅读手册,然后带着真正的问题回来。
CREATE OR REPLACE FUNCTION employee(IN emp_id integer)

 RETURNS TABLE(id integer, name text, designation text, salary integer,   man_id integer) AS
$BODY$

BEGIN

RETURN QUERY

WITH recursive manager_hierarchy(e_id,e_name,e_desig,e_sal,m_id) AS

(
select e.id,e.name,e.designation,e.salary,e.man_id FROM emp_table e 
WHERE e.id=emp_id
union
SELECT
rp.id,rp.name,rp.designation,rp.salary,rp.man_id
FROM
manager_hierarchy mh
INNER JOIN emp_table rp ON mh.e_id=rp.man_id
)

SELECT h.e_id,h.e_name,h.e_desig,h.e_sal,h.m_id
FROM manager_hierarchy h;
END;

$BODY$
LANGUAGE plpgsql