在不使用 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;
任何人都可以帮助我在不使用 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;