注册

统计行记录数咨询

董小姐 2024/02/23 548 3 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】:```language
--业务用户执行
CREATE OR REPLACE FUNCTION count_rows (
table_name IN varchar2,
owner IN varchar2 := NULL
)
RETURN number AUTHID current_user
AS
num_rows number;
stmt varchar2(2000);
BEGIN
IF owner IS NULL THEN
stmt := 'select count(
) from "' || table_name || '"';
ELSE
stmt := 'select count(*) from "' || owner || '"."' || table_name || '"';
END IF;
EXECUTE IMMEDIATE stmt INTO num_rows;
RETURN num_rows;
END;
/

--查询记录数
select table_name, count_rows(table_name) nrows from user_tables;

为啥上述语句在sysdba用户下执行
查询记录数返回的是
SQL> select table_name, count_rows(table_name) nrows from user_tables;

LINEID table_name nrows


1 ##PLAN_TABLE 0
2 ##HISTOGRAMS_TABLE 0

我在业务用户下执行就返回好多条记录

回答 0
暂无回答
扫一扫
联系客服