【发布时间】:2019-02-17 04:15:30
【问题描述】:
我想得到一个结果:表名,从 AS_TABLE_LIST 中计算每个表的数量。
create procedure AtRowCount
as
declare
TableCount NUMBER(1);
TableName VARCHAR2(100);
BEGIN
SelectQuery1:= 'SELECT count(*) FROM ' || TableName || ' INTO ' || TableCount;
FOR TableName IN (select table_name from AS_TABLE_LIST)
LOOP
EXECUTE IMMEDIATE SelectQuery1;
END LOOP;
select TableName, TableCount into AT_ROW_COUNT from dual;
END AtRowCount;
我得到两个错误:
[错误] PLS-00306 (7: 19): PLS-00306: 错误的数量或类型 调用“||”的参数
[错误] ORA-00904 (9: 8): PL/SQL: ORA-00904: "TABLENAME": 无效 标识符
我已经尝试了很多次来解决这个问题,但仍然遇到同样的错误。 有什么建议吗?
【问题讨论】:
-
我在这里看到了很多问题;尝试从只执行
begin null; end;的程序开始逐步构建您的程序。然后添加变量和语句。一个starting point -
请显示minimal reproducible example。您在这里有很多问题,但没有完整的示例就无法查看。 AS_TABLE_LIST 在哪里创建和填充等。
-
你在这里
'SELECT count(*) FROM ' || TableName || ' INTO ' || TableCount;..的目的是什么?..如果从Tablename创建一个新表,那么必须refer this -
嗯。 AT_ROW_COUNT 是一张表吗?您希望您的结果显示在表格中,还是打印到屏幕上,还是其他方式?
标签: sql oracle select plsql count