首页 > 解决方案 > 不使用 COUNT 操作 ORACLE 打印表中行数的简单过程

问题描述

谁能帮我创建一个简单的程序来打印表中的行数而不使用 ORACLE 中的 COUNT 操作?

标签: sqloracleprocedure

解决方案


LOOP考虑到不允许聚合函数,您必须在过程中寻找..

假设我有一个account包含 3 条记录的表。

SQL> SELECT * FROM ACCOUNT;

    ACC_NR       SUM_    CUST_ID
---------- ---------- ----------
       500       3400        100
       600       5000        101
       700       5070        102

SQL>

现在,创建过程:

SQL> CREATE OR REPLACE PROCEDURE COUNT_ACCOUNT (
  2      P_OUT_COUNT OUT   NUMBER
  3  ) AS
  4  BEGIN
  5      P_OUT_COUNT := 0;
  6      FOR I IN (
  7          SELECT
  8              1 AS RW
  9          FROM
 10              ACCOUNT
 11      ) LOOP
 12          P_OUT_COUNT := P_OUT_COUNT + 1;
 13      END LOOP;
 14  END COUNT_ACCOUNT;
 15  /

Procedure created.

SQL>

执行该过程以查看输出:

SQL> SET SERVEROUT ON
SQL>
SQL> DECLARE
  2      CNT   NUMBER := 0;
  3  BEGIN
  4      COUNT_ACCOUNT(CNT);
  5      DBMS_OUTPUT.PUT_LINE('NUMBER OF RECORDS IN ACCOUNT TABLE: ' || CNT);
  6  END;
  7  /
NUMBER OF RECORDS IN ACCOUNT TABLE: 3

PL/SQL procedure successfully completed.

SQL>

干杯!!


推荐阅读