Plsql 无法从过程访问表名列表

Plsql 无法从过程访问表名列表,plsql,schema,Plsql,Schema,在上述代码中,scma_name.def(i)不工作。不能像这样访问表名吗?我的目标是从列表中提到的表中获取行计数。我不能从模式中创建所有表,因为我只希望对所选表进行行计数 然而,这个for循环是有效的-- 我不明白为什么表名与保存在变量中的架构名一起使用时不能使用。最终工作代码: FOR i IN def.FIRST .. def.LAST LOOP select def(i) into tbl_name from dual; DBMS_OUTPUT.PUT_LINE(tbl_

在上述代码中,scma_name.def(i)不工作。不能像这样访问表名吗?我的目标是从列表中提到的表中获取行计数。我不能从模式中创建所有表,因为我只希望对所选表进行行计数

然而,这个for循环是有效的--

我不明白为什么表名与保存在变量中的架构名一起使用时不能使用。

最终工作代码:

FOR i IN def.FIRST .. def.LAST
LOOP
    select def(i) into tbl_name from dual;
    DBMS_OUTPUT.PUT_LINE(tbl_name);
END LOOP;

您将在
DBMS\u output
选项卡中获得输出

您的代码中有几个基本问题。请先自学PL/SQL。@user272735,我已经纠正了问题,现在只剩下核心问题了,你现在可以帮我吗?你需要查看
executeimmediate
子句。对象名默认以大写形式存储在字典表中。因此,请尝试将“table1”和“table2”分别转换为“table1”和“table2”。@mmmmm pie谢谢…执行即时操作
FOR i IN def.FIRST .. def.LAST
LOOP
    select def(i) into tbl_name from dual;
    DBMS_OUTPUT.PUT_LINE(tbl_name);
END LOOP;
declare
type abc IS table of varchar2(2000);
def abc:= abc();
totl_cont number;
scma_name varchar2(10) := 'schema_name';
totl_name varchar2(100);
sql_stmt varchar2(200);

begin
def.extend(n); -- where n is the number of tables you are using e.g i would be using def.extend(3)

def(1):='table1';
def(2):='table2';
def(3):='table3';
--def(n):='add as many tables you want, given they should be present in the schema :)'

FOR i IN def.FIRST .. def.LAST
  LOOP
      select scma_name||'.'||def(i) into totl_name from dual;
      sql_stmt:= 'select count(*) from '||totl_name;
      EXECUTE IMMEDIATE sql_stmt into totl_cont;
      DBMS_OUTPUT.PUT_LINE(def(i) ||' --  ' ||totl_cont);
  END LOOP;

end;