【问题标题】:Oracle PLSQL program to make increasing patternOracle PLSQL 程序制作递增模式
【发布时间】:2021-12-04 22:01:08
【问题描述】:

我正在做一个项目,我遇到了一个问题,我需要一个 PLSQL 程序来执行以下模式,比如增加数字、星号、哈希等。

1
12
123
1234
12345

【问题讨论】:

  • 为什么一定要pl/sql?正如您从巴巴罗斯的回答中看到的那样,可以使用纯 SQL 来完成。 (您确实了解,不是吗,PL/SQL 是 oracle 的过程语言,而 SQL 是或多或少(通常较少)标准化的 声明性 语言。 )
  • 请展示您当前研究的结果并描述为什么它不能解决您的问题。 SO 不是代码编写服务。

标签: sql oracle plsql


【解决方案1】:

只需使用两个循环:

BEGIN
  FOR i IN 1 .. 5 LOOP
    FOR j IN 1 .. i LOOP
      DBMS_OUTPUT.PUT(j);
    END LOOP;
    DBMS_OUTPUT.NEW_LINE();
  END LOOP;
END;
/

哪些输出:

1
12
123
1234
12345

db小提琴here

【讨论】:

    【解决方案2】:

    你可以使用这样的分层查询

    WITH t AS 
    (  
      SELECT LISTAGG(level) WITHIN GROUP (ORDER BY level) AS nr, MAX(level) AS lvl
        FROM dual
     CONNECT BY level <= 5 
    )
    SELECT SUBSTR(nr,1,level) AS nr
      FROM t
    CONNECT BY level <= lvl 
    

    如果需要在 PL/SQL 代码块中编写,则使用 FOR LOOP 和上面的查询

    SQL> SET SERVEROUTPUT ON
    SQL> BEGIN
     FOR c IN 
           (
            <above query>
           )
     LOOP
       DBMS_OUTPUT.PUT_LINE(c.nr);
     END LOOP;
    END;
    / 
    

    Demo

    【讨论】:

      猜你喜欢
      • 2020-02-04
      • 1970-01-01
      • 2012-04-01
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      相关资源
      最近更新 更多