gpt4 book ai didi

oracle - 将表名作为 plsql 参数传入

转载 作者:行者123 更新时间:2023-12-01 08:56:12 26 4
gpt4 key购买 nike

我想编写一个函数来返回名称作为变量传入的表的行数。这是我的代码:

create or replace function get_table_count (table_name IN varchar2)
return number
is
tbl_nm varchar(100) := table_name;
table_count number;
begin
select count(*)
into table_count
from tbl_nm;
dbms_output.put_line(table_count);
return table_count;
end;

我收到此错误:
FUNCTION GET_TABLE_COUNT compiled
Errors: check compiler log
Error(7,5): PL/SQL: SQL Statement ignored
Error(9,8): PL/SQL: ORA-00942: table or view does not exist

我明白 tbl_nm被解释为一个值而不是一个引用,我不知道如何逃避它。

最佳答案

您可以使用动态 SQL:

create or replace function get_table_count (table_name IN varchar2)
return number
is
table_count number;
begin
execute immediate 'select count(*) from ' || table_name into table_count;
dbms_output.put_line(table_count);
return table_count;
end;

还有一种获取行数的间接方法(使用系统 View ):
create or replace function get_table_count (table_name IN varchar2)
return number
is
table_count number;
begin
select num_rows
into table_count
from user_tables
where table_name = table_name;

return table_count;
end;

仅当您在调用此函数之前收集了表的统计信息时,第二种方法才有效。

关于oracle - 将表名作为 plsql 参数传入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27592366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com