【发布时间】:2023-03-29 20:30:02
【问题描述】:
我的数据库中有多个表。我必须找出这些表的名称。所以 我编写了以下程序:
CREATE OR REPLACE FUNCTION fun_tablefinder( keyword VARCHAR2 )
RETURN NUMBER
IS
v_query VARCHAR2(200);tablename VARCHAR2(20);
tablename NUMBER;
BEGIN
v_query:='SELECT count(TABLE_NAME) FROM USER_TAB_COLUMNS WHERE TABLE_NAME LIKE ''%'||upper(keyword)||'%''';
EXECUTE IMMEDIATE v_query INTO tablename;
RETURN tablename;
END;
但是我的查询中有错误,我无法修复:
tablename:= fun_tablefinder('ubl'); is not working
而且我对如何在调用此函数时提取多行感到困惑。如何使用循环来处理这些结果?
提前致谢。
【问题讨论】:
-
“不工作”是什么意思?请始终提供准确的错误消息。为什么要将
count(*)放入 VARCHAR2 中?这是一个数字,所以使用一个!当您说“我很困惑如何在调用此函数时提取多行”时,我也不明白您的意思。 究竟你想达到什么目的? -
你不会从那个查询中得到多行——它只是返回 count(table_name),所以你会得到一个非空整数大于或等于零的行。
标签: oracle function plsql multiple-records