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
相关产品推荐
相关产品推荐

