不知道为什么不支持这种,使用以下方式解决:
SET SERVEROUTPUT ON DECLARE v_sql VARCHAR2(1000); v_err_msg VARCHAR2(2000); BEGIN FOR table_rec IN (SELECT table_name FROM all_tables WHERE owner = 'INTERFACE') LOOP BEGIN v_sql := 'GRANT SELECT ON INTERFACE."' || table_rec.table_name || '" TO c##wolf'; EXECUTE IMMEDIATE v_sql; DBMS_OUTPUT.PUT_LINE('已成功授权表: ' || table_rec.table_name); EXCEPTION WHEN OTHERS THEN v_err_msg := SQLERRM; DBMS_OUTPUT.PUT_LINE('授权失败 - 表: ' || table_rec.table_name || ', 错误: ' || v_err_msg); END; END LOOP; END; /
可能的原因还是表名有小写。
------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------
转载请注明本文标题和链接:《GRANT SELECT ON INTERFACE.* TO c##wolf * ERROR at line 1: ORA-00903: invalid table name》
发表评论