【发布时间】:2016-02-07 12:16:37
【问题描述】:
我编写了一个程序来生成长度为 2 的字符串的所有可能组合。程序如下:
CREATE OR REPLACE PROCEDURE string_combinations
AS
vblString1 VARCHAR2(100);
vblString2 VARCHAR2(100);
vblChr1 NUMBER;
vblChr2 NUMBER;
BEGIN
vblChr1 := 65;
LOOP
SELECT Chr(vblChr1) INTO vblString1 FROM dual;
vblChr2 := 65;
LOOP
vblString2 := vblString1||Chr(vblChr2);
Dbms_Output.put_line(vblString2);
vblChr2:=vblChr2+1;
EXIT WHEN vblChr2=91;
END LOOP;
vblChr1:=vblChr1+1;
EXIT WHEN vblChr1=91;
END LOOP;
END;
/
我在另一个循环中使用了一个循环。所以,如果我必须生成长度为 3 的字符串,我可以简单地使用另一个循环。但是,如果我希望生成长度为 5、6、7 或更长的字符串,那将会很长。如何使用递归来实现它? 我正在使用 oracle。
【问题讨论】:
标签: sql oracle recursion plsql