查询ALL_TAB_COLUMNS在函数,存储过程中无法查询到数据但是在SQL 语句中可以

Security Model

DBMS_SQL is compiled with AUTHID CURRENT_USER.

Any DBMS_SQL subprograms called from an anonymous PL/SQL block are run using the privileges of the current user.



原因:用户没有权限去调用该表的数据

方法:使该用户获得查询权限, 加上: AUTHID CURRENT_USER 

 

create or replace FUNCTION test(TABLE_NAME IN VARCHAR2, OWNER IN VARCHAR2) RETURN NUMBER 
      AUTHID CURRENT_USER AS
      CNT NUMBER:=0;
     
      BEGIN
        SELECT COUNT(TABLE_NAME) INTO CNT FROM ALL_TAB_COLUMNS WHERE TABLE_NAME =TABLE_NAME  AND OWNER =OWNER;
     
      RETURN (CNT);
      END;

猜你喜欢

转载自blog.csdn.net/xiadingling/article/details/80046655