在不使用 COUNT 操作 ORACLE 的情况下打印 table 中行数的简单过程

Simple Procedure for Printing the count of rows in a table without using COUNT operation ORACLE

任何人都可以帮助我在不使用 ORACLE 中的 COUNT 操作的情况下创建用于在 table 中打印行数的简单过程吗?

您一定是在程序中查找 LOOP,考虑到聚合函数是不允许的..

假设我有一个 account table,里面有 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>

干杯!!

现在你 can/may 用

包裹下面的内容

带有或不带有 return 语句的过程或函数

DECLARE

CNT NUMBER;

BEGIN

SELECT MAX(ROWNUM) INTO CNT FROM TABLE_NAME;

DBMS_OUTPUT.PUT_LINE('NUMBER OF ROWS : '||CNT);

END;