You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL*Plus中PL/SQL数字金字塔对齐输出问题求助

解决SQL*Plus中居中数字金字塔的PL/SQL实现

以下是可直接在SQL*Plus中运行的PL/SQL代码,能生成带前置空格的居中数字金字塔,且每行末尾无多余空格:

SET SERVEROUTPUT ON;
DECLARE
    v_total_levels NUMBER := 4; -- 金字塔总层数,可按需修改
    v_prefix_spaces VARCHAR2(100);
    v_num_str VARCHAR2(100);
BEGIN
    FOR v_level IN 1..v_total_levels LOOP
        -- 生成前置空格:总层数减当前行号,保证数字居中
        v_prefix_spaces := LPAD(' ', v_total_levels - v_level);
        
        -- 构建当前行的数字串,自动去除末尾冗余空格
        v_num_str := RTRIM(REPLACE(RPAD(' ', v_level * 2 - 1), ' ', v_level || ' '));
        
        -- 输出整行内容
        DBMS_OUTPUT.PUT_LINE(v_prefix_spaces || v_num_str);
    END LOOP;
END;
/

核心逻辑说明

  • 前置空格控制:通过LPAD生成总层数-当前行号个空格,让每行数字自然居中对齐。
  • 数字串处理:
    • 先用RPAD生成长度为2*当前行号-1的空格串(对应n个数字加n-1个分隔空格的总长度)。
    • 再用REPLACE把每个空格替换为当前数字+空格,最后通过RTRIM剔除末尾多余的空格,确保行尾干净。
  • SQL*Plus输出配置:SET SERVEROUTPUT ON是开启PL/SQL输出的必要设置,否则无法看到运行结果。

运行后将得到预期的居中格式输出:

1 
  2 2 
 3 3 3 
4 4 4 4 

内容的提问来源于stack exchange,提问作者Fabrice Joey THIBAUT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 00:58:18