Oracle11g-新建视图报错,ORA-00942: 表或视图不存在解决方法,但是表存在,且拼写无误解决方法

场景:达梦迁移oracle,生成视图ddl脚本,在执行新建视图时报错ORA-00942: 表或视图不存在解决方法;经检查视图关系的表均存在且大小写无误。

原因:在APP_TEST模式下新建视图基础表为APP_DEMO下属表;这里涉及到跨模式和用户的权限

create or replace force view "APP_TEST"."DEMO_VIEW" ("ID","COLUMN") as select ID,COLUMN FROM APP_DEMO.TABLE;

解决方法:执行GRANT SELECT ON APP_DEMO.TABLE TO APP_TEST;

附加:一次性授权模式下所有表给指定用户的脚本

DECLARE  
  v_user VARCHAR2(100) := '用户名'; -- 将'用户名'替换为实际的用户名  
  CURSOR c_tables IS  
    SELECT table_name  
    FROM all_tables  
    WHERE owner = 'JG_EDW_DATA_DYD'; -- 确保这里的大小写与数据库中的实际模式名匹配  
BEGIN  
  FOR r_table IN c_tables LOOP  
    EXECUTE IMMEDIATE 'GRANT SELECT ON JG_EDW_DATA_DYD.' || r_table.table_name || ' TO ' || v_user;  
    -- 可选:输出已授权的表名,以便跟踪  
    DBMS_OUTPUT.PUT_LINE('Granted SELECT on ' || 'JG_EDW_DATA_DYD.' || r_table.table_name || ' to ' || v_user);  
  END LOOP;  
EXCEPTION  
  WHEN OTHERS THEN  
    -- 处理可能出现的错误,例如权限不足  
    DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);  
END;
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值