Oracle PL/SQL所有可能的组合函数

Oracle PL/SQL所有可能的组合函数,oracle,plsql,Oracle,Plsql,使用PL/SQL计算从一组n个值中选择的k个项的组合数。我最近创建了一个使用递归处理字符串的函数,它似乎工作得很好,但现在我想用它来处理一组输入的n个值,而不是字符串值,并且似乎不知道如何正确地调整它来处理值而不是字符串。这是我的字符串递归代码 create or replace function print_anagrams (pre in varchar2, str in varchar2) RETURN varchar2 As prefix varchar2(3

使用PL/SQL计算从一组n个值中选择的k个项的组合数。我最近创建了一个使用递归处理字符串的函数,它似乎工作得很好,但现在我想用它来处理一组输入的n个值,而不是字符串值,并且似乎不知道如何正确地调整它来处理值而不是字符串。这是我的字符串递归代码

create or replace 
  function print_anagrams
  (pre in varchar2, str in varchar2)
   RETURN varchar2
  As
    prefix varchar2(30);
    stringg varchar2(30);
    strlen number;
  begin
    strlen := length(str);
    if NVL(strlen, 0) = 0 then
     dbms_output.put_line(pre);
    else
      for i in 1..strlen loop
        prefix := pre || SUBSTR(str,i,1);
        stringg := SUBSTR(str,1,i - 1) || SUBSTR(str,i+1,strlen);
        print_anagrams(prefix,stringg);
      end loop;
    end if;
  end;
/

您希望传入的参数是“varchar2表”。有关更多信息,请参阅本文:。请注意,如果您愿意,也可以使用“整数表”。

您希望传入的参数是“varchar2表”。有关更多信息,请参阅本文:。请注意,如果您愿意,也可以使用“整数表”。

什么是“n值”—n只是一个未知数字,还是指一系列数字?是否必须向您传递一个“预增量”字符串,或者可以向您传递一个集合?它必须是PL/SQL吗?显示示例输入和预期输出总是有用的。“n值”将是用户输入的值,因此是一个数字列表。我希望通过传递一组值来执行,并且当我试图学习PL/SQL时,它需要在PL/SQL中。因此,如果输入1,2,3,它将打印123,132,213,231,312,321。应该已经澄清了,我的同位语。如果您的输入仍然是像
'1,2,3'
这样的分隔字符串,那么这与处理字符串真的不同吗?它们恰好是数字而不是字符,但程序是否在意?我在中的意思是“collection”,不确定您的意思是“collection”,还是一个字符串值。这将如何调用-如何提供初始值列表?我想如果以字符串形式输入,它是什么类型不会有什么区别,这是一个函数,而不是在调用函数时输入值并返回组合的过程。至于使用集合或单个字符串值,我宁愿使用集合中的值,而不是单个字符串值。什么是“n值”-n只是一个未知数字,或者你指的是一系列数字?是否必须向您传递一个“预增量”字符串,或者可以向您传递一个集合?它必须是PL/SQL吗?显示示例输入和预期输出总是有用的。“n值”将是用户输入的值,因此是一个数字列表。我希望通过传递一组值来执行,并且当我试图学习PL/SQL时,它需要在PL/SQL中。因此,如果输入1,2,3,它将打印123,132,213,231,312,321。应该已经澄清了,我的同位语。如果您的输入仍然是像
'1,2,3'
这样的分隔字符串,那么这与处理字符串真的不同吗?它们恰好是数字而不是字符,但程序是否在意?我在中的意思是“collection”,不确定您的意思是“collection”,还是一个字符串值。这将如何调用-如何提供初始值列表?我想如果以字符串形式输入,它是什么类型不会有什么区别,这是一个函数,而不是在调用函数时输入值并返回组合的过程。至于使用集合或单个字符串值,我宁愿使用集合而不是单个字符串值。