CREATE FUNCTION sf_FindAFlowID(FlowID varchar2(50))
RETURNS TmpTbl varchar2(50)
AS
DECLARE
TmpID varchar2(50);
ParentID varchar2(50);
BEGIN
ParentID:=FlowID;
WHILE (parentid<>'')
BEGIN
TmpID:=ParentID;
SELECT parentid into ParentID FROM T_Workflow_FlowMain WHERE Flowid=TmpID;
END;
insert into TmpTbl(PFlowID) values(TmpID);
RETURN ;
END
RETURNS TmpTbl varchar2(50)
AS
DECLARE
TmpID varchar2(50);
ParentID varchar2(50);
BEGIN
ParentID:=FlowID;
WHILE (parentid<>'')
BEGIN
TmpID:=ParentID;
SELECT parentid into ParentID FROM T_Workflow_FlowMain WHERE Flowid=TmpID;
END;
insert into TmpTbl(PFlowID) values(TmpID);
RETURN ;
END
CREATE OR REPLACE
package pkg_test as
type myrctype is ref cursor;
end pkg_test;
/
CREATE FUNCTION sf_FindAFlowID(p_FlowID in varchar2)
RETURN pkg_test.myrctype
AS
v_rc pkg_test.myrctype;
str varchar2(50);
BEGIN
str:='select ParentID from T_Workflow_FlowMain start with Flowid='||p_FlowID||' connect by prior ParentID = Flowid';
open v_rc for str;
return v_rc;
END;
/declare
v_rc pkg_test.myrctype;
v_ParentID varchar2(50);
begin
v_rc:=sf_FindAFlowID(...);
loop
fetch v_rc into v_ParentID;
exit when v_rc%notfound;
dbms_output.put_line(v_ParentID);
end loop;
end;
/
这句话我看不懂在程序里怎么用
http://expert.csdn.net/Expert/topic/1551/1551178.xml?temp=7.024783E-02