【问题标题】:Pls-00364: loop index variable 'j' use is invalidPls-00364: 循环索引变量 'j' 使用无效
【发布时间】:2015-12-30 13:44:32
【问题描述】:

我正在尝试计算架构中每个表的数量。

SET serveroutput ON;
BEGIN
FOR I IN (SELECT TABLE_NAME FROM USER_TABLES) LOOP
FOR J IN (SELECT COUNT(1) CNT FROM I.TABLE_NAME) LOOP
DBMS_OUTPUT.PUT_LINE(I.TABLE_NAME||'>>'||J.CNT);
END LOOP;
END LOOP;
END;
/

但是我遇到了这样的错误。,

Error report:
ORA-06550: line 3, COLUMN 37:
PL/SQL: ORA-00942: TABLE OR VIEW does NOT exist
ORA-06550: line 3, COLUMN 10:
PL/SQL: SQL Statement ignored
ORA-06550: line 4, COLUMN 42:
PLS-00364: loop INDEX variable 'J' USE IS invalid
ORA-06550: line 4, COLUMN 1:
PL/SQL: Statement ignored

可以在sql查询本身中实现吗? /

【问题讨论】:

标签: sql oracle plsql


【解决方案1】:

你需要使用动态sql来实现:

DECLARE 
  val NUMBER;
BEGIN
FOR I IN (SELECT TABLE_NAME FROM USER_TABLES) LOOP
  EXECUTE IMMEDIATE 'SELECT count(*) FROM ' || i.table_name INTO val;
  DBMS_OUTPUT.PUT_LINE(i.table_name || ' ==> ' || val );
END LOOP;
END;
/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2017-08-13
    • 2011-02-19
    • 2014-11-25
    相关资源
    最近更新 更多