如何将鳕鱼从FOR更改为WHILE? (正文中的代码)

时间:2018-10-24 17:17:37

标签: sql loops for-loop while-loop oracle-sqldeveloper

我有一个代码,可以搜索2条链,并给出我们可以从两条链中得到的最大链,进行打印并获得其鬃毛字符的大小。

示例:如果我输入“ paris”和“ sarix”,我们将得到ari = 3

现在,我需要知道如何在while循环或其他循环中执行此操作,但是我真的不知道如何执行此操作,因此,如果您能帮助我,我会很感激。

CREATE OR REPLACE PACKAGE calc_cadena AS 
    FUNCTION FNC_CALCULASUB (cadena1 VARCHAR2, cadena2 VARCHAR2) 
    RETURN varchar2; 
END; 

CREATE OR REPLACE PACKAGE BODY calc_cadena AS 
    var_ejemplo number; 
    FUNCTION FNC_CALCULASUB (cadena1 VARCHAR2, cadena2 VARCHAR2) 
    RETURN varchar2 
    IS 
    caden varchar2(1000);   
    conta number(5);       
    BEGIN 
         conta:=0;  
         caden:='';  
         for I in 1..length(cadena2) loop 
             for J in I..length(cadena2) loop 
                 if UPPER(instr(cadena1,substr(cadena2,I,J-I+1)))>0 then 
                    if length(substr(cadena2,I,J-I+1))>conta then     
                        conta:=length(substr(cadena2,I,J-I+1));     
                        caden:=substr(cadena2,I,J-I+1);             
                    end if;
                 end if;
             end loop;
         end loop;

        return caden||'='||to_char(length(caden)); 
    end; 
end;  

SELECT calc_cadena.FNC_CALCULASUB('paris','sarix')
FROM    DUAL;

尽我所能。

0 个答案:

没有答案